Galera, me da um help ai…
Estou trabalhando em um CRUD simplesinho… Mas me deparei com a seguinte situação:
Na Pagina em que listo os clientes, ao lado de cada cliente tenho um botão “DELETE” que, quando clicado, manda pra URL “/clientes/delete”… com o ID do sujeito. So que na funcao do meu controller onde faço isso, nao consigo recuperar de forma alguma o ID que passei pra URL…
Alguem me salva ai
Nossa, acho que é muito inseguro passar algo para deletar por url, melhor você passar por POST e recuperar com:
if(isset($_POST["nomedocampoquepodeserhidden"]))
{
$variavel = $_POST["nomedocampoquepodeserhidden"];
}
1 curtida
Eu diria que o mais correto ainda seria a URL não conter ações ou verbos:
DELETE https://meusistema.com/clientes/ID_DO_CLIENTE
Esse DELETE seria o método HTTP.
1 curtida
em primeiro lugar precisa estar com o seu servidor devidamente configurado.
no apache o mod_rewrite habilitado e o .htaccess configurado adequadamente.
em seguida você pode pegar o terceiro segmento do REQUEST_URI através da seguinte função:
function segment($segmentId=null){
$str=$_SERVER["REQUEST_URI"];
$str=@explode('?',$str)[0];
$arr=explode('/',$str);
$arr=array_filter($arr);
$arr=array_values($arr);
if(count($arr)<1){
$segment[1]='/';
}else{
$i=1;
foreach ($arr as $key => $value) {
$segment[$i++]=$value;
}
}
if(is_null($segmentId)){
return $segment;
}else{
if(isset($segment[$segmentId])){
return $segment[$segmentId];
}else{
return false;
}
}
}
o id no caso está no segment 3:
$id=segment(3);
ClaitonBarreto:
Galera, me da um help ai…
Estou trabalhando em um CRUD simplesinho… Mas me deparei com a seguinte situação:
Na Pagina em que listo os clientes, ao lado de cada cliente tenho um botão “DELETE” que, quando clicado, manda pra URL “/clientes/delete”… com o ID do sujeito. So que na funcao do meu controller onde faço isso, nao consigo recuperar de forma alguma o ID que passei pra URL…
Alguem me salva ai
Basicamente:
<?php
$datas = parse_url($_SERVER['REQUEST_URI']);
$path = explode('/', $datas['path']);
$id = end($path);
esse código vai pegar a última parte do array
path
e trazer pra você, claro que esse código pode ser uma função e pode conter mais elementos de teste, exemplo
<?php
function get_last_id()
{
$datas = parse_url($_SERVER['REQUEST_URI']);
$path = explode('/', $datas['path']);
$id = end($path);
if (is_numeric($id))
{
return $id;
}
return null;
}
e para utilizar a função:
if ($id = get_last_id())
{
echo $id; //o número
}
Site para estudos PHP.net - parse_url
1 curtida
muito boa a tua solução, bem ad hoc
o único problema que encontrei nela é que se colocar um / após o id ela retorna null, nada que um array_filter no $path não resolva.