Rendere visibile un errore in una pagina di login in due modi differenti

  • Creatore Discussione Creatore Discussione Athene
  • Data di inizio Data di inizio

Athene

Utente Attivo
16 Mar 2012
45
0
0
twitter.com
Ciao ^^ ... volevo chiedervi qualche consiglio su come posso mostare gli errori in una pagine di login- logout ( autenticazione ) ... in due modi :

1) quando l'utente che si autentica non ha inserito bene uni dei due campi ( nome e password ) e glicompare una scritta ( colorata ) in cui gli dice che ha sbagliato uno dei due campi oppure uno solo ( che deve apparire per poco tempo) per poi esssere reinderizzato alla pagina iniziale di log-in ;
2) Lo stesso caso di prima solo che invece di far comparire il messaggio di errore in una pagina separata lo vorrei far apparire nelkla stessa pagina della form ....

Please help me !!! Sono disperata !!! :confused::confused:

P.S. scusate tanto se vi rompo ogni volta con questi quesiti ma essendo uno dei miei ultimi esami all'università prima d laurearmi vorrei dare il meglio di me ....

Siete grandiiiiiiiiiiiii !!!! :D

Grazie ancora x il vostro aiuto :D
 
ciao
per far apparire il messaggio di errore io uso un div con questo css
Codice:
.messaggi{
	/*altri valori che mi servono font, color...*/
	visibility:hidden;/*impostato a nascosto*/
	z-index:99;/*sopra tutti gli altri div*/
}
poi costruisco il messaggio di errore in funzione degli errori che sono stati fatti
per costruire il messaggio di errore, dopo la raccolta dei dati nel mio caso con post, li verifico (es. semplificato)

PHP:
<?php
//.....
$messaggio_OK_KO = "";
if($nome=""){$messaggio_OK_KO .= "non hai inserito il nome<br>";}
if($conome=""){$messaggio_OK_KO .= "non hai inserito il cognome<br>";}
//select al db per username e password....
if(mysql_num_rows($query)==0){$messaggio_OK_KO .= "accesso negato: user o pass errati<br>";}
//....
?>
alla fine la varibile $messaggio_OK_KO conterrà l'elenco degli errori fatti dall'utente o, se non ne ha fatti, rimmarrà vuota
quindi
PHP:
<?php
//...
if($messaggio_OK_KO !=""){
	//se $messaggio_OK_KO non è vuoto lo stampo (nota modifico lo style da hidden a visible)
	echo "<div style=\"visibility:visible \" class=\"messaggi\">$messaggio_OK_KO</div>";
	//e faccio tornare in questo caso al form
	echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
}else{
	//faccio quello che devo fare (es. invio l'email o salvo nel db o faccio accere a pag riservate)
}
//...
?>
spero, ma non ci giurerei, di essere stato chiaro
 
Ciao ^^ ... t volevo chiedere alcuni chiarimenti :D

1) Nel primo codice php quando controlli se il la variabile nome e la variabile cognome sono diversi dalla stringa vuota ... dentro l'if si poteva mettere la variabile $_POST['nome'] e $_POST['cognome'] visto che li passo tramite una form con il metodo post ?? ^^

2) Sempre nel primo codice php quando interroghi il database per la verifica del nome e della password si può fare anche senza interrogare un database scrivendo un array e impostando session_start() ?? ^^

3) Nel secondo codice php quando lo vado ad reinderizzare sulla form posso usare la funzione header ('Location : pagina_della_form.html') ?? ^^

:book:

Se il messaggio di errore lo volessi nella stessa pagina della form come potrei fare ? ^^ :book::book:
 
ciao
1) Nel primo codice php quando controlli se il la variabile nome e la variabile cognome sono diversi dalla stringa vuota ... dentro l'if si poteva mettere la variabile $_POST['nome'] e $_POST['cognome'] visto che li passo tramite una form con il metodo post ?? ^^
si puoi, ho messo così per capirsi. poi dipende da quante volte usi la/le variabile/i se molte volte io preferisco così in modo da non stare tuttr le volte a scrivere $_POST['pinco']
2) Sempre nel primo codice php quando interroghi il database per la verifica del nome e della password si può fare anche senza interrogare un database scrivendo un array e impostando session_start() ?? ^^
si certo, sicurezza a parte.
io una volta ho usato questo sistema costruendo un array del tipo:
PHP:
<?php
//chiave=username, valore=password
$utente=array('pinco' => 'a657ffRt', 'pallo' => 'Po235nnT'); //ecc.....
//poi ho cicliato con foreach mettendo prima un flag
$flag=0;
foreach($utente as $chiave => $valore){
//user e pass proveniente da form col solito post
	if($username==$chiave && $password==$valore){
		$flag=1;
		$_SESSION['utente']=$username; //se ti serve trasmettere ad altra pagina oppure =$chiave
	)
}
if($flag==0){
	//acceso negato
}else{
	//accesso consentito
}
?>
3) Nel secondo codice php quando lo vado ad reinderizzare sulla form posso usare la funzione header ('Location : pagina_della_form.html') ?? ^^
si puoi usare header, ma devi stare attenta perchè o header è la prima istruzione o devi modificare il flusso
PHP:
<?php
ob_start();
//tutto il resto
ob_end_flush();
?>
per quello, talvolta uso il tag meta
 
ciao
non avevo visto l'ultima domanda
Se il messaggio di errore lo volessi nella stessa pagina della form come potrei fare ?
se form e script di invio sono nella stessa pagina non dovresti avere problemi, se in due pagine diverse dovresti trasmettere alla pag del form il messaggio di errore tramite sessione
nella pag del form verificare se tale sessione esiste e il suo valore e stampare l'errore (schematizzo)
PHP:
<?php
if(isset($_SESSION['mess_ok_ko']) && $_SESSION['mess_ok_ko']){
	echo "<div style=\"visibility:visible \" class=\"messaggi\">".$_SESSION['mess_err']."</div>"; 
}
?>
 
ciao
non avevo visto l'ultima domanda
se form e script di invio sono nella stessa pagina non dovresti avere problemi, se in due pagine diverse dovresti trasmettere alla pag del form il messaggio di errore tramite sessione
nella pag del form verificare se tale sessione esiste e il suo valore e stampare l'errore (schematizzo)
PHP:
<?php
if(isset($_SESSION['mess_ok_ko']) && $_SESSION['mess_ok_ko']){
	echo "<div style=\"visibility:visible \" class=\"messaggi\">".$_SESSION['mess_err']."</div>"; 
}
?>

Ma questo script php ovviamnete va inserito nella pagina dellla form ridenomindo l'estenzione della pagine .php invece dell'estenzione html normale .. giusto ??? :D
 
ciao
si.
non avevo pensato di dirtelo perchè l'abitudine a non usare più pagine .htm ma solo .php, anche se non contengono script.
se serve aggiungo lo script, senza dover cambiare l'estensione, ma soprattutto andare a verificare i vari link sparsi a dx e sx:cool:
 

Discussioni simili