• User Attivo

    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?