Ir para conteúdo

POWERED BY:

Arquivado

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

Jhonei

[Resolvido] Bug, htaccess e query string.

Recommended Posts

Galera eu tenho um problema mais não sei em que parte destes códigos!!

 

O menu Horizontal está funcionando perfeitamente, mas o vertical não!!

Ele fica acrescentando um "home" a mais a cada link clicado nele!!

 

Abaixo estão todos os scripts necessários...

 

 

Query string:

<?php
$pagina = isset($_GET['pagina']) ? strip_tags(trim($_GET['pagina'])) : '';
$conteudo = isset($_GET['conteudo']) ? strip_tags(trim($_GET['conteudo'])) : '';

if ($pagina == "$pagina" && !$conteudo) {
$Pg = 'arquivos/'.$pagina.'.php';
}

elseif ($pagina == "$pagina" && $conteudo == "$conteudo") {
$SubPg = 'conteudo/'.$conteudo.'.php';
}
?>

 

Htaccess:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z,0-9,A-Z]+)\/([a-z,0-9,A-Z]+)\/?$ ?pagina=$1&conteudo=$2
RewriteRule ^([a-z,0-9,A-Z]+)\/?$ ?pagina=$1

 

Menu Horizontal:

   <td><a href="home">Home</a></td>
   <td><a href="perfil">Perfil</a></td>
   <td><a href="fotos">Fotos</a></td>
   <td><a href="videos">Videos</a></td>
   <td><a href="faleconosco">Fale Conosco</a></td>

 

Menu Vertical:

<tr>
   <td id="menu_vertical"><a href="home/esporte">Esporte</a></td>
 </tr>
 <tr>
   <td id="menu_vertical"><a href="home/cultura">Cultura</a></td>
 </tr>
 <tr>
   <td id="menu_vertical"><a href="home/natureza">Natureza</a></td>
 </tr>
 <tr>
   <td id="menu_vertical"><a href="home/religiao">Religião</a></td>
 </tr>
 <tr>
   <td id="menu_vertical"><a href="home/politica">Política</a></td>
 </tr>

 

Exemplo deste script funcionado online aqui: http://exemplos.orgfree.com/

Caso queiram ver como é o defeito cliquem em mais de um link do menu vertical!!

 

Grato desde já pela ajuda dos senhores!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mude os menus para ficarem dessa forma

<td id="menu_vertical"><a href="/home/esporte">Esporte</a></td>

 

Ou defina uma tag base no HTML da página.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, que verificação é essa ? o.o

