[RISOLTO]controllo mail se esiste

Marco196943

Utente Attivo
19 Ago 2012
66
0
0
Ciao!!!! una piccola domanda..
PHP:
<?php 
require_once('../Connections/utenti_higlands.php'); 
//..... 
if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){ 
        echo "non è un indirizzo email"; 
        //reindirizzi 
    }else{ 
        if(mysqli_num_rows(mysqli_query("SELECT email FROM login WHERE email='".$_POST['email']."'")) > 0){ 
            echo "indirizzo esistente, devi cambiare"; 
            //reindirizzi 
        } 
    } 
//.... 
?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento senza titolo</title>
 <link href="css/master_login.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" language="javascript">
var keylist = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
function generatepassword(plength){
temp = '';
for (i=0; i<plength; i++)
temp += keylist.charAt(Math.floor(Math.random()*keylist.length));
return temp;
}
function populateform(enterlength){
document.genera.password.value = generatepassword(enterlength);
}
</script>
</head>
<body>

<form action="../form/invio_pass_utente_higlands.php"  method="POST"  id="login" name="genera">
<h1>Nuovo Utente</h1>
 <fieldset id="inputs">
 <input id="nome" type="text" name="nome" placeholder="Nome"  value="<?php $nome; ?>" size="32" />
 <input id="cognome" type="text" name="cognome" placeholder="Cognome"  value="<?php $cognome; ?>" size="32" />
 <input id="telefono" type="text" name="telefono" placeholder="Telefono"  value="<?php $telefono; ?>" size="32" />
 <input id="tipo_doc" type="text" name="tipo_doc" placeholder="Tipo documento"  value="<?php $tipo_doc; ?>" size="32" />
 <input id="num_doc" type="text" name="num_doc"  placeholder="Numero del tuo documento" value="<?php $num_doc; ?>" size="32" />
 <input id="email" type="text" name="email" placeholder="E-mail"  value="<?php $email; ?>" size="32" />
 <input  id="password" type="text" name="password" placeholder="Genera password"  value="<?php $password; ?>" size="32" />
     
  </fieldset>
   <fieldset id="actions">
   <input type="button" id="button" value="Genera Password" onclick="populateform(6)">
     <input type="submit"  id="submit" value="Inserisci record" /><br /><br />
<br /><br />


     <a href="xxxxxxxxxx"> Torna all'admin</a>
  </fieldset>
   <input type="hidden" name="MM_insert" value="genera" />
</form>
<p>&nbsp;</p>
</body>
</html>

Perchè non mi dice che l'email è gia presente nel db????
questo l'ho trovato nel vostro forum:)

Grazie mille
 
ciao
piccolo dubbio:
la parte php che hai scritto è nella stessa pagina del form?

se no nella pagina ../form/invio_pass_utente_higlands.php cui invii (action="../form/invio_pass_utente_higlands.php") i dati hai la verifica dell'email?
 
Salve Borgo l'altra pagina è

PHP:
<?php 

//inizio" 
require_once('../Connections/utenti_higlands.php'); 
//libreria richiamata correttamente"; 

$insertSQL = "INSERT INTO login  
                  SET telefono = '" . addslashes($_POST['telefono']) . "',  
                      tipo_doc= '" . addslashes($_POST['tipo_doc']) . "',  
                      num_doc= '" . addslashes($_POST['num_doc']) . "',  
                      email= '" . addslashes($_POST['email']) . "',  
                      password= '" . addslashes($_POST['password']) . "',  
                      nome= '" . addslashes($_POST['nome']) . "',  
                      cognome = '" . addslashes($_POST['cognome']) . "'";      //creazione query"; 
    mysql_select_db($database_utenti_higlands, $utenti_higlands);
 //selezione db"; 
    $Result1 = mysql_query($insertSQL, $utenti_higlands) or die(mysql_error());
   //esecuzione query";
    

?>
<?php

	//Creato da Mel Riccardo
	//v 2.0
	//http://www.targetweb.it 
	//[email protected]
	//Vietata ogni tipo di riproduzione, distribuzione senza previa richiesta al programmatore

	//Includo Variabili
	include('config_email.php');

	
	session_start();
	
	$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$email = $_POST['email'];
$telefono = $_POST['telefono'];
$tipo_doc = $_POST['tipo_doc'];
$num_doc = $_POST['num_doc'];
$password = $_POST['password'];

		$ip			=	$_SERVER['REMOTE_ADDR'];



	//Verifica antispam 
	
	if($_POST['fred2'] != "") {
		echo('<p style="color: #000; font-size: 25px; font-weight: bold;">Sei uno spambot o stai usando tecniche di spam indesiderate, spiancenti ma ci siamo attrezzati. La mail non e stata inviata</p>');    
	}
	
	else {



//Invio la mail

$to 		= $tua_email;
$sbj 		= "Invio User pass per - $nome $cognome";
$msg 		= "
<html>
<head>
<style type='text/css'>
body{
	font-family:'Lucida Grande', Arial;
	color:#333;
	font-size:15px;
}
</style>
</head>
<body>
<table width='600' border='0' cellspacing='0' cellpadding='5'>
  <tr>
    <td width='121' align='right' valign='baseline'><strong>Nome:</strong></td>
    <td width='459'>$nome</td>
  </tr>
  <tr>
    <td width='121' align='right' valign='baseline'><strong>Cognome:</strong></td>
    <td width='459'>$cognome</td>
  </tr>

   
  <tr>
    <td align='right' valign='baseline'><strong>User:</strong></td>
    <td>$email</td>
  </tr>

  
  <tr>
    <td align='right' valign='baseline'><strong>Password:</strong></td>
    <td>$password</td>
  </tr>
       <tr>
    <td align='right' valign='baseline'><strong>IP Tracciato (per motivi di sicurezza):</strong></td>
    <td>$ip</td>
  </tr>
  
   <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  
    <tr>
    <td>&nbsp;</td>
    <td><small>Powered by mdstudioweb.com </small></td>
  </tr>

</table>
</body>
</html>
";

$from 		 = $email;
$headers	 = 'MIME-Version: 1.0' . "\n";
$headers	.= 'Content-type: text/html; charset=iso-8859-1' . "\n"; //In certi casi con aruba se non viene formattata eliminare il \r per i permessi come ho fatto in questo caso
$headers 	.= "From: $from";


mail($to,$sbj,$msg,$headers); //Invio mail principale.

//Fine mail inviata a me




//Inizio email di conferma
$toClient		 = $email;
$msgClient		 = "
<html>
<head>
<style type='text/css'>
body{
	font-family:'Lucida Grande', Arial;
	color:#333;
	font-size:15px;
}
</style>
</head>
<body>

<h1>Flaminia Nobili</h1>
<br />

  <p>Gentile, $nome</p>
  <p>Come da sua richiesta, le inviamo i dati per l'accesso all'istituto Higlands Institute, dove potrà effettuare l'accesso utilizzando come: Username $email, e come password $password.
  Restiamo a sua disposizione per qualsiasi informazione distinti saluti
  <br />
Flaminia Nobili.</p>  
   
  
  <br />
  <hr>
  
   <p>Thanks for contact us, $nome</p>
    <p>We received your email. We respond as soon as possible.</p>  

</body>
</html>
";
$fromClient 	 = $tua_email;
$sbjClient		 = "Grazie, $nome ";
$headersClient	 = 'MIME-Version: 1.0' . "\r\n";
$headersClient	.= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headersClient 	.= "From: $fromClient";

mail($toClient,$sbjClient,$msgClient,$headersClient); //mail inviata al cliente
 echo 'I dati sono stati inviati correttamente <a href="../login/lista_higland.php">Torna alla lista</a>';
//Fine email di conferma

//Resetto errori

session_destroy();
exit;

} //fine else del controllo antispam



?>
e tutto è ok volevo solo dare dei controlli e mi sono in battuto in varie discussioni ma non è che ci ho capito poi tanto:o
 
ciao
intanto il problema del controllo, che è come immaginavo:
ti schematizzo le due situazioni
1) form e invio nella stessa pagina
PHP:
<?php
if(isset($_POST['submit'])){
	//ricevo i vari $_POST
	//CONTROLLO tutti i valori ricevuti
	if($errori=="SI"){
		//non invio email e rimano al form pulito
	}else{
		//invio l'email e riinvio dove vogli
	}
}

?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<!-- campi di input e submit -->
</form>

2) form nella pag form.php e invio nella pag invio.php
pag. form.php
HTML:
<form action="invio.php" method="post">
<!-- campi di input e submit -->
</form>
pag. invio.php
PHP:
<?php
if(isset($_POST['submit'])){
	//ricevo i vari $_POST
	//CONTROLLO tutti i valori ricevuti
	if($errori=="SI"){
		//non invio email e rimando alla pag. form.php
	}else{
		//invio l'email e riinvio dove voglio
	}
}
?>
poi veniamo all'uso della funzione mail()
se gli indirizzi email sono del tipo pinco @gmail.com o hotmail o libero o altri simili hai 99 probabilità su 100 che l'email non venga ricevuta anche se l'invio è ok.
(problema che trovi in molte discussioni) quindi ti conviene passare alla classe phpmailler o simile, le probabilità di non ricezione se come fai tu invii l'email in formato html
 
ok la seconda iptesi mi sembra più ordinata, quindi ho fatto così e che dios me aiuti:

PHP:
<?php 

//inizio" 
require_once('../Connections/utenti_higlands.php'); 

if(isset($_POST['submit'])){ 
    //ricevo i vari $_POST 
    //CONTROLLO tutti i valori ricevuti 
    if($errori=="SI"){ 
     header('Location: http://www.miosito.com/login/inserimento_utente_higlnads.php');
    }else{ 
        //invio l'email e riinvio dove voglio 
    } 
} 
//libreria richiamata correttamente"; 

$insertSQL = "INSERT INTO login  
                  SET telefono = '" . addslashes($_POST['telefono']) . "',  
                      tipo_doc= '" . addslashes($_POST['tipo_doc']) . "',  
                      num_doc= '" . addslashes($_POST['num_doc']) . "',  
                      email= '" . addslashes($_POST['email']) . "',  
                      password= '" . addslashes($_POST['password']) . "',  
                      nome= '" . addslashes($_POST['nome']) . "',  
                      cognome = '" . addslashes($_POST['cognome']) . "'";      //creazione query"; 
    mysql_select_db($database_utenti_higlands, $utenti_higlands);
 //selezione db"; 
    $Result1 = mysql_query($insertSQL, $utenti_higlands) or die(mysql_error());
   //esecuzione query";
    

?>
<?php

	//Creato da Mel Riccardo
	//v 2.0
	//http://www.targetweb.it 
	//[email protected]
	//Vietata ogni tipo di riproduzione, distribuzione senza previa richiesta al programmatore

	//Includo Variabili
	include('config_email.php');

	
	session_start();
	
	$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$email = $_POST['email'];
$telefono = $_POST['telefono'];
$tipo_doc = $_POST['tipo_doc'];
$num_doc = $_POST['num_doc'];
$password = $_POST['password'];

		$ip			=	$_SERVER['REMOTE_ADDR'];



	//Verifica antispam 
	
	if($_POST['fred2'] != "") {
		echo('<p style="color: #000; font-size: 25px; font-weight: bold;">Sei uno spambot o stai usando tecniche di spam indesiderate, spiancenti ma ci siamo attrezzati. La mail non e stata inviata</p>');    
	}
	
	else {



//Invio la mail

$to 		= $tua_email;
$sbj 		= "Invio User pass per - $nome $cognome";
$msg 		= "
<html>
<head>
<style type='text/css'>
body{
	font-family:'Lucida Grande', Arial;
	color:#333;
	font-size:15px;
}
</style>
</head>
<body>
<table width='600' border='0' cellspacing='0' cellpadding='5'>
  <tr>
    <td width='121' align='right' valign='baseline'><strong>Nome:</strong></td>
    <td width='459'>$nome</td>
  </tr>
  <tr>
    <td width='121' align='right' valign='baseline'><strong>Cognome:</strong></td>
    <td width='459'>$cognome</td>
  </tr>

   
  <tr>
    <td align='right' valign='baseline'><strong>User:</strong></td>
    <td>$email</td>
  </tr>

  
  <tr>
    <td align='right' valign='baseline'><strong>Password:</strong></td>
    <td>$password</td>
  </tr>
       <tr>
    <td align='right' valign='baseline'><strong>IP Tracciato (per motivi di sicurezza):</strong></td>
    <td>$ip</td>
  </tr>
  
   <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  
    <tr>
    <td>&nbsp;</td>
    <td><small>Powered by mdstudioweb.com </small></td>
  </tr>

</table>
</body>
</html>
";

$from 		 = $email;
$headers	 = 'MIME-Version: 1.0' . "\n";
$headers	.= 'Content-type: text/html; charset=iso-8859-1' . "\n"; //In certi casi con aruba se non viene formattata eliminare il \r per i permessi come ho fatto in questo caso
$headers 	.= "From: $from";


mail($to,$sbj,$msg,$headers); //Invio mail principale.

//Fine mail inviata a me




//Inizio email di conferma
$toClient		 = $email;
$msgClient		 = "
<html>
<head>
<style type='text/css'>
body{
	font-family:'Lucida Grande', Arial;
	color:#333;
	font-size:15px;
}
</style>
</head>
<body>

<h1>Flaminia Nobili</h1>
<br />

  <p>Gentile, $nome</p>
  <p>Come da sua richiesta, le inviamo i dati per l'accesso all'istituto Higlands Institute, dove potrà effettuare l'accesso utilizzando come: Username $email, e come password $password.
  Restiamo a sua disposizione per qualsiasi informazione distinti saluti
  <br />
Flaminia Nobili.</p>  
   
  
  <br />
  <hr>
  
   <p>Thanks for contact us, $nome</p>
    <p>We received your email. We respond as soon as possible.</p>  

</body>
</html>
";
$fromClient 	 = $tua_email;
$sbjClient		 = "Grazie, $nome ";
$headersClient	 = 'MIME-Version: 1.0' . "\r\n";
$headersClient	.= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headersClient 	.= "From: $fromClient";

mail($toClient,$sbjClient,$msgClient,$headersClient); //mail inviata al cliente
 echo 'I dati sono stati inviati correttamente <a href="http://forum.mrwebmaster.it/login/lista_higland.php">Torna alla lista</a>';
//Fine email di conferma

//Resetto errori

session_destroy();
exit;

} //fine else del controllo antispam



?>
 
Ultima modifica:
ciao
così a naso, mi spiace, ma è da rivedere tutto, stai facendo un po' di confusione
se hai pazienza lunedì ti posto qualcosa.
 
Borgo Buona sera scusami se non ho risposto celermente, un pò di influenza...
mi farebbe molto comodo un tuo aiuto in merito se sei ancora disponibile grazie ancora per l'interesse
 
ciao
cominciamo dal form.
tu metti nei campi di input (uno ad es)
PHP:
<input id="nome" type="text" name="nome" placeholder="Nome"  value="<?php $nome; ?>" size="32" />
a prescindere da dove salta fuori il valore di $nome
la riga deve essere scritta così
PHP:
<input id="nome" type="text" name="nome" placeholder="Nome"  value="<?php echo $nome; ?>" size="32" />
oppure (anche se io preferisco la precedente)
PHP:
<input id="nome" type="text" name="nome" placeholder="Nome"  value="<?= $nome; ?>" size="32" />
poi da quello che capisco tu generi una pass tramite javascript e fai
PHP:
<input  id="password" type="text" name="password" placeholder="Genera password"  value="<?php echo $password; ?>" size="32" />
non puoi passare variabile di js (lato client) a php (lato server), eventualmente al posto del js puoi mettere una funzione php
es.
PHP:
 <?php
 function genera_pass(){
	$pass="";
	$lunga=rand(6,8);//lunghezza della password casuale lunga da 6 a otto caratteri
	for($k=1;$k<=$lunga;$k++){
		$c=rand(0,2);
		if($c==0){//a caso un carattere numerico
			$pass.=(string)rand(0,9);//genero la password numerica
		}elseif($c==1){
			$pass.=chr(rand(65,90));//o un carattere casuale compreso da A-Z
		}else{
			$pass.=chr(rand(97,122));//o un carattere casuale compreso da A-Z
		}
	}
	return (string)$pass;
}
//da cui
?>
<!-- ...-->
<input  id="password" type="text" name="password" placeholder="<?php echo genera_pass();?>"  value="<?php echo genera_pass() ?>" size="32" />
<!-- ...-->
a parte che così l'utente puo cambiarla, io metterei il campo in sola lettura readonly
indicandogli che quella è la sua password e di scriversela da qualche parte

per ora mi fermo qui
 
Grazie Borgo, però non capisco perchè queste differenze nelle variabili, echo non serve per stampare il risultato che passa la variabile? e quindi non si mette alla pagina dove le richiamo? :crying: scusa le domande ma sto andando in confusione...
 
ancora una spiegazione scusami, quindi con
PHP:
<input  id="password" type="text" name="password" placeholder="<?php echo genera_pass();?>"  value="<?php echo genera_pass() ?>" size="32" readonly="readonly" />
non occorre più il bottone genera, lo crea lui ad ogni richiesta di registrazione? ed è normale nelle variabili dove ho aggiunto echo la Notice Undefined variable: ho aggiunto reandoly come da te consigliato, oltre tutte le altre cose:rolleyes:
 
Ultima modifica:
ciao
se provi questo mini script vedi le differenze
PHP:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento senza titolo</title>
</head>
<body>
<!-- 1) non la vedo perche pinco non è stata ancora valorizzata -->
<p>qui stampo la variabile $pinco <b><?php echo $pinco; ?></b></p>
<!-- 2) valorizzo $pinco -->
<?php $pinco="pallino"; ?>
<!-- qui la vedo -->
<p>qui stampo la variabile $pinco <b><?php echo $pinco; ?></b></p>
<!-- 3) e qui scrivo come avevi fatto tu -->
<p>qui stampo la variabile $pinco <b><?php $pinco; ?></b></p>
</body>
</html>
ora che sia in una riga o dentro in input è lo stesso
caso 1)
se la variabile non è valorizzata è vuota o indefinita, quindi php se cerchi di usarla ti da indefinited
come penso che ti diano quelle variabili che ha messo negli input perche non vedo dove vengono valorizzate
caso 2)
qui giustamente avendola valorizzata viene stampata (trasformata in html)
caso 3)
anche se è valorizzata php non sa cosa fare con quella variabile

ricorda che il browser legge SOLO ed ESCLUSIVAMENTE l'html, non php
in pratica l'echo trasforma il valore di $pinco in html e quindi leggibile dal bw
per capire che l'echo non fa altro che trasformare il tutto in html leggibile dal bw
prova
PHP:
<!-- .... -->
<?php $pinco="pallino"; ?>
<p>qui stampo la variabile $pinco <?php echo "<b>$pinco</b>"; ?></p>
vedrai che il risultato non cambia rispetto al caso 2)
l'echo non ha fatto altro che trasformare quello che c'è tra gli apici nell'html
HTML:
<b>pallino</b>

no non serve che tu abbia il genera pass, ogni volta che qualcuno entra nella pagina la pass si genera
 
ho provato lo script e comincio a capire,
dunque leggendo sul sito php, e navigando qua e la ho buttato giù una cosa dimmi se potrebbe funzionare, non capisco bene però phpmailer dove metto i dati del form e come faccio ad inviare una mail di conferma? ps non bruciarmi proprio tutto tutto, apprezza i mie sforzi:o
PHP:
<?php
//verifico le sessioni e apro session start
if (!isset($_SESSION)){session_start();}
?>
<!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">
<title>form contatti</title>
 <link href="css/master_login.css" rel="stylesheet" type="text/css" />
