Miglioramento controlli su input

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
e passando sopra il link (dovresti saperlo) nel bw vedrà
http: // siti/Biblionet%20test%20MySql / register.php ? passkey=abcdefghilmnopqrs

Si questo direi che lo so :mavieni::mavieni: quanto all'errore era una graffa mancante!! A volte si diventa matti per nulla e la soluzione la si ha davanti al naso.

Per ora tutto ok l'unica cosa è che le accentate non mi appaiono. Ma direi che è un dettaglio. Tu sai dirmi cosa devo aggiungere?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
come hai impostato la tua pagina?
se è così (a parte il php) prova a dargli charset=iso-8859-1

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<!-- eccetera-->
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
La codifica è sistemata, invece visto che i probleminon finiscono mai, sto testando il codice che mihai consigliato e che abbiamo visto fino a qualche post fa, e purtroppo una volta inseriti i dati e cliccato su registrati, non ho nessun avviso del buon fine della registrazione, non miarriva nessuna mail, e non mi da nessun avviso sulle voci mancanti del form. :incazz2::incazz2::incazz2:

Ma! Devo riprendere in mano tutto, uffffff.comunque posto qua i lcodice completo.
questo è il modulo conil form
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 'header.php';
//$testo = testo da verificare, $mi= lunghezza minima del testo, $ma= lunghezza massima
function ver_testo($testo,$mi,$ma){
    if(preg_match('/^[A-Za-z0-9]{$mi,$ma}$/', $testo)){
        //testo ok
        return TRUE;
    }else{
        return FALSE;
    }
}
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', '$password2', '$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_once ('class.phpmailer.php');
                include_once ("class.smtp.php");

            	$mail = new PHPmailer();
            	$mail->IsSMTP();
            	$mail->isHtml(true);
                //$mail->SMTPDebug = true;

            	//Dati di collegamento al server che su aruba non servono

            	$mail->Host = "smtp.fastwebnet.it";
            	$mail->Port = 25;

            	$mail->SMTPAuth = true;
            	$mail->Username = "[email protected]";
            	$mail->Password = "Puff01974";

            	// 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</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";
                	//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
           		}

		} else {
			echo "ERRORE di comnnesione, ti preghiamo di riprovare più tardi<br />";
			echo "<meta http-equiv='Refresh' content='3; URL=index.php'>";

		}
    }
}
}
?>
                <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="index.php">esci</a></td>
                        </tr>
                    </table>
                </form>

questo il config
PHP:
<?php
	function connect() {
		mysql_connect("localhost","root","");
		mysql_select_db ("biblionet");
	}
		
?>
questo l'header
PHP:
<?php
    include 'config.php';
    connect();
	session_start();
?>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Registrazione-Login Utente</title>
<script type="text/javascript" src="js/jquery.validate.js"></script>
<script type="text/javascript" src="js/jquery.validate.min.js"></script>
<script type="text/javascript" src="js/controlloregistrazione.js"></script>
</head>
<!-- Apro il body ma non lo chiudo in quanto lo collegherò al file index.php-->
<body>

<div id="menu">
		<ul>
        	<li><a href="index.php">Home</a></li>
            <?php IF (isset($_SESSION['utente'])){
				
					echo "<li><a href='login.php?azione=logout'>Esci</a></li>";
				
				} else {
					
					echo "<li><a href='register2.php'>Registrati</a></li>";
					echo "<li><a href='login.php?azione=login'>Login</a></li>";
					
					} ?>            
        </ul>    



</div>

index
PHP:
<?php

	include 'header.php';

?>

	<div id="wrapper">

	<p><?php if (isset($_SESSION['utente'])){

		echo "Ciao<strong>" .$_SESSION['utente']."</strong>";

			} else {

				echo "Ciao, <a href='register2.php'>Registrati</a>";

				}	?>
    </p>


</div>

</body>
</html>

e login
PHP:
<?php

	include 'header.php';

?>

	<div id="wrapper">
	
    	<?php
        	
			$p = $_GET['azione'];
			
			// Azione per il login
			if($p == "login"){
				
				if(!isset($_POST['invia'])){ ?>
			
					<form method="post" action="#" id="formlogin">
                    
						<label for="username">Username</label>
						<input type="text" name="username" id="username" /><br>                    
						<label for="password">Password</label>
						<input type="password" name="password" id="password" /><br>
						<input type="submit" name="invia" id="login" value="Accedi" />
                    
					</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= index.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= index.php");				
			
			}
			
			
			
		?>
		


	</div>

</body>
</html>

Mi sai dare qualche dritta?
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Dopo aver scritto il codice insieme a te e verificato che tutto sia correttoalmeno nella sintassi, quando lo testo con xampp non ottengo alcun messaggio di errore o di conferma all'inserimento dei dati nel form. Ne un avviso ne un popup, nulla, e non invia nessuna mail. Ti confermo che le impostazioni di xampp sono corrette visto che sto facendo diverse prove anche con un altro file simile a quello chiamato register2.php e le mail le invio e ricevo tranquillamente.
Inoltre ho messo anche l'smtpdebug su true, ma non ricevo nulla e non ottengo alcun errore. Quindi ho postato i quattro file che sto utilizzando nel caso potessero essere utili per capire dove sta il problema. Lo so che stresso, e rompo le "scatole" ma su questo forum, ho trovato disponibilità, moltissimo materiale e guide, e tu mi stai seguendo dall'inizio.
Tutto sto casino per avere un controllo migliore su gli input lato server.

Grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
stai lavorando in locale? se si c'è qualcosa che non mi torna nell'smtp fastwb (due anni fa avrevo anchìio fasrweb) e per spedire da locale (non guardare i nomi delle variabili tu usi $mail) usavo

PHP:
$Emailmessaggio->IsSMTP();  // send via SMTP
$Emailmessaggio->Host     = "smtp.fastwebnet.it"; // SMTP servers
$Emailmessaggio->SMTPAuth = true;     // turn on SMTP authentication
$Emailmessaggio->Username = "lina.macchiavelli";  // SMTP username
$Emailmessaggio->Password = "Erika1974"; // SMTP password
senza indicare porta o debug
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ti dico che le stesse impostazioni che ho messo prima le uso tranquillamente con un altro file php che non è altro che il vecchio modello, con verifica utenti in locale senza i controlli che tu mi hai consigliato. Poi che la porta io la specifichi sicuramente è un di +. Però di posso garantire che se utilizzo il form di partenza che ho postato qua all'inizio, tutto fila liscio. Controlli corretti, verifica mail corretta, avvisi su errori, invio la mail, ricevo e completo la registrazione. Poi siicuramente è ancora spartano e grezzo ma ho tantissime cose da fare che sto diventando scemo. C'è qualcosa che posso fare?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ho dato un occhio, ci sono alcune imperfezioni che ho corretto.
leggi i commenti
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"> 
<title>conferma registrazione</title>
</head>
<body>
<?php
include_once 'header.php';
//$testo = testo da verificare, $mi= lunghezza minima del testo, $ma= lunghezza massima
function ver_testo($testo,$mi,$ma){
	if(preg_match('/^[A-Za-z0-9]{$mi,$ma}$/', $testo)){
		//testo ok
		return TRUE;
	}else{
        return FALSE;
    }
}
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', '$password2', '$email')";
            if(mysql_query($inviautentitemp)){
                //prepari l'email di conferma da inviare
                //Includo la classe phpmailer
                include_once ('class.phpmailer.php');
                //include_once ("class.smtp.php");//no ci pensa la phpmailler a richiamarsela se serve
                $mail = new PHPmailer();
                $mail->IsSMTP();
                $mail->isHtml(true);
                //$mail->SMTPDebug = true;
                //Dati di collegamento al server che su aruba non servono
                $mail->Host = "smtp.fastwebnet.it";
                $mail->Port = 25;//questa non dovrebbe servire
                $mail->SMTPAuth = true;
                $mail->Username = "[email protected]";
                $mail->Password = "Puff01974";
                // 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>");//??? a che ti serve questa??? non hai immagini io la toglierei
                $mail->AltBody = "Il tuo client di posta non è settato per la ricezione in HTML";
                $mail->Subject = "Conferma di registrazione al sito www.sito.com";
                //poi prova a modificare il testo da inviare
				$testo="<p>Ecco il tuo codice di attivazione</p><br />";
				$testo.="<p>Clicca sul link per confermare la registrazione</p><br />";
				$testo.="<a href=\"http://siti/Biblionet%20test%20MySql/register2.php?passkey=$codiceconferma\">Clicca qui</a>";
				$mail->Body =$testo;
				//oppure prova con un unica stringa
				/*
				$mail->Body ="<p>Ecco il tuo codice di attivazione</p><br />
							  <p>Clicca sul link per confermare la registrazione</p><br />
							  <a href=\"http://siti/Biblionet%20test%20MySql/register2.php?passkey=$codiceconferma\">Clicca qui</a>";
				*/
				//$mail->Body = "<p>Ecco il tuo codice di attivazione</p><br />";
                //$mail->Body .= "<p>Clicca sul link per confermare la registrazione</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";
                    //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
				}//chiudo if/else invio
				echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
			} else {
            	echo "ERRORE di comnnesione, ti preghiamo di riprovare più tardi<br />";
            	echo "<meta http-equiv='Refresh' content='3; URL=index.php'>";
			}//chiudo if/else errore sul db
		}//chiudo if/else username-email dulicato
	}else{//questo manca
		//mostro avviso e ritorno
		echo $ok_ko;
		echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
	}//chiudo if/else $ok_ko
	//poi tutti i echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
	//potresti eliminarli e metterne un unico qui
	
}//chiudo if post
?>
                <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="index.php">esci</a></td>
                        </tr>
                    </table>
                </form>
</body>
</html>

non vedo ragioni per cui non dovrebbe funziare
p.s.
in remoto senza l'smtp funzia?
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Buongiorno! Ho seguito le tue istruzioni e corretto alcune righe, direi che siam sulla strada buona, ora appaiono gli avvisi ma purtroppo inserendo i dati di registrazione non mi riconosce come corrette sia la pass sia lo username nonostante rispettino le condizioni. Mi spieghi cosa significa
PHP:
URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'
mi consigli di metterlo alla fine del processo di verifica ma a che serve?? Potrebbe essere una sorta di redirect al form nel caso non vengano inserite correttamente le voci o se invece sono corrette?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
PHP:
echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
è un redirect alla pagina in cui sei (pagina corrente) il
($_SERVER['PHP_SELF'])
legge il nome della pagina corrente, per cui se tu dovessi cambiare nome alla pagina non importa che tu lo corregga
se guardi con visualizza sorgente del bw vedrai
HTML:
<meta http-equiv='Refresh' content='3; URL=pagina_in_cui_sono.php'>
al posto del meta potresti usare l'header location o l'header refressh, ma l'header o viene prima di qualsiasi output html (e non è questo caso) o devi ridirigere il flusso
come giustamente hai scritto tu se vuoi invece riinviare ad un altra pagina devi indicarne il nome (e se serve il percorso ed un eventuale query stringa es. ?id=pinco)
PHP:
echo "<meta http-equiv='Refresh' content='3; URL=index.php'>";
poi, penso che tu lo sappia, il content ='3 sono i secondi di attesa prima di essere reiindirizzati, può andare da 0 in su

poi se metterne uno in fondo o tante sparse è solo un fatto per non ripetere n volte la stessa istruzione
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
dimenticavo
se non ti riconosce user e pass do un occhio alla funzione di controllo, non vorrei aver sbagliato il pattern '/^[A-Za-z0-9]{$mi,$ma}$/'
postami cosa hai usato per pass e user
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
hai ragione, modifica la function ver_testo

PHP:
<?php
function ver_testo($testo,$mi,$ma){
    $pattern="/^[a-zA-Z0-9]{".$mi.",".$ma."}$/";//non prende direttamente il min e il max
	if(preg_match($pattern, $testo)){
        //testo ok
        return TRUE;
    }else{
        return FALSE;
    }
}

//verifica
$testo_1="abraKadabrA2012";//ok
if(ver_testo($testo_1,6,18)){echo "password $testo_1 consentita<br />";}else{echo "password NON consentita<br />";}
$testo_1="abraKadab**2012";//caratteri non ammessi
if(ver_testo($testo_1,6,18)){echo "password $testo_1 consentita<br />";}else{echo "password NON consentita<br />";}
$testo_1="abra";//troppo corta
if(ver_testo($testo_1,6,18)){echo "password $testo_1 consentita<br />";}else{echo "password NON consentita<br />";}
$testo_1="abraKadab2012abraKadab2012";//troppo lunga
if(ver_testo($testo_1,6,18)){echo "password $testo_1 consentita<br />";}else{echo "password NON consentita<br />";}
?>
 
Ultima modifica:

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Grazie!, perfetto ora funziona, verifica campi corretti, mi invia la mail senza problemi, l'unico intoppo è che al momento di cliccare sul link di attivazine mi aprte la pagina ma non mi da nessun avviso di attivazione avvenuta e la pagina di login che ho
PHP:
<?php

	include 'header2.php';