elseif ( ... $conteudo == "$conteudo") {

 

Porque não faz algo assim:

RewriteRule ^page/([a-zA-Z0-9-]+)$ index.php?page=$1

 

Daí no seu index.php, faz um include ...

<?php 
      $page = isset ( $_REQUEST [ 'page' ] ) ? $_REQUEST [ 'page' ] : 'home' ;
      if ( $page !== 'home' && strlen ( $page ) > 0 ) {
             $file = sprintf ( '%s.php' , $page ) ;
             if ( file_exists ( $file ) ) {
                    require_once $file ;
             } else { }
      } else { }
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

"Henrique Barcelos" Desta forma foi que não funcionou mesmo, porque ele não estava incluindo o "/home/esporte" e sim trocando toda a url por "/home/esporte".

Mude os menus para ficarem dessa forma

<td id="menu_vertical"><a href="/home/esporte">Esporte</a></td>

 

O defeito não está na url em si (exe: www.exesplos.orgfree.com). Mas sim, na complementação dela com as novas páginas requisitadas!! (exe: www.exesplos.orgfree.com/home/esporte)

Ou defina uma tag base no HTML da página.

 

 

E "Andrey Knupp"

 

Cara, que verificação é essa ? o.o

elseif ( ... $conteudo == "$conteudo") {

Esta não é a verificação!! Esta linha de script manda a página solicitada para a verificação que fica no include onde a página vai ser carregada..

Note que o query string possui duas avaliações, a primeira "if", avalia a seção, ou seja, a página que jogará para o include $Pg, e a segunda avaliação "elseif", avalia a SubSeção, ou seja, a página que será redirecionada para o include $SubPg.

 

page index.php:

<td id="loader_menu_horizontal">
<?php
if( (isset($Pg)) and (file_exists($Pg)) ) {
include($Pg);
} else {
include ("arquivos/home.php");
}
?>
</td>

page home.php:

<td id="loader_menu_vertical">
<?php
if( (isset($SubPg)) and (file_exists($SubPg)) ) {
include($SubPg);
} else {
include ("conteudo/inicio.php");
}
?>
</td>

 

 

Eu prefiro não fazer desse geito porque ao por "^page/([a-zA-Z0-9-]+)$ index.php?page=$1", na url ficara aparecendo o nome do diretório e desta forma facilitara invasões por hacker..

Porque não faz algo assim:

RewriteRule ^page/([a-zA-Z0-9-]+)$ index.php?page=$1

 

Eu já tenho o include, como disse no comentário a sima!!

Daí no seu index.php, faz um include ...

<?php 
      $page = isset ( $_REQUEST [ 'page' ] ) ? $_REQUEST [ 'page' ] : 'home' ;
      if ( $page !== 'home' && strlen ( $page ) > 0 ) {
             $file = sprintf ( '%s.php' , $page ) ;
             if ( file_exists ( $file ) ) {
                    require_once $file ;
             } else { }
      } else { }
?>

 

Para mais transparência na compreensão dos senhores, aqui estão as páginas que carregarão o conteúdo::

 

index:

<?php include "query_string.php" ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Query string</title>
</head>

<body>
<table width="100%" height="1050px" border="1" cellspacing="0" cellpadding="0">
 <tr>
   <th height="200px" colspan="5"><h1>Titulo</h1></th>
 </tr>
 <tr id="menu_horizontal" align="center" height="30px">
   <td><a href="home">Home</a></td>
   <td><a href="perfil">Perfil</a></td>
   <td><a href="fotos">Fotos</a></td>
   <td><a href="videos">Videos</a></td>
   <td><a href="faleconosco">Fale Conosco</a></td>
 </tr>
 <tr>
   <td id="loader_menu_horizontal" height="800px" align="center" colspan="5">
<?php
if( (isset($Pg)) and (file_exists($Pg)) ) {
include($Pg);
} else {
include ("arquivos/home.php");
}
?>
</td>
 </tr>
 <tr>
   <td height="20px" colspan="5" align="center">Roda pé</td>
 </tr>
</table>
</body>
</html>

 

home:

<table width="100%" height="100%" border="1" cellspacing="0" cellpadding="0">
 <tr>
   <td width="18%" id="menu_vertical" align="center" style="height:30px; padding-left:10px; text-align:left;"><a href="/home/educacao">Educação</a></td>
   <td id="loader_menu_vertical" rowspan="7" align="center">
<?php
if( (isset($SubPg)) and (file_exists($SubPg)) ) {
include($SubPg);
} else {
include ("conteudo/inicio.php");
}
?>
</td>
 </tr>
 <tr>
   <td id="menu_vertical" align="center" style="height:30px; padding-left:10px; text-align:left;"><a href="home/esporte">Esporte</a></td>
 </tr>
 <tr>
   <td id="menu_vertical" align="center" style="height:30px; padding-left:10px; text-align:left;"><a href="home/cultura">Cultura</a></td>
 </tr>
 <tr>
   <td id="menu_vertical" align="center" style="height:30px; padding-left:10px; text-align:left;"><a href="home/natureza">Natureza</a></td>
 </tr>
 <tr>
   <td id="menu_vertical" align="center" style="height:30px; padding-left:10px; text-align:left;"><a href="home/religiao">Religião</a></td>
 </tr>
 <tr>
   <td id="menu_vertical" align="center" style="height:30px; padding-left:10px; text-align:left;"><a href="home/politica">Política</a></td>
 </tr>
 <tr>
   <td></td>
 </tr>
</table>

 

link do exemplo rodando online: http://exemplos.orgfree.com/

 

E ai galera alguém teria algum comentário sobre esta situação??

 

Realmente estou precisando da ajuda de vocês!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Henrique Barcelos desculpe por:

 

Agradeço pela ajuda "Henrique Barcelos", mas o erro ainda não é este!!

 

"Henrique Barcelos" Desta forma foi que não funcionou mesmo, porque ele não estava incluindo o "/home/esporte" e sim trocando toda a url por "/home/esporte".

Mude os menus para ficarem dessa forma

<td id="menu_vertical"><a href="/home/esporte">Esporte</a></td>

 

Mas era porque eu estava testando o script no meu servidor WampServer configurado para rodar htaccess, mas por algum motivo não rodou quando pus /home/blablabla, ou seja, ele não estava incluindo o "/home/esporte" e sim trocando toda a url por "/home/esporte".

Mas no servidor online que é o importante rodou normalmente!!!

 

Estou muito grato pela sua ajuda!! E desculpa pela ignorância, mas sou novo na área e não tenho experiencia!!

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.