MRW.it Forum
  • Home
  • Forum
  • Fare Web
  • PHP

Miglioramento controlli su input

  • Creatore Discussione Creatore Discussione Paperino78
  • Data di inizio Data di inizio 8 Ago 2012
Prec.
  • 1
  • 2
  • 3
Primo Prec. 3 di 3
borgo italia

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 14 Ago 2012
  • #41
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
 
P

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
  • 14 Ago 2012
  • #42
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
 
P

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
  • 17 Ago 2012
  • #43
Ciao borgo, hai qualche suggerimento?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 17 Ago 2012
  • #44
ciao
echo "<li><a href='register2.php'>Registrati</a></li>";
si trova semplicemente la pagina di registrazione utente nuovo.....
Clicca per allargare...
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
?
 
P

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
  • 17 Ago 2012
  • #45
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:
 
P

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
  • 17 Ago 2012
  • #46
Ho risooooooooooooooltoooooooooooooooo :elvis::elvis::elvis::mavieni::mavieni::mavieni:
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
 
H

hackersatifal

Utente Attivo
9 Ago 2012
238
0
0
  • 17 Ago 2012
  • #47
Paperino78 ha scritto:
Ho risooooooooooooooltoooooooooooooooo :elvis::elvis::elvis::mavieni::mavieni::mavieni:
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
Clicca per allargare...

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

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
  • 17 Ago 2012
  • #48
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?
 
H

hackersatifal

Utente Attivo
9 Ago 2012
238
0
0
  • 17 Ago 2012
  • #49
Paperino78 ha scritto:
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?
Clicca per allargare...

Inserisci anche la pagina di registrazione per fare capire la situazione!
 
P

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
  • 17 Ago 2012
  • #50
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 ("admin@sito.com","Sito");		//Inserire la mail dell'amministratore ed il nome del sito
    				$mail->AddReplyTo("noreply@sito.com","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>
 
P

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
  • 18 Ago 2012
  • #51
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.044
150
63
PR
www.borgo-italia.it
  • 18 Ago 2012
  • #52
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?
 
P

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
  • 18 Ago 2012
  • #53
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.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 18 Ago 2012
  • #54
ciao
errore di copy/paste
 
P

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
  • 18 Ago 2012
  • #55
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.044
150
63
PR
www.borgo-italia.it
  • 18 Ago 2012
  • #56
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
 
P

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
  • 19 Ago 2012
  • #57
borgo italia ha scritto:
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
Clicca per allargare...


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.
 
P

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
  • 21 Ago 2012
  • #58
Ragazzi, parto per le ferie, ci si sente a settembre. Buone vacanze a tutti.
 
Prec.
  • 1
  • 2
  • 3
Primo Prec. 3 di 3
Devi accedere o registrarti per poter rispondere.

Discussioni simili

[Offro] Correzione e miglioramento SEO di qualsiasi tipologia di sito
  • xone
  • 7 Mag 2017
  • Offerte e Richieste di Lavoro e/o Collaborazione
Risposte
2
Visite
1K
Offerte e Richieste di Lavoro e/o Collaborazione 9 Mag 2017
xone
[offro] Creazione e miglioramento sito Wordpress, prezzi modici!
  • TheGamer
  • 23 Mag 2016
  • Offerte e Richieste di Lavoro e/o Collaborazione
Risposte
0
Visite
1K
Offerte e Richieste di Lavoro e/o Collaborazione 23 Mag 2016
TheGamer
Aumento follower su Twitter = miglioramento del posizionamento?
  • braccobaldo
  • 12 Nov 2014
  • SEO e Posizionamento
Risposte
7
Visite
2K
SEO e Posizionamento 17 Ago 2017
andrea755
A
[Vendo] Incremento followers Google PLUS (+1, cerchie) per miglioramento SEO
  • promuovimi
  • 4 Mar 2014
  • Annunci servizi di Social Media Marketing
Risposte
0
Visite
1K
Annunci servizi di Social Media Marketing 4 Mar 2014
promuovimi
Aiuto miglioramento funzione per inserimento BBCode in textarea
  • Sevenjeak
  • 11 Gen 2013
  • Javascript
Risposte
1
Visite
2K
Javascript 14 Gen 2013
criric
B
funzione .nl2br e miglioramento script
  • bit_dreamer
  • 5 Ott 2007
  • PHP
Risposte
1
Visite
1K
PHP 8 Ott 2007
Eliox
K
Personalizzazione menu e controlli
  • Kromax2000
  • 24 Gen 2025
  • MS Access
Risposte
0
Visite
372
MS Access 24 Gen 2025
Kromax2000
K
K
allineare controlli in un div
  • Kelly
  • 11 Ago 2014
  • HTML e CSS
Risposte
3
Visite
1K
HTML e CSS 12 Ago 2014
Max 1
M
Effettuare i controlli di obbligatorietà lato server e, per quanto possibile, di tipo.
  • m4rte
  • 12 Apr 2014
  • PHP
Risposte
0
Visite
1K
PHP 12 Apr 2014
m4rte
M
M
Controlli array
  • Mr. PHP
  • 30 Mar 2014
  • PHP
Risposte
0
Visite
2K
PHP 30 Mar 2014
Mr. PHP
M
H
Controlli form
  • Hackx
  • 18 Feb 2014
  • jQuery
Risposte
0
Visite
1K
jQuery 18 Feb 2014
Hackx
H
H
[risolto] Controlli form iscrizione
  • Hackx
  • 15 Ott 2013
  • PHP
Risposte
16
Visite
2K
PHP 24 Ott 2013
Hackx
H
X
Errore nei controlli!
  • XMatt64
  • 16 Giu 2013
  • PHP
Risposte
5
Visite
2K
PHP 16 Giu 2013
XMatt64
X
F
Controlli form per Registrazione utenti
  • FireinCairo
  • 21 Feb 2013
  • PHP
Risposte
9
Visite
3K
PHP 28 Feb 2013
alessandro1997
M
Problema controlli MySQL ( XOR )
  • Mr. PHP
  • 31 Gen 2013
  • MySQL
Risposte
1
Visite
1K
MySQL 25 Feb 2013
Longo8
S
Controlli variabili php
  • ste902
  • 10 Gen 2013
  • PHP
Risposte
11
Visite
2K
PHP 10 Gen 2013
alessandro1997
Momento di lapsus... Controlli su user e pwd e campo booleano...
  • Emix
  • 29 Ott 2012
  • PHP
Risposte
5
Visite
1K
PHP 31 Ott 2012
Emix
O
Controlli come parametri
  • ovlas
  • 23 Apr 2012
  • Javascript
Risposte
3
Visite
2K
Javascript 24 Apr 2012
Vale2
S
Eseguire controlli sul form delle foto
  • searedone
  • 19 Gen 2012
  • PHP
Risposte
17
Visite
2K
PHP 23 Gen 2012
searedone
S
P
far sparire un tasto con i controlli
  • paperinik4
  • 21 Ott 2011
  • PHP
Risposte
1
Visite
2K
PHP 21 Ott 2011
alessandro1997
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?