Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    problema con $_SERVER['REQUEST_URI

    Ciao a tutti.

    Ho un problema con le istruzioni seguenti:

    <?php
    $cid=$_GET['cid'];
    $urlstring = "computer/".$cid.".html";
    if ( eregi('^(.*)/ele_prod.php?cid=(.*)$', $_SERVER['REQUEST_URI'])) {
    header('HTTP/1.1 301 Moved Permanently');
    header('Location:' .$urlstring);

    Come potete vedere, quando viene immesso l'url ele_prod... ecc, viene avviato il redirect.
    Questo sembra a posto, ma non funziona. Non capisco...
    Ho fatto delle prove, ed ho notato che eliminando il parametro:

    if ( eregi('^(.*)/ele_prod.php$', $_SERVER['REQUEST_URI'])) {

    e digitando sul browser ....../ele_prod.php, il redirect viene eseguito.

    Mi sapete spiegare perchè non viene effettuato se si inserisce la parte relativa la parametro?

    Grazie!
    Questo è il mio sogno...

    http://www.ai-machines.com

    .... non svegliatemi !!!!

  2. #2
    Fai molta attenzione a non inviare nessuna porzione di stringa al browser, prima dell'immissione dell'header

    spesso l'header-location fallisce per questo motivo

    Bisogna ricordare che la funzioneheader() va chiamata prima di qualsiasi output HTML o PHP (anche righe o spazi vuoti). E' un errore comune leggere files con funzioni include(), o require() (o altre funzioni capaci di accedere a files), che possano emettere in output spazi o linee vuote prima di una chiamata della funzione header(). Lo stesso problema esiste nell'utilizzare file PHP/HTML

  3. #3
    Ciao, e grazie.

    Probabilmente, è proprio questo che dici, il problema.

    Guarda. Ho dovuto inserire tutto questo, per poter "modificare" l'url, ed inviare le variabili all'htaccess:

    <?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/".$tagurl."-".$cid.".html";
    if ( eregi('^(.*)/ele_prod.php?cid=$cid$', $_SERVER['REQUEST_URI'])) {
    //if (isset($cid)) {
    header('HTTP/1.1 301 Moved Permanently');
    header('Location:' .$urlstring);
    }
    ?>


    Effettivamente, compare una chiamata "include".

    Secondo te, come potrei ovviare al problema?

    Grazie ancora.
    Questo è il mio sogno...

    http://www.ai-machines.com

    .... non svegliatemi !!!!

  4. #4
    1) spero di aver capito bene, e cioè che: il problema è soltanto nel mancato redirect
    2) l'include è un problema soltanto se dovesse avere anche un solo spazio

    fai questo semplice test:

    prima del tag "?>" di chiusura del file admin/db_config/config.php
    inserisci un redirect: header("Location: andò_te_pare.php");
    richiama dal browser il file admin/db_config/config.php

    e se il redirect fallisce, il problema è proprio nell'include...

    soluzione vai alla ricerca di ogni possibile OUTPUT accidentale nel file admin/db_config/config.php

  5. #5
    Ciao.

    1) spero di aver capito bene, e cioè che: il problema è soltanto nel mancato redirect
    Si, esatto. precisamente, devo fare in modo che il redirect avvenga solo nel caso in cui venga richiamata la vecchia pagina in PHP, anzichè quella riscritta in HTML con l'htaccess. Questo per evitare loops infiniti.

    2) l'include è un problema soltanto se dovesse avere anche un solo spazio

    fai questo semplice test:

    prima del tag "?>" di chiusura del file admin/db_config/config.php
    inserisci un redirect: header("Location: andò_te_pare.php");
    richiama dal browser il file admin/db_config/config.php

    e se il redirect fallisce, il problema è proprio nell'include...
    Il redirect ha funzionato.

    Tieni conto, comunque, che secondo me il problema sta nella sintassi dell'IF di verifica URL.
    Se cambio la riga IF in:

    if (isset($cid)) {

    Il redirect viene correttamente effettuato, verso la nuova URL. Questo però se non inserisco nell'htaccess la regola di riscrittura (che è corretta, perchè l'ho testata da sola!), altrimenti, avviene un loop.
    Questo è il mio sogno...

    http://www.ai-machines.com

    .... non svegliatemi !!!!

  6. #6
    se sei sicuro di aver impostato correttamente eregi() [di cui non sono esperto nella sintassi]
    ti posso dire di provare a mettere la chiocciola: @eregi() [ma è un'idea "giusto per..."]

  7. #7
    Purtroppo, il problema è proprio che non sono sicuro della sintassi. Credo sia giusta, ma non sono certo.

    Ho provato con @, ma non va uguale

    Grazie, comunque
    Questo è il mio sogno...

    http://www.ai-machines.com

    .... non svegliatemi !!!!

  8. #8
    e se provassi uno strcount() del nome del file nella stringa di navigazione?

    if (substr_count("ele_prod.php",$_SERVER['REQUEST_URI'])) reindirizza

    cerco di chiarirmi le idee:
    1) Tizio si collega alla pagina ciao.php
    2) ciao.php esegue uno script e lo reindirizza [dove?]
    3) la pagina su cui viene reindirizzato non deve avere [cosa?]

  9. #9
    Sì, sarebbe un'idea...

    Semprechè si riesca ad impostare il solito parametro. Non dimentichiamoci che con l'eregi, il problema era solo il parametro!

    Se modifico l'espressione IF in "ele_prod.php" (senza parametro, quindi), e digito sul browser ....../ele_prod.php, il redirect me lo fa! In questa tua possibile soluzione, si dovrebbe comunque impostare il parametro, come x eregi, no?
    Questo è il mio sogno...

    http://www.ai-machines.com

    .... non svegliatemi !!!!

  10. #10
    allor... mi hai incuriosito... ecco perchè vorrei capire...

    fammi un esempio tipo

    se l'indirizzo barra: [http://....]
    contiene: [ciò che non deve contenere]
    allora: reindirizza

    ...i problemi vanno spiegati bene... se tu mi parli di: ... $cid ... ^(*) ...
    e io non so a cosa devono/dovrebbero corrispondere: che ci capisco?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.