Miglioramento controlli su input

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
ricapitoliamo
la pagina che abbiamo messo a posto è la pagina con cui uno si registra, giusto? e non dovresti accedervi con
PHP:
 echo "<li><a href='register2.php'>Registrati</a></li>";
?
se è così cosa c'entra il get?
se non capisco male invece con
PHP:
echo "<li><a href='login2.php?azione=logout'>Esci</a></li>";
o
PHP:
 echo "<li><a href='login2.php?azione=login'>Login</a></li>";
vai ad una pagina chiamata login2.php dpve in funzione della querystringa fai o non fai qualcosa
da quello che capisco la pagina login2.php serve all'utente "già registrato" per loggarsi e acceder quindi ad una parte riservata
è così?

comunque penso che ci risientamo dopo ferragosto
buon solleone
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Alla pagina
PHP:
 echo "<li><a href='register2.php'>Registrati</a></li>";
si trova semplicemente la pagina di registrazione utente nuovo. Le altre due pagine
PHP:
 echo "<li><a href='login2.php?azione=logout'>Esci</a></li>";
e
PHP:
 echo "<li><a href='login2.php?azione=login'>Esci</a></li>";
sono le due pagine dove l'utente o entra e quindi login o esce quindi logout. Il fatto che le pagine sia tutte con il 2 prima del ".php" è che sto testando la tua versione con i controlli modificati, mentre le versioni senza il numero 2 sono uguali ad eccezione del file register che ha i controlli lato client in locale. Come avrai ben capito, il form con tutte le formule e regole l'ho scritto seguendo una guida, senza pormi molte domande in quanto sono un neofita, e capire la sintassi completa per mettermi a scrivere del codice in autonomia, è molto lunga e impegnativa.

Se non ci si sente prima, buon solleone anche a te.

Ciao
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
echo "<li><a href='register2.php'>Registrati</a></li>";
si trova semplicemente la pagina di registrazione utente nuovo.....
ma è quella che abbiamo messo a posto?
comunque intanto una piccola cosa: perchè se uno non vuole loggarsi fai
PHP:
echo "<li><a href='login2.php?azione=login'>Esci</a></li>";
non potresti più semplicemente (incasinando meno la pag login2) fare
PHP:
echo "<li><a href='index.php'>Esci</a></li>"; //o altra pag a tuo piacimento
?
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ogni singola pagina che l'utente visita ha sempre le voci, Home, registrati e login o logout a seconda se ha fatto il login o no. Quindi nel caso non volesse loggarsi continuerebbe la sua navigazione con la pagina Index, che poi avrà altre pagine in quanto è solo una bozza. Al momento, ma penso tu l'abbia capito, ho solamente queste pagine in php e non girano su nulla. Quindi aprendole con qualunque programma tipo xampp vedresti le sole 3 righe e stop. Se vuoi nelle pagine precedenti ho messo tutti i codici da usare mettendo estensione php.

Il problema che ho è quello di non aver nessun avviso del buon fine della registrazione. La mail viene inviata senza problemi, ricevo e quando clicco sul link mi apre la pagina con la passkey ma non mi dice se è stata completata la registrazione. Infatti se vado a vedere nel mio db l'utente è ancora nella tabella utenti_temp. che ci sia qualche problema nel passaggio??!:crying:
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ho risooooooooooooooltoooooooooooooooo :elvis::elvis::elvis::mavieni::mavieni::mavieni::cool::cool::cool:
Mancava la pagina di conferma!!:tifoso::tifoso::hammer::hammer::hammer::hammer:

Piuttosto nessuno sa dirmi cosa vuol dire questo?
HTML:
Undefined index: azione in login2.php riga 11
 

hackersatifal

Utente Attivo
9 Ago 2012
238
0
0
Ho risooooooooooooooltoooooooooooooooo :elvis::elvis::elvis::mavieni::mavieni::mavieni::cool::cool::cool:
Mancava la pagina di conferma!!:tifoso::tifoso::hammer::hammer::hammer::hammer:

Piuttosto nessuno sa dirmi cosa vuol dire questo?
HTML:
Undefined index: azione in login2.php riga 11

Puoi inserire il codice completo, così da farmi capire quello finale per poterti aiutare?
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
eccolo qua! Questo è il file login2.php
PHP:
<?php

	include 'header2.php';