</head>
<body>
<?php
//Inizio l'email
if(isset($_POST['submit'])){//qui il submit
	$messaggio="";// il messaggio è vuoto

	//valori dei post le passo in sessioni
	$_SESSION['nome']=htmlspecialchars(trim($_POST['nome']));
	$_SESSION['cognome']=htmlspecialchars(trim($_POST['cognome']));
	$_SESSION['email']=htmlspecialchars(trim($_POST['email']));
	$_SESSION['telefono']=htmlspecialchars(trim($_POST['telefono']));
	$_SESSION['tipo_doc']=htmlspecialchars(trim($_POST['tipo_doc']));
	$_SESSION['num_doc']=htmlspecialchars(trim($_POST['num_doc']));
	//verifico i vari campi
	if(!isset($_SESSION['nome']) || $_SESSION['nome'] ==""){// il nome
		$messaggio.="<br>il nome è obbligatorio";
	}
	if(!isset($_SESSION['cognome']) || $_SESSION['cognome'] ==""){// il cognome
		$messaggio.="<br>il cognome è obbligatorio";
	}
	// filtro l' email e poi lo verifico
	$_SESSION['email']=filter_var($_SESSION['email'], FILTER_SANITIZE_EMAIL);
	if(!filter_var($_SESSION['email'], FILTER_VALIDATE_EMAIL)){
		unset($_SESSION['email']);
		$messaggio.="<br>non è un indirizzo valido o il campo è vuoto";
	}
	if(!isset($_SESSION['telefono']) || $_SESSION['telefono'] ==""){// il  telefono
		$messaggio.="<br>l'telefono è obbligatorio";
	}
	if(!isset($_SESSION['tipo_doc']) || $_SESSION['tipo_doc'] =="" || strlen($_SESSION['tipo_doc'])<10){// il tipo_doc
		$messaggio.="<br>il tipo_doc è obbligatorio, o almeno 10 caratteri";
	}
	if(!isset($_SESSION['nu,_doc']) || $_SESSION['num_doc'] =="" || strlen($_SESSION['num_doc'])<10){// il numero del documento
		$messaggio.="<br>il tipo_doc è obbligatorio, o almeno 10 caratteri";
	}
	//quindi se non ci sono errori  $messaggio non c'è nulla
	if($messaggio !=""){//altrimenti ci sono errori
		//ritorno al form
		echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
	}else{
		//inizio l'email da inviare
		$destinatario="$mail";//**********************
		$data = "<hr>email inviata il: ".date("d.m.Y h:i:s A")."<br>"; // data e ora dell' invio
		$dasito= "dal sito: ".$_SERVER[HTTP_REFERER]."<br>"; //controllo se arriva dal mio sito
		$mittente="mittente: ".$_SESSION['nome']."<hr>";
		$invio_il_tipo_doc=nl2br($data.$dasito.$mittente.$_SESSION['tipo_doc']);
		//richiamo la classe phpmailer
		require "phpmailler/class.phpmailer.php";
		$Emailmessaggio = new PHPmailer();
		
		$Emailmessaggio->SetLanguage('it','language/'); //italiano
		$Emailmessaggio->IsHTML(true); // email in formato HTML
		$Emailmessaggio->FromName= $_SESSION['nome'];
		$Emailmessaggio->From=$_SESSION['email'];
		$Emailmessaggio->AddAddress($destinatario);
		$Emailmessaggio->Subject=$_SESSION['telefono'];
		$Emailmessaggio->Body=$invio_il_tipo_doc;
		//----invio l'email-------------------------------------------
		if(!$Emailmessaggio->Send()){ //errore 
  			$messaggio="<h2>ERRORE DI TRASMISSIONE, riprova più tardi</h2>";
		}else{ //invio ok
  			$messaggio="<h1>EMAIL CORRETTAMENTE INVIATA</h1>";
		}
		//elimino le sessioni 
		session_destroy();	//e ritorno al form 
		echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
	}
}
?>

<?php
//popolo i campi e correggo errori
if(isset($_SESSION['nome'])){$nome=$_SESSION['nome'];}else{$nome="";}
if(isset($_SESSION['cognome'])){$cognome=$_SESSION['cognome'];}else{$cognome="";}
if(isset($_SESSION['email'])){$email=$_SESSION['email'];}else{$email="";}
if(isset($_SESSION['telefono'])){$telefono=$_SESSION['telefono'];}else{$telefono="";}
if(isset($_SESSION['tipo_doc'])){$tipo_doc=$_SESSION['tipo_doc'];}else{$tipo_doc="";}
if(isset($_SESSION['num_doc'])){$num_doc=$_SESSION['num_doc'];}else{$num_doc="";}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>"  method="POST"  id="login" name="genera">
<h1>Nuovo Utente</h1>
 <fieldset id="inputs">
 <input id="nome" type="text" name="nome" placeholder="Nome"  value="<?php echo $nome; ?>" size="32" />
 <input id="cognome" type="text" name="cognome" placeholder="Cognome"  value="<?php echo $cognome; ?>" size="32" />
 <input id="telefono" type="text" name="telefono" placeholder="Telefono"  value="<?php echo $telefono; ?>" size="32" />
 <input id="tipo_doc" type="text" name="tipo_doc" placeholder="Tipo documento"  value="<?php echo $tipo_doc; ?>" size="32" />
 <input id="num_doc" type="text" name="num_doc"  placeholder="Numero del tuo documento" value="<?php echo $num_doc; ?>" size="32" />
 <input id="email" type="text" name="email" placeholder="E-mail"  value="<?php echo $email; ?>" size="32" />
     
    <?php 
 function genera_pass(){ 
    $pass=""; 
    $lunga=rand(6,8);//lunghezza della password casuale lunga da 6 a otto caratteri 
    for($k=1;$k<=$lunga;$k++){ 
        $c=rand(0,2); 
        if($c==0){//a caso un carattere numerico 
            $pass.=(string)rand(0,9);//genero la password numerica 
        }elseif($c==1){ 
            $pass.=chr(rand(65,90));//o un carattere casuale compreso da A-Z 
        }else{ 
            $pass.=chr(rand(97,122));//o un carattere casuale compreso da A-Z 
        } 
    } 
    return (string)$pass; 
} 

