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

    problemi con il redirect

    Ho una pagina che fa una login, controllo a db user e pwd e se sono giuste l'utente viene rediretto alla pagina corretta...o così dovrebbe essere! Non funziona la redirect, ma non capisco come mai, visto che in altre pagine funziona!

    Posto il codice :

    <?php include "script/conn_open.php";?>
    <?php include "script/globals.php";?>
    <?
    // Prendo il tipo utente
    $id_utente = $_POST["rbTipoUtente"];
    if(strcmp($id_utente,"1") == 0)
    {
    $tabella = "UTENTI";
    $id_campo = "id_utente";
    $redirect = "utenti/index.php";
    }
    if(strcmp($id_utente,"2") == 0)
    {
    $tabella = "OPERATORI";
    $id_campo = "id_operatore";
    $redirect = "operatori/index.php";
    }

    // Prendo username e password
    $username = $_POST["txUsername"];
    $pwd = $_POST["txPwd"];

    /*
    Cerco l'utente nella tabella corrispondente al tipo utente
    */
    $QUERY_LOGIN = "SELECT ".$id_campo.",username,pwd FROM ".$tabella;
    $QUERY_LOGIN = $QUERY_LOGIN." WHERE username = '$username' AND pwd = '$pwd' ";
    $rs_login = mysql_query($QUERY_LOGIN) or die("QUERY_LOGIN non riuscita: " . mysql_error());
    $NUM_LOGIN = mysql_num_rows($rs_login);

    // Controllo se ci sono risultati
    if($NUM_LOGIN == 0)
    {
    // Nessun utente riconosciuto
    print("Nessun utente
    ");
    header("Location: login.php?err=1");
    print("Redirezione
    ");
    }
    else
    {
    print("starto la sessioine
    ");
    // Utente riconosiuto, faccio partire la sessione
    session_start();
    $_SESSION["id_tipo_utente"] = $id_utente;
    $_SESSION["id_login"] = mysql_result($rs_login,0,$id_campo);
    $_SESSION["username"] = mysql_result($rs_login,0,"username");
    print("Variabili settate
    : ".$_SESSION["id_tipo_utente"]);

    // Scrivo i Cookie
    //setcookie ("username", mysql_result($rs_login,0,"username") ,time()+2592000); // Dura 1 mese
    //ssetcookie ("id_tipo_utente", $id_utente ,time()+2592000); // Dura 1 mese

    // Ridirigo l'utente alla sua pagina rivata
    header("Location: operatori/index.php");
    print("redirezione effettuata
    ");

    }
    ?>

    Faccio persente che tutti i print(..) mostra a video i loro contenuti, quindi query e if funzionano correttamente!

    Non so + cosa guardare!!

    Grazie in anticipo
    Samuel

  2. #2
    fai una pagina solo con

    <?php
    header("Location: operatori/index.php");
    ?>

    e vedi se viene effettuato il redirect

    i comandi header devono essere messi prima di qualsiasi output a video, non sono sicuro per il redirect.

    fai la prova che ti ho suggerito e fammi sapere

  3. #3
    Ti posto la parte php della pagina di Login (quella che, compilato il form, chiama quella del mio primo post):
    <?
    session_start();
    // Controllo se l'utente si era già loggato (se esiste una sessione)
    if(isset($_SESSION['id_login']))
    {
    // Redirigo l'utente in funzione del tipo utente
    if(strcmp($_SESSION["id_tipo_utente"],"1") == 0)
    header("location: utenti/index.php");
    if(strcmp($_SESSION["id_tipo_utente"],"2") == 0)
    header("location: operatori/index.php");
    }

    // Se non c'è la sessione controllo se c'è un cookie
    $username = $HTTP_COOKIE_VARS["username"];
    $id_tipo_utente = $HTTP_COOKIE_VARS["id_tipo_utente"];

    // 1: username inesistente, o password errata
    $err = $_GET["err"]
    ?>

    Praticamente controllo se esiste una sessione, e se c'è, redirigo l'utente alla pagina corretta.
    Questa funziona.
    I precedenti outpu a video li ho messi giusto per fare una sorta di debug della pagina.


    Sam

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Non ho capito se hai risolto o no, ma se butti fuori output scordati di fare il redirect...

  5. #5
    No, non ho risolto, il problema del codice del primo post rimane.
    Il secondo post era solo per dire che in altre pagine funziona, ma in quella non so cosa ci sia che non vada!
    L'output l'ho aggiunto giusto per fare il debug della pagina, comunque proverò a togliere i vari print...

  6. #6
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    E' esattamente l'output quello che non va!
    Non puoi mandare un header dopo l'output.

  7. #7
    Gil outpu gli ho aggiunti solo dopo che ho visto che la pagina non andava. Invece di redirigermi nella pagina corretta rimaneva in quella con la schermata completamente bianca, allora ho messo alcuni print giusto per vedere se si fermava da qualche parte o calcolava in modo errato qualche variabile.
    Fai come se non ci fossero.

  8. #8
    Innanzitutto dopo il comando header(...);
    devi mettere exit;

    per evitare che il controllo ritorni alla pagina in cui hai redirezionato.

    Poi, anche una riga vuota prima del tag
    <?
    con cui inizi la pagina php viene interpretata come output verso il browser.

    Quindi controlla questo anche in

    script/conn_open.php
    e in
    script/globals.php

    Poi, se la pagina è completamente in php (così come dovrebbe essere), cioé senza html, che senso ha:

    <?php include "script/conn_open.php";?>
    <?php include "script/globals.php";?>

    apri semplicemente la pagina con

    <?php

    e chiudila con ?>

  9. #9
    non è per essere polemico, ma perchè chiedi aiuto e poi non segui quello che ti viene suggerito?

    ti ho detto di fare una prova nella prima replica in modo da essere certo che non sbagli percorsi o cose simili, quindi se vunzionava quel rigo di codice, potevi aggiungere un pò alla volta e vedere dov'era il problema.

    ti ho già detto io e anche altri che non devono esserci output prima di header, se ci credi bene, altrimenti
    io posso fare "come se non ci fossero", ma se sono quelli che creano il problema?

  10. #10
    Non mi sembra di essere stato mai polemico, comunque chiedo scusa se ho dato quest'impressione.
    Ho solo cercato di dare il maggior numero di informazioni riguardo al problema.
    E certo che ci credo sugli output!!

    Farò alcune prove, vi tengo aggiornati.

    Grazie per il tempo che mi avete dedicato fino ad ora

    Sam

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 © 2024 vBulletin Solutions, Inc. All rights reserved.