Problema com php e .htaccess [RESOLVIDO]

1. Problema com php e .htaccess [RESOLVIDO]

ROGERIO SILVA
rogeriossilva1

(usa Outra)

Enviado em 02/03/2013 - 21:53h

Olá, por favor que puder ajudar eu agradeço. Vou tentar ser o mais objetivo.

Estou tentando passar o GET pela Url mas o mesmo não está funcionando.

Não sei onde devo fazer a modificação mas vou datalhar:

Postando meu .htaccess

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1

Postando a função que uso para trabalhar com a url

function Home(){
$url = $_GET['url'];
$url = explode('/', $url);
$url[0] = ($url[0] == NULL ? 'index' : $url[0]);
if(file_exists('tpl/'.$url[0].'.php')){
require_once('tpl/'.$url[0].'.php');
}
elseif(file_exists('tpl/'.$url[0].'/'.$url[1].'.php')){
require_once('tpl/'.$url[0].'/'.$url[1].'.php');
}
else{
require_once('tpl/404.php');
}
}

O problema que estou tendo:

Acesso normal ex.:

www.meusite.com.br/produto //sem precisar de extensão .php
www.meusite.com.br/carrinho/produto //sem precisar de extensão .php

Onde carrinho é um diretório e produto um arquivo .php

Mas se eu precisar passar um GET na URL por causa do carrinho de compras ele não passa.
Ex.:

Ex.: Listo os produtos em produtos no link comprar passo
<a href="cart.php?acao=add&id=$id['id']>Comprar</a> // $id['para pegar o id do produto']


Na página cart.php ele passa o GET na URL, mas esse GET não pega o ID // então não seleciona o produto

<?php

session_start();

if(!isset($_SESSION['carrinho'])){
$_SESSION['carrinho'] = array(); // a sessão inicia normalmente
}

// verificando o GET

if(isset($_GET['acao']) && ($_GET['acao'] == ['add'])){
$id = intval($_GET['id']);
$_SESSION['carrinho'][$id] = 1;
}else{
$_SESSION['carrinho'][$id] += 1;
}

// em cada if/else trago junto um echo me retornando uma mensagem, baseado nisso sei que o GET passa na URL e a quantidade na $_SESSION['carrinho'] aumenta com cada F5, mas o id do produto não captura.

Alguem pode me ajudar.













  


2. Re: Problema com php e .htaccess [RESOLVIDO]

Joca (Altemir Braz Dantas Junior)
jocajuni

(usa Debian)

Enviado em 03/03/2013 - 07:07h

Faça o seguinte teste

No arquivo cart.php coloque na primeira linha.

<?php
print_r($_GET);
exit;



Coloque manualmente no seu navegador a url com um get exemplo.
Se imprimir o array dos get esta ok, ai vc testa na aplicacao.


Se na aplicacao nao imprimir o get isso pode estar acontecendo por que vc esta num diretorio acima por exemplo /carrinho/produto e o cart.php esta na raiz ai ele nao encontra o arq e o htacces redireciona para o index.php

O que eu aconselharia no link compra passar a url completa.

Por exemplo se ele esta na raiz ao invez de colocar somente cart.php no href eu colocaria /cart.php ou aurl completa.


[]s
Altemir Braz Dantas Junior
Jocajuni


3. Re: Problema com php e .htaccess [RESOLVIDO]

ROGERIO SILVA
rogeriossilva1

(usa Outra)

Enviado em 04/03/2013 - 11:28h

Sua ajuda em passar a url completa e dar um print_r no $_GET foui de muita importância.

Mas para não ficar perdendo tempo com entra e sai de diretório coloquei tudo no mesmo dir.

Aconteceu que modifiquei este link

<a href="cart.php?acao=add&id=$id['id']>Comprar</a> // $id['para pegar o id do produto']

para

<a href="cart.php/acao=add&id=$id['id']>Comprar</a> // $id['para pegar o id do produto']

e imprimiu Array ( [url] => carrinho/acao=add [id] => 1 )

e antes não pegava este id do produto.

mas se eu retirar este print_r($GET) ele continua sem pegar o id

Acho que só preciso tratar o GET de ? para / .

Tem, como me ajudar nisso?


4. Re: Problema com php e .htaccess [RESOLVIDO]

Joca (Altemir Braz Dantas Junior)
jocajuni

(usa Debian)

Enviado em 04/03/2013 - 17:52h

Faz um teste antes altera esse trecho

if(isset($_GET['acao']) && ($_GET['acao'] == ['add'])){
$id = intval($_GET['id']);
$_SESSION['carrinho'][$id] = 1;
}else{
$_SESSION['carrinho'][$id] += 1;
}

PARA

### coloca o var id fora do if senao no else ele nao existira
$id = (int) $_GET['id'];
###['add'] <- nunca usei entao testa colocando assim 'add' apenas
if(isset($_GET['acao']) && ($_GET['acao'] == 'add')){
$_SESSION['carrinho'][$id] = 1;
}else{
$_SESSION['carrinho'][$id] += 1;
}


[]s
Altemir Braz Dantas Junior
Joca


5. Re: Problema com php e .htaccess [RESOLVIDO]

ROGERIO SILVA
rogeriossilva1

(usa Outra)

Enviado em 04/03/2013 - 22:55h

Consegui resolver troquei a ? pela / na url e apenas retirei o $id = intval($_GET['id']) do IF como vc sugeriu;

Agora ele passa os id's.

Obrigado








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts