Visualizzazione dei risultati da 1 a 7 su 7

Discussione: PHP redirect

  1. #1

    PHP redirect

    Salve a tutti, sono nuovo del codice php e del forum. Sto sviluppando un'applicazione sul web con jquery mobile e devo inserire un'area riservata solo agli admin. Ho inserito un form con il campo password con method get, collegato alla pagina admin_access.php che dovrebbe svolgere l'accesso e reindirizzare l'admin alla pagina di amministrazione. Il problema è che una volta che inserisco la password e avviene il submit, il collegamento funziona correttamente, ma è come se la pagina admin_access.php non venisse caricata, cioè quello scritto all'interno di essa non viene visualizzato, mentre se ricarico la pagina funziona tutto correttamente.

    form (html)
    codice:
    <form method="get" action="admin_access.php">
    <label for="pass">Password:</label>
    <input type="password" name="pass" id="pass" placeholder="*******" data-clear-btn="true">
    <input type="submit" value="Entra">
    /form>
    admin_access.php
    codice:
    <?php
    if ($_GET['pass'] == "[password]"){   
        echo "Password corretta, verrai collegato alla pagina di amministrazione...";
        header("refresh: 3; url=http://[...]admin_tools.php");
        exit;
    }    
    else  {
        echo "Password errata, verrai ricollegato alla pagina Home";
        header("refresh: 3; url=http://[...]index.php");
        exit;
    }   
    exit;
    ?>


    Le scritte "Password corretta, verrai..." ecc, non vengono visualizzate subito, ma solo una volta ricaricata la pagina, e anche la funzione header funziona solo una volta ricaricata la pagina. Qualcuno sa schiarirmi le idee per piacere? Grazie a tutti

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Benvenuto.
    Intanto inviare una password tramite metodo POST senza usare una una connessione criptata è già un po' azzardato, ma in alcuni casi accettabile, farlo però tramite GET è pura follia.

    La funzione header(), se usata dopo la stampa di qualsiasi cosa (tu hai gli echo), non funziona.
    Se vuoi mostrare i messaggi, questi dovranno essere mostrati sulla pagina alla quale header() rimanda.

  3. #3
    Grazie per la risposta immediata. So che è un azzardo ma preferisco partire dalle cose semplici. Ho cambiato il codice in questo modo:

    form(html)
    codice:
    <form method="post" action="admin_access.php">
    <label for="pass">Password:</label>
    <input type="password" name="pass" id="pass" placeholder="*******" data-clear-btn="true">
    <input type="submit" value="Entra">
    </form>
    admin_access.php
    codice:
    <?php
    if ($_POST['pass'] == "[password]"){   
    header("refresh: 2; url=http://[...]/admin_tools.php");
    exit;
    }    
    else  {
    header("refresh: 2; url=http://[...]/index.php");
    exit;
    }   
    ?>
    Ma ancora non funziona! Solo se ricarico la pagina e ovviamente aspetto due secondi, vengo indirizzato alla pagina admin_tools.php. Non riesco a capire il motivo!

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Invece di
    header("refresh: 2....");

    prova ad usare
    header("Location: http://....");

  5. #5
    Più che altro non capisco cosa intendi per "...Solo se ricarico la pagina..."
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Cambiando refresh in Location funziona, grazie mille!, ma è normale che nella barra dell'url, esso non cambi?

  7. #7
    Sono riuscito a risolvere il problema, grazie a tutti comunque. Nel tag <form> dovevo inserire
    codice:
    data-ajax=false
    in modo che ajax non interferisse, considerato che sto programmando con jquery mobile.

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.