?>

	<div id="wrapper">
	
	    <?php
        	
			$p = $_GET['azione'];
			
			// Azione per il 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>

mi da errore sulla riga
PHP:
$p = $_GET['azione'];
ho provato a fare if(isset($_GET['azione'])) ma senza risultati, mi dice che la variabile $p non è dichiarata.

Comunque mille grazie ancora.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se non ti piglia il get
PHP:
$p = $_GET['azione'];
devi verificare la pagina di partenza dove probabilmente avrai

HTML:
<a href="pagina.php?azione=login">a</a>
<a href="pagina.php?azione=logout">b</a>
verifica es. se nel link tu non abbia scritto ?Azione= con la a maiuscola
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
ciao
se non ti piglia il get
PHP:
$p = $_GET['azione'];
devi verificare la pagina di partenza dove probabilmente avrai

HTML:
<a href="pagina.php?azione=login">a</a>
<a href="pagina.php?azione=logout">b</a>
verifica es. se nel link tu non abbia scritto ?Azione= con la a maiuscola

E purtroppo no questo è il codice che fa riferimento alla pagina html
HTML:
<div id="menu">
		<ul>
        	<li><a href="index2.php">Home</a></li>
            <?php IF (isset($_SESSION['utente'])){
				
					echo "<li><a href='login2.php?azione=logout'>Esci</a></li>";
				
				} else {
					
					echo "<li><a href='register2.php'>Registrati</a></li>";
					echo "<li><a href='login2.php?azione=login'>Login</a></li>";
					
					} ?>            
        </ul>    



</div>
come vedi la a è minuscola!
Ma poi perchè nell'altro file php nessun problema mentre con questo si?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
metti un var_dump

PHP:
<?php
//è questa la pag login2.php ?
var_dump($_GET['azione']);    
$p = $_GET['azione'];
// Azione per il login
if($p == "login"){
//.....
?>
in questo modo vedi se è colpa di $p (improbaile) o se il get non viene trasmesso (molto probabile)
poi
PHP:
<?php
if (isset($_SESSION['utente'])){
	echo "<li><a href='login2.php?azione=logout'>Esci</a></li>";
} else {
	echo "<li><a href='register2.php'>Registrati</a></li>";
	echo "<li><a href='login2.php?azione=login'>Login</a></li>";				
}
?>
qundo nel bw passi sopra il link per login2 nella barra di stato vedi
http://...../login2.php?azione=logout (o login)?
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Allora, dopo il var_dump questo è l'errore
HTML:
string(5) "login"

mentre passando sopra il mouse su i llink che mi dici
PHP:
 <?php
if (isset($_SESSION['utente'])){
    echo "<li><a href='login2.php?azione=logout'>Esci</a></li>";
} else {
    echo "<li><a href='register2.php'>Registrati</a></li>";
    echo "<li><a href='login2.php?azione=login'>Login</a></li>";                
}
?>

appare il login.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
Allora, dopo il var_dump questo è l'errore
no il contrario se ti da
string(5) "login"
vuol dire che la querystringa viene trasmessa e ricevuta come dovrebbe, quindi è da capire perchè ti dia $p non definita

prova
PHP:
<?php
var_dump($_GET['azione']);//questo abbiamo visto che va bene 
$p = $_GET['azione'];
var_dump($p);// qui cosa ti risulta? anche se mi sembra un assurdo che non si definisca
// Azione per il login
if($p == "login"){ 
//....
?>
 
Ultima modifica:

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Allora la stringa è la stessa. Piuttosto come detto prima, quando clicco sul link via mail mi apre la pagina correttamente ma non ottengo alcun avviso. E comunque l'errore che mi da al momento del login è
HTML:
Undefined index: azione

Non vedo nel mio db i dati inseriti nel db utenti, quindi non mi sposta i dati dal utenti_temp ad utenti. Che forse le voci siano da modificare dopo che tu mi hai dato altre istruzioni? Visto che il modello register2 è diverso dal register probabilmente sono da modificare anche i codici degli altri file php in funzione di quello che ho inserito con la tua guida. Non saprei.
 
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
G Input checkbox in CSS HTML e CSS 0
L Ripetere Campi disabilitando input in riferimento ad un valore della select jQuery 0
otto9due Input text: accetta solo numeri e non può essere vuoto. Javascript 9
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
F Leggere e aggiornare dati di campi <input text> su file di test PHP 0
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

Discussioni simili