• 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
Succ.
Primo Prec. 2 di 3 Succ. Ultimo
P

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
  • 13 Ago 2012
  • #21
borgo italia ha scritto:
e passando sopra il link (dovresti saperlo) nel bw vedrà
http: // siti/Biblionet%20test%20MySql / register.php ? passkey=abcdefghilmnopqrs
Clicca per allargare...

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.044
150
63
PR
www.borgo-italia.it
  • 13 Ago 2012
  • #22
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-->
 
P

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
  • 13 Ago 2012
  • #23
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 = "frigerio.alessio@fastwebnet.it";
            	$mail->Password = "Puff01974";

            	// 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</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?
 
P

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
  • 13 Ago 2012
  • #24
Ho dimenticato di eliminare i dati in chiaro di accesso alla casella di posta!!!

Vabbè mi toccherà cambiarla!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 13 Ago 2012
  • #25
ciao
scusa, non ho capito cosa ti sta succedendo
 
P

Paperino78

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

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
  • 13 Ago 2012
  • #28
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.044
150
63
PR
www.borgo-italia.it
  • 14 Ago 2012
  • #29
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 = "frigerio.alessio@fastwebnet.it";
                $mail->Password = "Puff01974";
                // 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>");//??? 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?
 
P

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
  • 14 Ago 2012
  • #30
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.044
150
63
PR
www.borgo-italia.it
  • 14 Ago 2012
  • #31
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.044
150
63
PR
www.borgo-italia.it
  • 14 Ago 2012
  • #32
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.044
150
63
PR
www.borgo-italia.it
  • 14 Ago 2012
  • #33
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: 14 Ago 2012
P

Paperino78

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

Paperino78

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

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.044
150
63
PR
www.borgo-italia.it
  • 14 Ago 2012
  • #37
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)?
 
P

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
  • 14 Ago 2012
  • #38
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.044
150
63
PR
www.borgo-italia.it
  • 14 Ago 2012
  • #39
ciao
Allora, dopo il var_dump questo è l'errore
Clicca per allargare...
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: 14 Ago 2012
P

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
  • 14 Ago 2012
  • #40
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.
 
Prec.
  • 1
  • 2
  • 3
Succ.
Primo Prec. 2 di 3 Succ. Ultimo
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
411
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
3K
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?