Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Problema com url em php

Bom dia pessoal, estou com um problema com minha url, quando vou para a paginá projeto-detalhado.php ela mostra na url o id do projeto que está sendo detalhado, assim:

http://localhost/opentag/projeto-detalhado.php?id=27 quando vou para a pagina altera-projeto.php se tudo der certo, vou para o projeto-detalhado.php passando a id do projeto que alterei:

header("Location: projeto-detalhado.php?id='$projeto->getId()'");

o Problema é que as urls se misturam e vira uma bagunça e a pagina projeto-detalhado não consegue buscar o projeto.

http://localhost/opentag/projeto-detalhado.php?id=%27()%27

OBS: estou pegando o id do projeto via get para fazer a busca e listar os detalhes dele.

$projeto = $projetoDAO->buscaProjetoPorId($_GET['id']);

Existe alguma função para que eu limpe a url, e ela só tenha oque eu mandei no header() ?

5 respostas

Calma ai Vinicius, deixa eu ver se eu entendi.

Você vai para a pagina projeto-detalhado.php passando o ID do que está sendo detalhado, depois lá você clica para ir pra pagina altera-projeto.php e faz uma verificação, se tudo der certo você volta para a pagina projeto-detalhado.php? É isso?

Não Daniel, estou na pagina projetos e tenho duas escolhas, projeto-detalhado, ou alterar o projeto q eu selecionar

Certo, acho que a melhor forma de fazer isso é sem header. Eu faria da seguinte forma: com a lista dos projetos que eu tenho, criaria dois botões/links, um para ir para projeto-detalhado.php mais ou menos assim:

<a href="projeto-detalhado.php?id=<?= $projeto->getId() ?>"> Detalhes </a>

e o outro para alterar:

<a href="altera-projeto?id=<?= $projeto->getId() ?>"> Alterar </a>

Então nessas duas paginas eu teria que fazer

$projeto = $projetoDAO->buscaProjetoPorId($_GET['id']);

Eu tenho uma sugestão.

Ao invés de passar o parâmetro pelo header, você pode passar o parâmetro por sessão.

Ficaria algo assim:

$_SESSION["id_projeto"] = $projeto->getId();
header("Location: projeto-detalhado.php");
exit();

E na página de destino:

$id = 0;
if (isset($_SESSION["id_projeto"])){
    $id = $_SESSION["id_projeto"];
}
$projeto = $projetoDAO->buscaProjetoPorId($id);
solução!

Não posso limpar a url, se eu der um header e pegar por sessão, essa sessão seria criada só se eu altera-se o projeto, mas sem altera-lá eu tenho q conseguir o id na url pra poder buscar as informações, olhe:

projetos->ver: url= opentag/projeto-detalhado.php?id=16; projetos->formulario-altera-projeto->alterar-projeto : url = opentag/projeto-detalhado.php

não posso listar as informações do projeto uma vez por id da url, e outra por session.

Mas fiquem tranquilo, já resolvi o problema, eu estava fazendo um header() setando a id de uma forma errado, ai estava sujando minha url