- Home
- Categorie
- Coding e Sistemistica
- Coding
- Login che reindirizza utenti a pagine web diverse
-
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
passwordla 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
-
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.
-
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
-
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 restituiteif($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ì.
Ciao.
-
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 5Notice: 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
-
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.
-
Ho corretto tutti gli errori non leggeva il mysqli.
Ti ringrazio ora funziona tutto.
-
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