- Home
- Categorie
- Coding e Sistemistica
- PHP
- Sintassi eregi()
-
Sintassi eregi()
Ciao, ragazzi.
Ho un piccolo problema con la sintassi della funzione eregi().
Vi illustro brevemente quello che devo fare.
In fase di mod_rewrite, devo reindirizzare, sulla pagina PHP, tutte le chiamate alla vecchia pagina, a quella nuova. Perchè? per non avere pagine duplicate, naturalmente.
Per farvi capire, Ho una pagina dinamica e parametrica in PHP, che ha una sintassi:.../ele_prod.php?cid=35 (il 35 naturalmente è la variabile $cid)
In più, però, voglio aggiungere nella nuova URL, una nuova variabile ($tagurl), correlata alla var $cid, in modo che l'URL riscritta diventi:
$urlstring = "computer/".$tagurl."-".$cid.".html";
Quindi, per esempio, .../computer/masterizzatori-dvd-35.html
Il redirect e la regola sull'htaccess funzionano (le ho testate). L'unico problema è che si crea un loop infinito fra htaccess e redirect.
Soluzione: inserire un (eregi()) o simili, per fare in modo che se viene richiamata la vecchia pagina: ele_prod.php?cid=35,
la chiamata venga reindirizzata direttamente verso la nuova URL, senza creare il loop tra redirect e Htaccess.Hio così realizzato il codice:
<?php
include("admin/db_config/config.php");
session_start();
$sid = session_id();
$query = "SELECT id_categoria,titolo,tag FROM categorie WHERE id = '$cid'";
$result=mysql_query($query, $db);
while ($row = mysql_fetch_array($result)) {
$cat = $row[titolo];
$tag = $row[tag];
$tagurl = (str_replace(" ","-",$tag));
}
$cid=$_GET['cid'];
$urlstring = ("computer/".$cid."-".$tagurl.".html");
if ( eregi('^(.)/ele_prod.php?cid=(.)', $_SERVER['REQUEST_URI'])) {
header('HTTP/1.1 301 Moved Permanently');
header('Location:' .$urlstring);
}
?>Questo codice, però non funziona. Ho fatto vari tentativi, esami e test ed ho scoperto che molto probabilmente è errata la sintassi della funzione eregi(). Infatti, se per esempio al posto di ^(.)/ele_prod.php?cid=(.) metto semplicemente ele_prod.php (senza parametro), e lo digito sul browser, il tutto funziona perfettamente!
Ho anche provato a sostituire tutta la riga IF con:
if (isset($cid)) {ma in questo modo, si crea comunque il loop infinito.
Sapete indicarmi come va modificata l'istruzione
if ( eregi('^(.)/ele_prod.php?cid=(.)', $_SERVER['REQUEST_URI'])) {
affinchè "acquisisca" correttamente il parametro ed effettui il redirect?