?> 
<!-- ...--> 
 <input name="password" type="text"  id="password" placeholder="<?php echo genera_pass();?>"  value="<?php echo genera_pass() ?>" size="32" readonly="readonly" />

<!-- ...-->
  </fieldset>
   <fieldset id="actions">

     <input type="submit"  id="submit" value="Iscriviti" /><br /><br />
<br /><br />


     <a href="Flam-admin-nobili.php"> Torna all'admin</a>
  </fieldset>
</form>

</body>
</html>
 
Ultima modifica:
ciao
mi sembra di si (comunque testare è il sistema migliore), l'unica cosa che modificherei è il passaggio a sessione, cioè visto che usi la sessione in modo che se ci sono errori l'utente non debba stare a riscrivere tutuo il form passerei in sessione i valori solo se sono giusti, ti faccio l'esempio di due, per gli altri valori è lo stesso
PHP:
<?php
//......
    if(!isset($_POST['cognome']) || trim($_POST['cognome']) ==""){// il cognome
	//metti il trim perche potrebbero inserire solo spazi
        $messaggio.="<br>il cognome è obbligatorio";
    }else{
		$_SESSION['nome']=htmlspecialchars(trim($_POST['nome']));
	}
	$_POST['email']=filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
    if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
        $messaggio.="<br>non è un indirizzo valido o il campo è vuoto";
    }else{
		//qui non ti serve l'htmlspecialchars
		$_SESSION['email']=$_POST['email'];
	}
//ecc........
?>
in questo modo es se per errore l'utente scrive pinco#pallo.it viene riinviato al form e il campo di input email risulta vuoto e non nuovamente con pinco#pallo.it (l'utente potrebbe non capire dove è l'errore)
un'altra cosa, ma è solo formale, generalamente le function si scrivono all'inizio in modo da averle tutte se sono più di una in uno stesso punto
PHP:
<?php
if (!isset($_SESSION)){session_start();}
function genera_pass(){ 
    //...... 
}
//eccc.....
?>
l'importante è che siano definite prima di usarle

edit
ora vedo per la conferma
 
Ultima modifica:
ciao
dimenticavo, devi mostrare il messaggio di errore
PHP:
<?php
if($messaggio !=""){//altrimenti ci sono errori
        echo $messaggio;//questo poi lo aggiusti con i css
		/*es
		echo "<div class=\"errori\">$messaggio</div>";
		*/
		//ritorno al form
        echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
    }else{
//.....
?>
 
Buon giorno Borgo..
dunque ho apportato le modifiche spero bene e te le posto:
PHP:
    //verifico i vari campi
     if(!isset($_POST['nome']) || trim($_POST['nome']) ==""){// il nome
        $messaggio.="<br>il nome è obbligatorio";
		 }else{
        $_SESSION['nome']=htmlspecialchars(trim($_POST['nome']));
        }
   if(!isset($_POST['cognome']) || trim($_POST['cognome']) ==""){// il cognome
    //metti il trim perche potrebbero inserire solo spazi
        $messaggio.="<br>il cognome è obbligatorio";
		 }else{
        $_SESSION['cognome']=htmlspecialchars(trim($_POST['cognome']));
    
    }
    // filtro l' email e poi lo verifico
$_POST['email']=filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
    if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
        $messaggio.="<br>non è un indirizzo valido o il campo è vuoto";
    }else{
        //qui non ti serve l'htmlspecialchars
        $_SESSION['email']=$_POST['email'];
    }    if(!isset($_POST['telefono']) || trim($_POST['telefono']) ==""){
    //metti il trim perche potrebbero inserire solo spazi// il  telefono
        $messaggio.="<br>l'telefono è obbligatorio";
		 }else{
        $_SESSION['telefono']=htmlspecialchars(trim($_POST['telefono']));
    }
     if(!isset($_POST['tipo_doc']) || trim($_POST['tipo_doc']) ==""){
    //metti il trim perche potrebbero inserire solo spazi// il tipo_doc
        $messaggio.="<br>il tipo_doc è obbligatorio, o almeno 10 caratteri";
		 }else{
        $_SESSION['tipo_doc']=htmlspecialchars(trim($_POST['tipo_doc']));
    }
     if(!isset($_POST['num_doc']) || trim($_POST['num_doc']) ==""){
    //metti il trim perche potrebbero inserire solo spazi// il numero del documento
        $messaggio.="<br>il tipo_doc è obbligatorio, o almeno 10 caratteri";
		 }else{
        $_SESSION['num_doc']=htmlspecialchars(trim($_POST['num_doc']));
    }
una domanda allora questo:
PHP:
    //valori dei post le passo in sessioni
    $_SESSION['nome']=htmlspecialchars(trim($_POST['nome']));
    $_SESSION['cognome']=htmlspecialchars(trim($_POST['cognome']));
    $_SESSION['email']=htmlspecialchars(trim($_POST['email']));
    $_SESSION['telefono']=htmlspecialchars(trim($_POST['telefono']));
    $_SESSION['tipo_doc']=htmlspecialchars(trim($_POST['tipo_doc']));
    $_SESSION['num_doc']=htmlspecialchars(trim($_POST['num_doc']));