?>

	<div id="wrapper">
	
	    <?php
        	if(isset($_GET['azione'])){
        	   
        	$p = $_GET['azione'];
            
            }                         
            // Azione per il login2.php?azione=login    
            if($p == "login"){
				
                
				if(!isset($_POST['invia'])){ ?>
                
                <form method="post" id="formlogin" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
                    <table class="pinco_pallo">
                        <tr>
                            <td><label for="username">Username</label></td>
                            <td><input type="text" name="username" id="username" /></td>
                        </tr>
                        <tr>
                            <td><label for="password">Password</label></td>
                            <td><input type="password" name="password" id="password" /></td>
                        </tr>
                        <tr>
                            <td>&nbsp;</td><td><input type="submit" name="invia" id="login" value="Entra" /></td>
                        </tr>
                   </table>
                </form>
                                 
<?php			} else {
							
					$username = mysql_real_escape_string($_POST['username']);
					$password = mysql_real_escape_string($_POST['password']);
					
					if($username == "" || $password == ""){
					
						echo "Devi compilare tutti i campi";
						
					} else {
						
						$password_crypt = md5($password);
								
						$recuperadati = mysql_query("SELECT * FROM utenti WHERE username = '$username' AND password = '$password_crypt'");
								
						$verificadati = mysql_num_rows($recuperadati);
								
						if($verificadati == 1) {
									
							$sessione = mysql_fetch_array($recuperadati);
							$_SESSION['utente'] = $sessione['username'];
							echo "Login effettuato con successo!";
							header("Refresh: 2; URL= index2.php");	
							
						} else {
									
							echo "Dati non presenti nel database!";
							
						}
								
					}
							
				}
				
				
			// Azione del logout					
			} elseif ($p == "logout"){
					
				session_destroy();
				echo "Logout effettuato con successo!";
				header("Refresh: 2; URL= index2.php");				
			
			}
			
			
			
		?>
		


	</div>

</body>
</html>

