Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

vonzuben

Só chama 404

Recommended Posts

<?php
require("config/conexao.php");

$pg = isset($_GET['pagina']) ? $_GET['pagina'] : 'home';
 
$explode = explode('/', $pg);
 
$sql    = "SELECT * FROM usuarios WHERE usuario = '".mysql_real_escape_string($explode[0])."' AND ativado = 1";
$query  = mysql_query($sql);
 

if(mysql_num_rows($query) > 0){

    $row              = mysql_fetch_assoc($query);
    $usuario          = $row['usuario'];
    $skype            = $row['skype'];
    $nome             = $row['nome'];
 
    $page = 'usuario';
     
    if(isset($explode[1]) && empty($explode[1])){
        $page = $explode[1];
		
    }
}else{

    $page = $explode[0];

}
 
if(file_exists("$page.php")){

    include("$page.php");
}else{

    include("404.php");
}
 
 
?>

htaccess

 

 

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php?pagina=$1

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

if(isset($explode[1]) && empty($explode[1])){ $page = $explode[1]; }

Se existir e se estiver vazio você atribui uma variável a ela.

acho que essa condição esta errada.

seria se existir e NÃO estiver vazia

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando digito o nome do usuario www.site.com.br/maria está indo para o 404, ( só vai no 404 ) agora digitando outros links funciona normal tipo www.site.com.br/empresa

fiz um teste e digitei www.site.com.br/empresa/12 e imprimiu os valores do parametro certinho empresa/12

echo

$_GET['pagina'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por qual razão vc usa o "explode" na sua consulta?

É para eliminar a última barra?

 

O usuário "maria" existe mesmo no banco de dados com o ativado valor 1?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo.

 

Cara, montei uma tabela no banco de dados, criei os arquivos home, usuario, 404 e a conexão.

Adicionei a maria na tabela e rodei exatamente seu código.

 

Sem erros, ok? Tá tudo certo.

 

Achou quando tentei acessar maria e não achou quando tentei acessar caio.

 

Então vc certamente esta tendo um problema no seu rewrite de URLs.

 

Então resolvi adicionar o .htaccess que vc mandou e testar exatamente o que vc está fazendo.

 

Encontrei o problema quando vc tenta acessar o endereço "maria" com a barra no final.

 

Vc faz uma validação para saber se existe algo além da barra e ainda valida se o valor está branco. O problema é que tinha que validar se o valor NÃO está branco.

 

Tente assim agora:

 

<?php
require("config/conexao.php");

$pg = isset($_GET['pagina']) ? $_GET['pagina'] : 'home';
 
$explode = explode('/', $pg);
 
$sql    = "SELECT * FROM usuarios WHERE usuario = '".mysql_real_escape_string($explode[0])."' AND ativado = 1";
$query  = mysql_query($sql);
 

if(mysql_num_rows($query) > 0){

    $row              = mysql_fetch_assoc($query);
    $usuario          = $row['usuario'];
    $skype            = $row['skype'];
    $nome             = $row['nome'];
 
    $page = 'usuario';
     
    if(isset($explode[1]) && !empty($explode[1])){
        $page = $explode[1];
		
    }
}else{

    $page = $explode[0];

}
 
if(file_exists("$page.php")){

    include("$page.php");
}else{

    include("404.php");
}
 
 
?>

 

 

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é o mesmo amigo.

 

Teste, observe a linha:

 

if(isset($explode[1]) && !empty($explode[1])){

 

 

Att,

Compartilhar este post


Link para o post
Compartilhar em outros sites

ah ta verdade ! tanto codigo lendo que fica ate louco



está indo para o 404 ainda



Não é o mesmo amigo.

 

Teste, observe a linha:

 

if(isset($explode[1]) && !empty($explode[1])){

 

 

Att,

o seu não está indo para o 404 ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui não.

 

Vamos testar então seus dados.

 

Abaixo da linha do explode, adiciona um print_r igual eu fiz aqui:

 

$explode = explode('/', $pg);
echo '<pre>'; print_r($explode); exit;

 

 

Depois cola pra mim o resultado da tela.

Compartilhar este post


Link para o post
Compartilhar em outros sites


Array

(

[0] => maria

)

 

$sql retornando

SELECT * FROM usuarios WHERE usuario = 'maria' AND ativado = 1

 

$query está retornando isso Resource id #6

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, tudo certo até aí, tira então os testes.

 

Coloca na linha depois do mysql_query isso:

 

$query  = mysql_query($sql);

$var = mysql_fetch_array($query);
echo '<pre>'; print_r($var); exit;

 

Passa o resultado aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, pode tirar o teste então. Muda aqui:

 

$query  = mysql_query($sql) or die (mysql_error());

 

Desculpe, já devia ter falado isso desde o início. Nos diz se apresenta erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem algo errado e é entre o PHP e banco de dados, pois a consulta não consegue ser feita.

 

Vc tem "or die" na sua conexão e selecionando o banco de dados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas quando coloco assim ele abaixa os dados

então não tem problema com conexão

require("config/conexao.php");

$usuario = $_GET['pagina'];
$sql = mysql_query(“SELECT * FROM usuarios WHERE usuario=’{$usuario}’ AND ativado=’1′”);
$row = mysql_fetch_array($sql);

$status = $row['status'];
$skype = $row['skype'];

echo $skype;
echo $status;

estranho

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando colocado assim não retorna

if(mysql_num_rows($query) > 0){

    $row               = mysql_fetch_assoc($query);
    $usuario          = $row['usuario'];
    $skype            = $row['skype'];
    $nome             = $row['nome'];
	
	echo $skype;
        echo $status;

agora fico pensando
pq o seu esta dando certo e o meu não?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.