• User Newbie

    Login che reindirizza utenti a pagine web diverse

    Buonasera, ringrazio tutti per il supporto che date.

    Devo creare un login che reindirizza utenti a pagine web diverse.

    Inizio con il dire che ho creato una tabella Utenti all'interno:
    id
    username
    password

    la login funziona correttamente.

    Questo è il mio codice già impostato con il login e il redirect a una sola pagina:

    <?php

    include('conn.php');
    
    
    $myusername = $_POST['user'];
    $mypassword = $_POST['pass'];
    
    $myusername = stripslashes($myusername);
    $myusername = stripslashes($myusername);
    

    $query = ("SELECT * FROM utenti WHERE username='$myusername' and password='$mypassword'");
    $result = mysql_query($query);
    $count = mysql_num_rows($result);

    mysql_close();
    
    
    if($count)
    {
        $seconds = 5 + time();
        setcookie(loggedin, date("F jS - g:i a"), $seconds);
        header("location:gallicano.php");
    }
    else
    {
        echo'non corrisponde';    
    }
    

    ?>

    Come devo fare per impostare i redirect in base al login effettuato?.
    Grazie


  • User Attivo

    Ciao e benvenuto nel forum.
    Se ho capito bene la domanda dovresti mettere un record nella tabella con il quale si crea una "scriminante" del redirect. Ovvero:

    (se l'utente è X){
    manda a questa pagina;
    } else {
    vai in quest'altra pagina;
    }

    Se invece i tipi di utente sono più di due potresti usare uno swich...case.
    Ciao.


  • User Newbie

    Grazie Oslino per avermi risposto, ho iniziato ora a studiare php, mi potresti spiegare meglio con qualche esempio?
    grazie ancora.

    switch ($myusername)
    {
    case "luca": header("location:homegallicano.php");
    break;

    case "angelo":	header("location:login_success.php");
    break;
    

    }

    ho provato in questo modo.
    Quando digito luca e password funziona
    ma quando digito angelo e password rimane sulla pagina di login


  • User Attivo

    Dovresti usare un valore nei record della tabella, qui lo chiamo "tipo_utente":

    [TABLE="class: grid, width: 500"]

    [TD]ID[/TD]
    [TD]None[/TD]
    [TD]password[/TD]
    [TD]tipo_utente[/TD]
    [/TR]

    [TD]1[/TD]
    [TD]pippo[/TD]
    [TD]abc[/TD]
    [TD]normale[/TD]
    [/TR]

    [TD]2[/TD]
    [TD]pluto[/TD]
    [TD]cba[/TD]
    [TD]premium[/TD]
    [/TR]

    [TD]3[/TD]
    [TD]paperino[/TD]
    [TD]xyz[/TD]
    [TD]top[/TD]
    [/TR]
    [/TABLE]

    [PHP]include('conn.php');
    

    //recupero i valori
    $myusername = $_POST['user'];
    $mypassword = $_POST['pass'];

    //filtro i valori per evitare sql injection
    $myusername = mysqli_real_escape_string($conn, $myusername);
    $mypassword = mysqli_real_escape_string($conn, $mypassword);

    $query = ("SELECT * FROM utenti WHERE username='$myusername' and password='$mypassword'");
    $result = mysqli_query($conn, $query);
    $count = mysqli_num_rows($result); // conto il numero di righe restituite

    if($count == 1){ // la riga restituita dovrebbe essere una sola

    while($row = mysqli_fetch_array($conn, $result)){
        $tipo = $row['tipo_utente']; // estraggo il tipo di utente
    }    
    

    // controllo che tipo di utente è con relativo redirect
    swich($tipo){
    case 'normale':
    header(location:'paginaX.php');
    break;
    case 'premium':
    header(location:'paginaY.php');
    break:
    case 'top':
    header(location:'paginaZ.php');
    break;
    }
    }else{ // se non c'è corrispondenza tra nome utente e password....
    echo 'login non corretto';
    }

    mysqli_close($conn);[/PHP]

    Adesso che stai facendo pratica può andare bene anche così, ma l'approccio sarebbe sbagliato perchè dovresti tenere conto che due diversi utenti potrebbero aver usato lo stesso nome e la stessa password per registrarsi, quindi i valori estratti sarebbero più di uno.
    Inoltre la password andrebbe criptata.
    Abituati da subito a usare mysqli anzichè mysql che sarà rimosso dalla codifica.
    Ma, ripeto, per ora va bene così. :smile5:
    Ciao.


  • User Newbie

    ti ringrazio sei stato gentilissimo, ti chiedo l'ultima cosa mi da errore sulle righe
    **Notice: Undefined index: user in /Applications/XAMPP/xamppfiles/htdocs/protezione/login.php on line 5

    Notice: Undefined index: pass in /Applications/XAMPP/xamppfiles/htdocs/protezione/login.php on line 6

    Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, resource given in /Applications/XAMPP/xamppfiles/htdocs/protezione/login.php on line 9

    Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, resource given in /Applications/XAMPP/xamppfiles/htdocs/protezione/login.php on line 10

    Warning: mysqli_query() expects parameter 1 to be mysqli, resource given in /Applications/XAMPP/xamppfiles/htdocs/protezione/login.php on line 14

    Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in /Applications/XAMPP/xamppfiles/htdocs/protezione/login.php on line 15
    login non corretto
    Warning: mysqli_close() expects parameter 1 to be mysqli, resource given in /Applications/XAMPP/xamppfiles/htdocs/protezione/login.php on line 38**

    grazie,
    Sei gentilissimo


  • User Attivo

    Dei primi due errori fregatene, significa solo che le variabili $_POST non sono ancora valorizzate.
    Tutti i restanti errori sono dovuti al medesimo problema, ovvero che non c'è la connessione al DB.

    La variabile $conn che ti ho messo deve essere uguale alla risorsa restituita dalla connessione al DB, che dovresti aver messo nel file conn.php

    Posta tutto il codice compreso conn.php e vediamo dov'è l'errore.

    **Infine due consigli da amico: **

    • se vuoi che le persone ti aiutino, qui o in qualsiasi altro forum, dovresti evitare di postare domande al minimo problema. Studia, prova, cerca, informati e poi, se proprio non riesci, chiedi. Spiega cosa hai provato a fare e cosa non ti è riuscito, troverai qualcuno che ti dà una mano.
    • fatti una buona conoscenza delle basi minime di ciò che manipoli (in questo caso php e mysql). Vedersi fare domande la cui risposta è nelle prime pagine di qualsiasi manuale di php, o nella prima riga di una semplice ricerca con google, indispettisce molti di quelli che potrebbero rispondere, me compreso.

  • User Newbie

    Ho corretto tutti gli errori non leggeva il mysqli.
    Ti ringrazio ora funziona tutto.


  • User Attivo

    Bene... immagino tu abbia corretto trasformando mysqli in semplice mysql.
    In realtà la soluzione migliore era trasformare in mysqli le funzioni del file conn.php

    :gthi: