- Home
- Categorie
- Coding e Sistemistica
- PHP
- Reindirizzare utenti sulla base della password immessa
-
[PHP]<?php
$conn = mysql_connect('localhost', 'root', '');
if (!$conn) {
die ('Non riesco a connettermi: ' . mysql_error());
}$db_selected = mysql_select_db('redirect', $conn);
if (!$db_selected) {
die ("Errore nella selezione del database: " . mysql_error());
}
if(isset($_POST['login']))
{
// Dati Inviati dal modulo
$user = (isset($_POST['user'])) ? trim($_POST['user']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
$pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''
// Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
if (!get_magic_quotes_gpc()) {
$user = addslashes($user);
$pass = addslashes($pass);
}
// Crypto la password e la confronto con quella nel database
$pass =$pass;
// Controllo l'utente esiste
$query = mysql_query("SELECT * FROM tuodatabase WHERE user = '$user' AND pass = '$pass' LIMIT 1");
// Se ha trovato un record
if(mysql_num_rows($query) == 1)
{
// prelevo l'id dal database
$login = mysql_fetch_array($query);
// Creo una variabile di sessione
$redirect=$login['redirect'];
header('Location:'. $redirect);
exit;
}
// se non esiste da l'errore
else
die('Nome Utente o Password errati');
}mysql_close($conn);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login</title>
</head>
<body>
<form action="" method="post">
<input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
<input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
<input name="login" type="submit" value="Login" /><br />
</form>
</body>
</html> Prova cosi'
[/PHP]
prova cosi'.
-
eh sì , a quest' uomo bisognerebbe fargli un monumento ( quanto meno io dovrei .. ) , funziona perfettamente !!!!
A questo punto , approfitto della tua immensa gentilezza e conoscenza per farti due ulteriori domande ( le cui risposte decideranno le sorti di quale materiale verrà fatto il busto di cui sopra ) :
-
come posso proteggere le pagine php a cui linko , in modo che , se tramite la cronologia del browser o per puro caso fortuito qualcuno dovesse trovarle , gli venisse richiesta lo user e password invece di mostrargliele ?? tento di spiegarmi meglio : come posso indirizzare chi, senza passare dal login , dovesse tentare di accedere a quelle pagine che vorrei proteggere ?
-
caso differente : cosa devo scrivere nella mia tabella al campo redirect se volessi reindirizzare l' utente verso l' esterno ad un pagina non php , ma tipo httx:\xxx.sito.com ? dato che non mi funziona digitando l' indirizzo nel modo canonico ?
Che posso dire ? ti ringrazio immensamente e capisco anche che ora inizio ad approfittare forse troppo della tua disponibilità .
Ti chiedo scusa , ma sei per me fonte di un aiuto immenso .
Grazie davvero .
Un salutone
-
-
Up !
Nessuno ha un' idea di come possa fare ? sono due giorni che provo , ma senza risultato ...
help !
Ciao e grazie .
-
Per la prima domanda puoi fare così :
[PHP]<?php
session_start();
$conn = mysql_connect('localhost', 'root', '');
if (!$conn) {
die ('Non riesco a connettermi: ' . mysql_error());
}$db_selected = mysql_select_db('redirect', $conn);
if (!$db_selected) {
die ("Errore nella selezione del database: " . mysql_error());
}
if(isset($_POST['login']))
{
// Dati Inviati dal modulo
$user = (isset($_POST['user'])) ? trim($_POST['user']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
$pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''
// Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
if (!get_magic_quotes_gpc()) {
$user = addslashes($user);
$pass = addslashes($pass);
}
// Crypto la password e la confronto con quella nel database
$pass =$pass;
// Controllo l'utente esiste
$query = mysql_query("SELECT * FROM tuodatabase WHERE user = '$user' AND pass = '$pass' LIMIT 1");
// Se ha trovato un record
if(mysql_num_rows($query) == 1)
{
// prelevo l'id dal database
$login = mysql_fetch_array($query);
// Creo una variabile di sessione
$redirect=$login['redirect'];
$_SESSION['login'] = $user;
header('Location:'. $redirect);
exit;
}
// se non esiste da l'errore
else
die('Nome Utente o Password errati');
}mysql_close($conn);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login</title>
</head>
<body>
<form action="" method="post">
<input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
<input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
<input name="login" type="submit" value="Login" /><br />
</form>
</body>
</html> [/PHP]
E poi, nella pagina protetta :[PHP]<?php
session_start();
if(!isset($_SESSION['login']) || $_SESSION['login'] != "userchedevevederelapagina") die("TU NON PUOI VEDERE QUESTA PAGINA");
?>
//qui quello che vuoi...[/PHP]
Per la seconda potresti essere più preciso?:D
-
Hey , grazie mille ilnetsurfer !!!
è bello avere a che fare con gente come voi : capace e disponibile . Un sincero ringraziamento .
per la seconda domanda purtroppo non riesco molto ad essere preciso a causa del fatto che il sistema del forum mi impedisce di scrivere indirizzi web e quindi mi vedo costretto a superare l' ostacolo inserendo delle xxx ...
in pratica ciò che volevo dire è che se devo reindirizzare un utente ad esempio verso un sito differente da quello su cui è il form , dovrei indicare tale indirizzo nella mia tabella , alla colonna redirect . Ma malauguratamente , non sò il perchè , se in quel campo digito l'indirizzo classico (httx:\xxx.sitodamostrare.xxx) non funziona il redirect .. secondo te come mai ?
spero di poter essere stato più chiaro .. ma non credo , rileggendomi .. non sono molto bravo a scrivere , chiedo scusa ..
comunque voglio fin d' ora ringraziarti per tutta la tua disponibilità . Siete da ammirare . Grazie ancora .
ps: non vedo l' ora di testare , ma sopratutto di CAPIRE hai agito nello script .:)
pps : funziona tutto !!!! .... però l' ultima pagina protetta che ho visionato,si continua ad aprire anche dopo molto tempo dal mio allontanamento , per cui un utente potrebbe tornarci su senza fare il login ... come posso far sì che ciò non avvenga ?
Grazie , grazie , grazie !!!
-
altra domanda : se in una delle pagine protette alle quali ho reindirizzato l' utente ( grazie ancora 10.000 ilnetsurfer ) volessi linkare linkare verso altre pagine , come potrei proteggere quelle ??
thanks a LOOOOOOOOTTT !!!
-
Prego, non c'è di che;)Come sai la disponibilità è alle fondamenta di questo forum;)
Allora...
Per la prima domanda, ho usato le sessioni :
[PHP]session_start(); ... $_SESSION['login'] = $user;[/PHP]
Ecc..Le sessioni sono come dei "cookie temporanei"...Ovvero, alla chiusura del browser vengono cancellati e l'utente deve rifare il login.
Per la seconda domanda potresti provare così :
[PHP]<?php
session_start();
$conn = mysql_connect('localhost', 'root', '');
if (!$conn) {
die ('Non riesco a connettermi: ' . mysql_error());
}$db_selected = mysql_select_db('redirect', $conn);
if (!$db_selected) {
die ("Errore nella selezione del database: " . mysql_error());
}
if(isset($_POST['login']))
{
// Dati Inviati dal modulo
$user = (isset($_POST['user'])) ? trim($_POST['user']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
$pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''
// Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
if (!get_magic_quotes_gpc()) {
$user = addslashes($user);
$pass = addslashes($pass);
}
// Crypto la password e la confronto con quella nel database
$pass =$pass;
// Controllo l'utente esiste
$query = mysql_query("SELECT * FROM tuodatabase WHERE user = '$user' AND pass = '$pass' LIMIT 1");
// Se ha trovato un record
if(mysql_num_rows($query) == 1)
{
// prelevo l'id dal database
$login = mysql_fetch_array($query);
// Creo una variabile di sessione
$redirect=$login['redirect'];
$_SESSION['login'] = $user;
?>
<script type="text/javascript">
<!--
function doRedirect() { //funzione con il link alla pagina che si desidera raggiungere
location.href = "<?php echo $redirect;?>";
}
window.setTimeout("doRedirect()", 0); //Fa partire il redirect dopo tot. secondi
//-->
</script>
<?php
exit;
}
// se non esiste da l'errore
else
die('Nome Utente o Password errati');
}mysql_close($conn);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login</title>
</head>
<body>
<form action="" method="post">
<input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
<input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
<input name="login" type="submit" value="Login" /><br />
</form>
</body>
</html>
[/PHP]
Per la terza domanda, basta che in ogni pagina che tu voglia proteggere inserisca il link :
<a href = "altrapagprotetta.php">pag</a>
E nella altrapagprotetta.php inserisca questo codice :
[PHP]<?php
session_start();
if(!isset($_SESSION['login']) || $_SESSION['login'] != "userchedevevederelapagina") die("TU NON PUOI VEDERE QUESTA PAGINA");
?>
//qui quello che vuoi...[/PHP]
Ola!
-
Galattico !!!!
Tutto perfetto !!!
L' unica cosa è che non ho capito come mai hai aggiunto quello script in javascript ... a che serve ? cosa fa di preciso e perchè hai pensato di inserirla?
Grazie infinite , davvero mi stupisce la gentilezza e la competenza di certe persone , pronte a condividere invece che custodire gelosamente le loro conoscenze . Meriti davvero una lode per questo Ilnetsurfer .
Grazie ancora .
-
@Ringraziamenti : Di niente!
@Domanda :Quello script serve a fare il redirect, ovvero lo stesso lavoro di Header("Redirect : $redirect");
Il fatto è che gli header possono rivelare molti problemi...E per questo è meglio usare Javascript..;)
Ola!
-
Grazie Ilnetpub .
Sei stato cortesissimo , e sei anche preparatissimo .
Non sò davvero come ringraziarti .
L' unico neo è che ti sei " castrato con le tue mani " , perchè per qualsiasi altro dubbio , sarai la prima persona che verrò a cercare !
Scherzi a parte , spero di potermela cavare sempre meglio con questo bel linguaggio che è PHP . La difficoltà più grande che forse stò incontrando ( non che sia l' unica , intendiamoci ) è quella lacuna alla quale sarà difficile che possa porre rimedio , se non forse con il trascorrere del tempo , che è " l' avere la mentalità da programmatore " .:bho:
Imparare funzioni , variabili fisse e sintassi è complesso e snervante per chi inizia , ma mai quanto la mancanza ( almeno da parte di chi come me non ha fatto studi specifici ) della giusta mentalità per rapportarsi al linguaggio e alla " macchina " computer .Bè , posso solo ringraziarti tantissimo e sperare un giorno , magari anche in un settore differente , di poter ricambiare le tue cortesie .
Un abbraccio .
Tanaka
-
Prego ancora, di niente!
Non ti preoccupare, anche se , come dici tu*,mi sono castrato con le mie mani, *sarò felice di poterti aiutare, come altri hanno fatto con me su questo forum!
Appena approdato su questo forum ero un grandissimo impreparato ma, piano piano e con l'aiuto degli altri membri, ho imparato davvero tanto...
Ti assicuro che con il tempo imparerai a destreggiarti con il PHP!;)
Ola!