il notice sul'indicie l'ho risolto inserendo
PHP:
if(isset($_GET['azione'])){

ilproblema è che adesso mi dice variabile indefinita alle righe 16 e 73.Cioè qua
PHP:
 if($p == "login"){
e qua
PHP:
} elseif ($p == "logout"){

Qualche idea?
 

hackersatifal

Utente Attivo
9 Ago 2012
238
0
0
eccolo qua! Questo è il file login2.php
PHP:
<?php

	include 'header2.php';

?>

	<div id="wrapper">
	
	    <?php
        	if(isset($_GET['azione'])){
        	   
        	$p = $_GET['azione'];
            
            }                         
            // Azione per il login2.php?azione=login    
            if($p == "login"){
				
                
				if(!isset($_POST['invia'])){ ?>
                
                <form method="post" id="formlogin" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
                    <table class="pinco_pallo">
                        <tr>
                            <td><label for="username">Username</label></td>
                            <td><input type="text" name="username" id="username" /></td>
                        </tr>
                        <tr>
                            <td><label for="password">Password</label></td>
                            <td><input type="password" name="password" id="password" /></td>
                        </tr>
                        <tr>
                            <td>&nbsp;</td><td><input type="submit" name="invia" id="login" value="Entra" /></td>
                        </tr>
                   </table>
                </form>
                                 
<?php			} else {
							
					$username = mysql_real_escape_string($_POST['username']);
					$password = mysql_real_escape_string($_POST['password']);
					
					if($username == "" || $password == ""){
					
						echo "Devi compilare tutti i campi";
						
					} else {
						
						$password_crypt = md5($password);
								
						$recuperadati = mysql_query("SELECT * FROM utenti WHERE username = '$username' AND password = '$password_crypt'");
								
						$verificadati = mysql_num_rows($recuperadati);
								
						if($verificadati == 1) {
									
							$sessione = mysql_fetch_array($recuperadati);
							$_SESSION['utente'] = $sessione['username'];
							echo "Login effettuato con successo!";
							header("Refresh: 2; URL= index2.php");	
							
						} else {
									
							echo "Dati non presenti nel database!";
							
						}
								
					}
							
				}
				
				
			// Azione del logout					
			} elseif ($p == "logout"){
					
				session_destroy();
				echo "Logout effettuato con successo!";
				header("Refresh: 2; URL= index2.php");				
			
			}
			
			
			
		?>
		


	</div>

</body>
</html>

il notice sul'indicie l'ho risolto inserendo
PHP:
if(isset($_GET['azione'])){

ilproblema è che adesso mi dice variabile indefinita alle righe 16 e 73.Cioè qua
PHP:
 if($p == "login"){
e qua
PHP:
} elseif ($p == "logout"){

Qualche idea?

Inserisci anche la pagina di registrazione per fare capire la situazione!:D
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Eccola.
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="it">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<?php
include_once 'header2.php';
//$testo = testo da verificare, $mi= lunghezza minima del testo, $ma= lunghezza massima
function ver_testo($testo,$mi,$ma){
    $pattern="/^[A-Za-z0-9]{".$mi.",".$ma."}$/";
    if(preg_match($pattern, $testo)){
        //testo ok
        return TRUE;
    }else{
        return FALSE;
    }
}

if(!isset($_GET['passkey'])){
    
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $username = trim($_POST['username']);
        $password1 = trim($_POST['password1']);
        $password2 = trim($_POST['password2']);
        $email = trim($_POST['email']);
        //metto a vuoto messagggio di errore
    	$ok_ko="";
    	    if(!ver_testo($username,4,10)){$ok_ko.="username non corretto deve essere lungo da 4 a 10 caratteri <br />";}
    	    if(!ver_testo($password1,6,12)){$ok_ko.="prima password non corretta deve essere composta da minimo 6 massimo 12 caratteri<br />";}
    	    if(!ver_testo($password2,6,12)){$ok_ko.="seconda password non corretta deve essere composta da minimo 6 massimo 12 caratteri<br />";}
    	    if($password1 != $password2){$ok_ko.="le password non coincidono<br />";}
    	    if(!filter_var($email, FILTER_VALIDATE_EMAIL)){$ok_ko.="Attenzione!, indirizzo email non valido<br />";}
    		if($ok_ko==""){//se è rimasto vuoto non ci sono errori
    
    		$codiceconferma = md5(uniqid(rand()));
            $username = mysql_real_escape_string(strtolower(($username)));//conviene salvarlo tutto in minuscolo
            //e ti conviene verificare che non ce ne sia un altro uguale
            $verificauseremail = mysql_query("SELECT id FROM utenti WHERE username='$username' OR email='$email'");
            if(mysql_num_rows($verificauseremail)>0){
                //avvisi e torni al form pulito
                echo "ATTENZIONE: username o email già esistente, scegline un altro.<br />";
                echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
            }else{
                $username = mysql_real_escape_string($username);
            	$email = mysql_real_escape_string($email);
    			$password = mysql_real_escape_string($password1);
                $inviautentitemp = "INSERT INTO utenti_temp (codiceconferma, username, password, email) VALUES ('$codiceconferma', '$username', '$password', '$email')";
    			if(mysql_query($inviautentitemp)){
    
    				//prepari l'email di conferma da inviare
                    //anche se sarebbe meglio che tu usassi al posto di mail() la classe phpmailer
    
                	//Includo la classe phpmailer
                	include ("class.phpmailer.php");
                    
                	$mail = new PHPmailer();
                	$mail->IsSMTP();
                	$mail->isHtml(true);
                    $mail->SMTPDebug = true;
    
    
                	// Impostazioni invio mail al cliente
    
    				$mail->Setfrom ("[email protected]","Sito");		//Inserire la mail dell'amministratore ed il nome del sito
    				$mail->AddReplyTo("[email protected]","Amministratore");
                	$mail->AddAddress ($email); //Mail che riceverà chi si iscrive
    				//$mail->MsgHTML("<html><head></head><body>Questa è una email in <b>Html</b></body></html>");
    				$mail->AltBody = "Il tuo client di posta non è settato per la ricezione in HTML";
                	$mail->Subject = "Conferma di registrazione al sito www.sito.com";
                	$mail->Body = "<p>Ecco il tuo codice di attivazione</p><br />";
                	$mail->Body .= "<p>Clicca sul link per confermare la registrazione stordito!</p><br />";
                	$mail->Body .= "<a href=\"http://siti/Biblionet%20test%20MySql/register2.php?passkey=$codiceconferma\">Clicca qui</a>";
    
                    if ($mail->Send()){
                        echo "Tra poco riceverai codice di attivazione per confermare l'iscrizione";
                    }else{
                        echo "Si è verificato un errore di trasmissione riprova più tardi" . $mail->errorInfo();
                    	//e dopo 3 secondi torno automaticamente al form ripulito
                    	//echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
                    	//i secondi di attesa possono essere aumentati o diminuiti
               		}echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
                 
    		} else {
    			echo "ERRORE di comnnesione, ti preghiamo di riprovare più tardi<br />" . $mail->errorInfo();
    			echo "<meta http-equiv='Refresh' content='3; URL=index2.php'>";
    
    		}
        }
    } else {
        echo $ok_ko;
        echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
    }
    }
    } else {
			
			$passkey = $_GET['passkey'];
			
			$sqlrecuperauser = "SELECT * FROM utenti_temp WHERE codiceconferma = '$passkey'";
			$risultatouser = mysql_query($sqlrecuperauser);
			
			if($risultatouser) {
			
				$contauser = mysql_num_rows($risultatouser);
				
				if($contauser == 1){
				
					$rows = mysql_fetch_array($risultatouser);
					$username = $rows['username'];
					$email = $rows['email'];
					$password = $rows ['password'];
					
					$passwordcript = md5($password);
					
					$sqlconfermauser = mysql_query("INSERT INTO utenti (username, password, email) VALUES ('$username', '$passwordcript', '$email')");
					
					if ($sqlconfermauser) {
					
						echo "Il tuo account è stato attivato con successo";
						$sqleliminadati = mysql_query("DELETE FROM utenti_temp WHERE codiceconferma = '$passkey'");
					
					} else {
					
						echo "Errore!";
					
					}
				
				}
			
			}
			
		}
?>
                <form method="post" id="formregistrazione" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
                    <table class="pinco_pallo">
                        <tr>
                            <td><label for="username">Username</label></td>
                            <td><input type="text" name="username" id="username" /></td>
                        </tr>
                        <tr>
                            <td><label for="password1">Password</label></td>
                            <td><input type="password" name="password1" id="password1" /></td>
                        </tr>
                        <tr>
                            <td><label for="password2">Ripeti Password</label></td>
                            <td><input type="password" name="password2" id="password2" /></td>
                        </tr>
                        <tr>
                            <td><label for="email">Email</label></td>
                            <td><input type="text" name="email" id="email" /></td>
                        </tr>
                        <tr>
                            <td>&nbsp;</td><td><input type="submit" name="invia" id="registrati" value="Registrati" /></td>
                        </tr>
                        <tr>
                            <!--qui ci sta bene un link in modo che l'utente possa uscire senza registrarsi -->
                            <td>&nbsp;</td><td><a href="index2.php">esci</a></td>
                        </tr>
                    </table>
                </form>
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Allora dopo mille prove ho cambiato il codice php da così
PHP:
 <?php

    include 'header2.php';

?>

    <div id="wrapper">
    
        <?php
            if(isset($_GET['azione'])){
               
            $p = $_GET['azione'];
            
            }                         
            // Azione per il login2.php?azione=login    
            if($p == "login"){
                
                
                if(!isset($_POST['invia'])){ ?>
                
                <form method="post" id="formlogin" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
                    ......           
<?php            
            // Azione del logout                    
            } elseif ($p == "logout"){
                    
                session_destroy();
                echo "Logout effettuato con successo!";
                header("Refresh: 2; URL= index2.php");                
            
            }
            
            
            
        ?>
        


    </div>

</body>
</html>
a così
PHP:
<?php

	include 'header2.php';

?>

	<div id="wrapper">
	
	    <?php
        
            if(isset($_GET['azione']) && ($p = "login")){
            
                                              
            // Azione per il login2.php?azione=login    
            				
                
				if(!isset($_POST['invia'])){ ?>
                
                <form method="post" id="formlogin" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
                    .......		
			// Azione del logout					
			} elseif (isset($_GET['azione']) && ($p = "logout")){
					
				session_destroy();
				echo "Logout effettuato con successo!";
				header("Refresh: 2; URL= index2.php");				
			
			}
        
        
						
		?>
		


	</div>

</body>
</html>

ho olto i due == e non mi da gli errori. Però non capisco se sono fondamentali oppure un errore di scrittura. Inultimo il login viene fatto correttamente, ho l'avviso "login efettuato con successo", ho naturalmente i due link index e logout ma quando clicco su logout non mi esce dalla sessione e non ho nessun avviso che mi comunica se sono uscito o no. Mi potete dire se quello che ho scritto è corretto?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
perchè assegni
f(isset($_GET['azione']) && ($p = "login")? e poi da dove salta fuori $p?
se l'azione che devi compiere è login o logout

PHP:
f(isset(f(isset($_GET['azione']) && $_GET['azione']== "login"){
   //ecc....
}eseifisset(f(isset($_GET['azione']) && $_GET['azione']== "logout"){
   //ecc....
}
a parte che ribadisco "proprio vuoi complicarti la vita" fai cliccare su logout mandi alla pagina dove tramite l'if fai l'ambaradan di rimandare alla index
header("Refresh: 2; URL= index2.php");
ma a che ti serve?
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Corretto gli errori. Lo so che c'era casino la variabile $p veniva usata così
PHP:
$p = $_GET['azione'];
ma naturalmente mi dava errore. Adesso dovrebbe funzionare tutto correttamente. Nessuno errore nel codice ma adesso dopo la conferma della mail ed il messaggio di account attivato non riesco a loggarmi. INserisco i dati ed invece di apparirmi utente loggato, non mi appare nulla. Bo! contollo i dati e vediamo.

Ho inserito il codice come lo hai messo tu nel post precedente ma con sintassi corretta.
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
ciao, non riesco a venirne a capo.
La sintassi è corretta, son oriuscito anche ad inserire un campo in più e farlo controllare ed inserire in db senza problemi. Ilproblema rimanche che quando inserisco i dati di accesso confermati via mail, ho il messaggio account attivato, ma al momento di inserire i dati nel form di login non mi appare nnulla. Non ho ne messaggi ne altro, mi rimane sulla pagina index con le tre voci, home, login, registrati. Vi allego il codice

PHP:
<?php

	include 'header2.php';

?>

	<div id="wrapper">
	
	    <?php
            
            // Azione per il login
            
            if(isset($_GET['azione']) && ($_GET['azione'] == 'login')){
            
				if(!isset($_POST['invia'])){ ?>
                
                <form method="post" id="formlogin" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
                    <table class="pinco_pallo">
                        <tr>
                            <td><label for="username">Username</label></td>
                            <td><input type="text" name="username" id="username" /></td>
                        </tr>
                        <tr>
                            <td><label for="password">Password</label></td>
                            <td><input type="password" name="password" id="password" /></td>
                        </tr>
                        <tr>
                            <td>&nbsp;</td><td><input type="submit" name="invia" id="login" value="Entra" /></td>
                        </tr>
                   </table>
                </form>
                                 
<?php			} else {
							
					$username = mysql_real_escape_string($_POST['username']);
					$password = mysql_real_escape_string($_POST['password']);
					
					if($username == "" || $password == ""){
					
						echo "Devi compilare tutti i campi";
						
					} else {
						
						$password_crypt = md5($password);
								
						$recuperadati = mysql_query("SELECT * FROM utenti WHERE username = '$username' AND password = '$password_crypt'");
								
						$verificadati = mysql_num_rows($recuperadati);
								
						if($verificadati == 1) {
							
							$sessione = mysql_fetch_array($recuperadati);
							$_SESSION['utente'] = $sessione['username'];
							echo "Login effettuato con successo!";
								
							
						} else {
									
							echo "Dati non presenti nel database!";
							
						}
								
					}
							
				}
				
				
			// Azione del logout					
			} else {
			 
			 if(isset($_GET['azione']) && ($_GET['azione'] == 'logout')){
					
				session_destroy();
				echo "Logout effettuato con successo!";
				header("Refresh: 2; URL= index2.php");				
			
			}
        }
        
						
		?>
		


	</div>

</body>
</html>
io credo che il problema sia sulla dichiarazione
PHP:
if(isset($_GET['azione']) && ($_GET['azione'] == 'login')){
e
PHP:
if(isset($_GET['azione']) && ($_GET['azione'] == 'logout')){

per le quali non viene riconosciuto l'indice azione.

Avete qualche idea!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
ho provato il tuo script togliendo quello che non ho (es header.php) e funziona, ciè prende il get come dovrebbe
leggi i commenti

PHP:
<?php
//ho tralasciato la sessione
echo "<ul>";
echo "<li><a href=\"login2.php?azione=login\">Login</a></li>"; 
echo "<li><a href=\"login2.php?azione=logout\">Esci</a></li>"; 
echo "</ul>";
?>

login2.php
PHP:
<?php
session_start();//NON VEDO DOVE L'HAI MESSO se usi le sessioni è indispensabile
//include 'header2.php';
?>
<div id="wrapper">
<?php
// Azione per il login
if(isset($_GET['azione']) && ($_GET['azione'] == 'login')){
	if(!isset($_POST['invia'])){//questo non l'ho provato perche non ho fatto le tabelle del db
?>
<form method="post" id="formlogin" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
<table class="pinco_pallo">
<tr>
<td><label for="username">Username</label></td>
<td><input type="text" name="username" id="username" /></td>
</tr>
<tr>
<td><label for="password">Password</label></td>
<td><input type="password" name="password" id="password" /></td>
</tr>
<tr>
<td>&nbsp;</td><td><input type="submit" name="invia" id="login" value="Entra" /></td>
</tr>
</table>
</form>                           
<?php 
	} else {
		$username = mysql_real_escape_string($_POST['username']);
		$password = mysql_real_escape_string($_POST['password']);
		if($username == "" || $password == ""){
			echo "Devi compilare tutti i campi";
		} else {
			$password_crypt = md5($password);
			//dove sono i dati di connessione???????
			$recuperadati = mysql_query("SELECT * FROM utenti WHERE username = '$username' AND password = '$password_crypt'");
			$verificadati = mysql_num_rows($recuperadati);
			if($verificadati == 1) {
				$sessione = mysql_fetch_array($recuperadati);
				$_SESSION['utente'] = $sessione['username'];
				echo "Login effettuato con successo!";
			} else {
				echo "Dati non presenti nel database!";
			}
		}
	}
// Azione del logout                    
} else {
	if(isset($_GET['azione']) && ($_GET['azione'] == 'logout')){
		//session_destroy(); //è meglio che tu utilizzi
		$_SESSION=array();
        echo "Logout effettuato con successo!";
        header("Refresh: 2; URL= index2.php"); //scommetto  (5 a 1) che questa ti da errore            
	}
}
?>
</div>

in funzione di cosa clicco mi da il login (form) o il logout
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
ciao
ho provato il tuo script togliendo quello che non ho (es header.php) e funziona, ciè prende il get come dovrebbe
leggi i commenti

PHP:
<?php
//ho tralasciato la sessione
echo "<ul>";
echo "<li><a href=\"login2.php?azione=login\">Login</a></li>"; 
echo "<li><a href=\"login2.php?azione=logout\">Esci</a></li>"; 
echo "</ul>";
?>

login2.php
PHP:
<?php
session_start();//NON VEDO DOVE L'HAI MESSO se usi le sessioni è indispensabile
//include 'header2.php';
?>
<div id="wrapper">
<?php
// Azione per il login
if(isset($_GET['azione']) && ($_GET['azione'] == 'login')){
	if(!isset($_POST['invia'])){//questo non l'ho provato perche non ho fatto le tabelle del db
?>
<form method="post" id="formlogin" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
<table class="pinco_pallo">
<tr>
<td><label for="username">Username</label></td>
<td><input type="text" name="username" id="username" /></td>
</tr>
<tr>
<td><label for="password">Password</label></td>
<td><input type="password" name="password" id="password" /></td>
</tr>
<tr>
<td>&nbsp;</td><td><input type="submit" name="invia" id="login" value="Entra" /></td>
</tr>
</table>
</form>                           
<?php 
	} else {
		$username = mysql_real_escape_string($_POST['username']);
		$password = mysql_real_escape_string($_POST['password']);
		if($username == "" || $password == ""){
			echo "Devi compilare tutti i campi";
		} else {
			$password_crypt = md5($password);
			//dove sono i dati di connessione???????
			$recuperadati = mysql_query("SELECT * FROM utenti WHERE username = '$username' AND password = '$password_crypt'");
			$verificadati = mysql_num_rows($recuperadati);
			if($verificadati == 1) {
				$sessione = mysql_fetch_array($recuperadati);
				$_SESSION['utente'] = $sessione['username'];
				echo "Login effettuato con successo!";
			} else {
				echo "Dati non presenti nel database!";
			}
		}
	}
// Azione del logout                    
} else {
	if(isset($_GET['azione']) && ($_GET['azione'] == 'logout')){
		//session_destroy(); //è meglio che tu utilizzi
		$_SESSION=array();
        echo "Logout effettuato con successo!";
        header("Refresh: 2; URL= index2.php"); //scommetto  (5 a 1) che questa ti da errore            
	}
}
?>
</div>

in funzione di cosa clicco mi da il login (form) o il logout


Ciao, ho provato a modificare alcune cose su tuo consiglio.
la session_start() nel file login2.php non c'è in quanto la prende dal file header2.php con include. Infatti se inserisco session_start mi da un avviso dicendomi che non verrà presa inconsiderazine in quanto sessione già avviata.
Quanto a i dati di connessine non saprei che dirti. Non ci sono mai stati e se prima andava bene non capisco cosa possa cambiare adesso. Comunque non ci sono dici che devo inserirli? Il ffile verifica se i dati presenti nel form di login sono corretti ed io vedo che la query al db c'è, però mi posso sbagliare, dimmi tu. Che tipo di connessione al db dovrei fare?
Poi per la session_destroy mi dici che differenza c'è. Li credo di aver fatto bene ma giusto per curiosità, che differenza c'è?
In utimo probabilmente il codice di redirect è errato l'ho sostituito con questo
PHP:
if(isset($_GET['azione']) && ($_GET['azione'] == 'logout')){
				
                $_SESSION=array();	
				//session_destroy();
				echo "Logout effettuato con successo!";
                header("Refresh content= 3; Location: index2.php");
di fatto non ho nessun errore, semplicemente non ho nessun messaggio a video che l'utente si sia loggato, nessun messaggio di benvenuto, e nemmeno il redirect.
 
Discussioni simili
Autore Titolo Forum Risposte Data
xone [Offro] Correzione e miglioramento SEO di qualsiasi tipologia di sito Offerte e Richieste di Lavoro e/o Collaborazione 2
TheGamer [offro] Creazione e miglioramento sito Wordpress, prezzi modici! Offerte e Richieste di Lavoro e/o Collaborazione 0
braccobaldo Aumento follower su Twitter = miglioramento del posizionamento? SEO e Posizionamento 7
promuovimi [Vendo] Incremento followers Google PLUS (+1, cerchie) per miglioramento SEO Annunci servizi di Social Media Marketing 0
Sevenjeak Aiuto miglioramento funzione per inserimento BBCode in textarea Javascript 1
B funzione .nl2br e miglioramento script PHP 1
K allineare controlli in un div HTML e CSS 3
M Effettuare i controlli di obbligatorietà lato server e, per quanto possibile, di tipo. PHP 0
M Controlli array PHP 0
H Controlli form jQuery 0
H [risolto] Controlli form iscrizione PHP 16
X Errore nei controlli! PHP 5
F Controlli form per Registrazione utenti PHP 9
M Problema controlli MySQL ( XOR ) MySQL 1
S Controlli variabili php PHP 11
Emix Momento di lapsus... Controlli su user e pwd e campo booleano... PHP 5
O Controlli come parametri Javascript 3
S Eseguire controlli sul form delle foto PHP 17
P far sparire un tasto con i controlli PHP 1
T come mettere controlli su form di inserimento dati?? PHP 11
C controlli sulle registrazioni Sicurezza e Virus 0
Z problema con i controlli disattivati su IE 7 Javascript 2
M controlli radio button Javascript 2
E controlli su tabelle statiche Classic ASP 1
F me lo controlli per favore? PHP 0
Q VB6 Caricamento spezzettato matrici di controlli Programmazione 0
A controlli js Javascript 1
S Licenze?? controlli?? Flash 1
H controlli per la data Javascript 1
M Come recuperare molteplici input form PHP 1
F Lettura "input number" dinamico PHP 4
B form gestione input PHP 2
M Creare un campo input select quantità di un numero intero prelevato dal db PHP 3
R Nome input testo+variabile PHP 1
L input (rilevare cambio dati) PHP 3
S riflettere valore di campo input range in live Javascript 0
L input dati con inser into select ? PHP 4
M Compilazione automatica campi in input stessa pagina PHP 0
A attributo "min" per input gestione date PHP 8
F Steps campo input field Javascript 1
C input in sostituzione della select PHP 2
C [RISOLTO]Inserimento variabile php in input html PHP 20
L input (controllo se è stato modificato o no). PHP 1
W Modificare il Type di un Input box in javascript ovunque si trovi Javascript 0
S [PHP] Recupero nome immagine da Form con input file PHP 3
T [PHP] Autocompilazione input multiple da una select PHP 1
L [Javascript] input variabili di scrittura con canvas Javascript 2
MarkRed Come indicare, in una maschera, il primo controllo d'input, tipo "SetFocus" jQuery 9
L [Javascript] Select option in campi input Javascript 4
elpirata [RISOLTO][Javascript] Datapicker e autocompletamento campo input Javascript 2

Discussioni simili