lo elimino visto che lo passo sotto il valore post...
ancora una domanda rileggendo il codice mi accorgo che non ho il controllo dell'email se esiste nel db, provo ad inserire una query poi sempre se hai tempo ci dai uno sguardo.
Grazie mille
 
ciao
scusa una piccola osservazione: cosa intendi con
$_POST['tipo_doc']
vorresti che l'utente ti inviasse un allegato?
se è così devi fare altre modifiche
 
Il tipo_doc è il tipo di documento che usano per la registrazione, seguito poi solo dal numero: cerco di spiegarti più o meno, si tratta di una scuola dove faccio delle foto a dei bimbi, il genitore quando si iscrive rilasciandomi il numero e tipo di documento, io posso verificarlo all'interno del libro della scuola così ho un controllo in più che non sia un malintenzionato
volevo mettere la scelta del documento ma non riuscivo a passare i campi della select :)

Questa è la verifica:
PHP:
    // filtro l' email e poi lo verifico
$_POST['email']=filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
    if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
        $messaggio.="<br>non è un indirizzo valido o il campo è vuoto";
    }else{
        //qui non ti serve l'htmlspecialchars
        $_SESSION['email']=$_POST['email'];
		//verifico se la mail e presente nel db
		
		include('db.php'); 
$query = "
    SELECT COUNT(*)
        FROM `login`
        WHERE `email` = '{$form->data['email']}' ;
";
$db->setQuery($query);
$count = $db->loadResult();
if ( $count ) {
  $form->validation_errors['email'] = "Questa email è già registrata.";
  return false;
}
:book:
 
Scusa Borgo credo che ti ho confuso le idee con ciò che ti ho postato prima, lo specchietto di inserimento e lato admin credo si dica così, sono io che do l'autorizzazione e una password dopo aver controllato il registro scolastico, se l'utente che mi ha inviato l'email risulta essere genitore del bimbo.
 
Ok credo di aver aggiunto anche la query di inserimento, dimme che sono stato bravo:elvis:

PHP:
<?php
//verifico le sessioni e apro session start
if (!isset($_SESSION)){session_start();}
?>
<!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">
<title>form contatti</title>
 <link href="css/master_login.css" rel="stylesheet" type="text/css" />
</head>
<body>
<?php
//Inizio l'email
if(isset($_POST['submit'])){//qui il submit
    $messaggio="";// il messaggio è vuoto

    //verifico i vari campi
     if(!isset($_POST['nome']) || trim($_POST['nome']) ==""){// il nome
        $messaggio.="<br>il nome è obbligatorio";
		 }else{
        $_SESSION['nome']=htmlspecialchars(trim($_POST['nome']));
        }
   if(!isset($_POST['cognome']) || trim($_POST['cognome']) ==""){// il cognome
    //metti il trim perche potrebbero inserire solo spazi
        $messaggio.="<br>il cognome è obbligatorio";
		 }else{
        $_SESSION['cognome']=htmlspecialchars(trim($_POST['cognome']));
    
    }
		      if(!isset($_POST['telefono']) || trim($_POST['telefono']) ==""){
    //metti il trim perche potrebbero inserire solo spazi// il  telefono
        $messaggio.="<br>l'telefono è obbligatorio";
		 }else{
        $_SESSION['telefono']=htmlspecialchars(trim($_POST['telefono']));
    }
     if(!isset($_POST['tipo_doc']) || trim($_POST['tipo_doc']) ==""){
    //metti il trim perche potrebbero inserire solo spazi// il tipo_doc
        $messaggio.="<br>il tipo_doc è obbligatorio, o almeno 10 caratteri";
		 }else{
        $_SESSION['tipo_doc']=htmlspecialchars(trim($_POST['tipo_doc']));
    }
     if(!isset($_POST['num_doc']) || trim($_POST['num_doc']) ==""){
    //metti il trim perche potrebbero inserire solo spazi// il numero del documento
        $messaggio.="<br>il tipo_doc è obbligatorio, o almeno 10 caratteri";
		 }else{
        $_SESSION['num_doc']=htmlspecialchars(trim($_POST['num_doc']));
    }
 if(!isset($_POST['password']) || trim($_POST['password']) ==""){
    //metti il trim perche potrebbero inserire solo spazi// il  telefono
        $messaggio.="<br>password non generata";
		 }else{
        $_SESSION['password']=htmlspecialchars(trim($_POST['password']));
    }
	
    // filtro l' email e poi lo verifico
$_POST['email']=filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
    if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
        $messaggio.="<br>non è un indirizzo valido o il campo è vuoto";
    }else{
        //qui non ti serve l'htmlspecialchars
        $_SESSION['email']=$_POST['email'];
		//verifico se la mail e presente nel db
		
		include('db.php'); // richiamo la configurazione db
		
		// faccio la query
$query = "
    SELECT COUNT(*)
        FROM `login`
        WHERE `email` = '{$form->data['email']}' ;
";
// controllo
$db->setQuery($query);
$count = $db->loadResult();
if ( $count ) {
  $form->validation_errors['email'] = "Questa email è già registrata.";
  return false;
}	

// se tutto è ok preparo la query per l'inserimento dei campi nel db
$query = "INSERT INTO login (nome,cognome,email,tipo_doc,num_doc,telefono,password)
		VALUES ('$nome','$cognome','$email','$tipo_doc','$num_doc','$telefono,'$password')";

// lancio la query
$result = mysql_query($query);

// controllo l'esito
if (!$result) {
	die("Errore nella query $query: " . mysql_error());
}

// chiudo la connessione a MySQL
mysql_close();


  }		
    //quindi se non ci sono errori  $messaggio non c'è nulla
if($messaggio !=""){//altrimenti ci sono errori 
        echo $messaggio;//questo poi lo aggiusti con i css 
        /*es 
        echo "<div class=\"errori\">$messaggio</div>"; 
        */ 
        //ritorno al form 
        echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>"; 
    }else{        
	
	 //inizio l'email da inviare
        $destinatario="$mail";//**********************
        $data = "<hr>email inviata il: ".date("d.m.Y h:i:s A")."<br>"; // data e ora dell' invio
        $dasito= "dal sito: ".$_SERVER[HTTP_REFERER]."<br>"; //controllo se arriva dal mio sito
        $mittente="mittente: ".$_SESSION['nome']."<hr>";
        $invio_il_tipo_doc=nl2br($data.$dasito.$mittente.$_SESSION['tipo_doc']);
        //richiamo la classe phpmailer
        require "phpmailler/class.phpmailer.php";
        $Emailmessaggio = new PHPmailer();
        
        $Emailmessaggio->SetLanguage('it','language/'); //italiano
        $Emailmessaggio->IsHTML(true); // email in formato HTML
        $Emailmessaggio->FromName= $_SESSION['nome'];
        $Emailmessaggio->From=$_SESSION['email'];
        $Emailmessaggio->AddAddress($destinatario);
        $Emailmessaggio->Subject=$_SESSION['telefono'];
        $Emailmessaggio->Body=$invio_il_tipo_doc;
        //----invio l'email-------------------------------------------
        if(!$Emailmessaggio->Send()){ //errore 
              $messaggio="<h2>ERRORE DI TRASMISSIONE, riprova più tardi</h2>";
        }else{ //invio ok
              $messaggio="<h1>EMAIL CORRETTAMENTE INVIATA</h1>";
        }
        //elimino le sessioni 
        session_destroy();    //e ritorno al form 
        echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
    }
}
?>

<?php
//popolo i campi e correggo errori
if(isset($_SESSION['nome'])){$nome=$_SESSION['nome'];}else{$nome="";}
if(isset($_SESSION['cognome'])){$cognome=$_SESSION['cognome'];}else{$cognome="";}
if(isset($_SESSION['email'])){$email=$_SESSION['email'];}else{$email="";}
if(isset($_SESSION['telefono'])){$telefono=$_SESSION['telefono'];}else{$telefono="";}
if(isset($_SESSION['tipo_doc'])){$tipo_doc=$_SESSION['tipo_doc'];}else{$tipo_doc="";}
if(isset($_SESSION['num_doc'])){$num_doc=$_SESSION['num_doc'];}else{$num_doc="";}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>"  method="POST"  id="login" name="genera">
<h1>Nuovo Utente</h1>
 <fieldset id="inputs">
 <input id="nome" type="text" name="nome" placeholder="Nome"  value="<?php echo $nome; ?>" size="32" />
 <input id="cognome" type="text" name="cognome" placeholder="Cognome"  value="<?php echo $cognome; ?>" size="32" />
 <input id="telefono" type="text" name="telefono" placeholder="Telefono"  value="<?php echo $telefono; ?>" size="32" />
 <input id="tipo_doc" type="text" name="tipo_doc" placeholder="Tipo documento"  value="<?php echo $tipo_doc; ?>" size="32" />
 <input id="num_doc" type="text" name="num_doc"  placeholder="Numero del tuo documento" value="<?php echo $num_doc; ?>" size="32" />
 <input id="email" type="text" name="email" placeholder="E-mail"  value="<?php echo $email; ?>" size="32" />
     
    <?php 
 function genera_pass(){ 
    $pass=""; 
    $lunga=rand(6,8);//lunghezza della password casuale lunga da 6 a otto caratteri 
    for($k=1;$k<=$lunga;$k++){ 
        $c=rand(0,2); 
        if($c==0){//a caso un carattere numerico 
            $pass.=(string)rand(0,9);//genero la password numerica 
        }elseif($c==1){ 
            $pass.=chr(rand(65,90));//o un carattere casuale compreso da A-Z 
        }else{ 
            $pass.=chr(rand(97,122));//o un carattere casuale compreso da A-Z 
        } 
    } 
    return (string)$pass; 
} 

?> 
<!-- ...--> 
 <input name="password" type="text"  id="password" placeholder="<?php echo genera_pass();?>"  value="<?php echo genera_pass() ?>" size="32" readonly="readonly" />

<!-- ...-->
  </fieldset>
   <fieldset id="actions">

     <input type="submit"  id="submit" value="Iscriviti" /><br /><br />
<br /><br />


     <a href="Flam-admin-nobili.php"> Torna all'admin</a>
  </fieldset>
</form>

</body>
</html>
 
Ultima modifica:

Discussioni simili