[RISOLTO]controllo mail se esiste

ciao
ci do un occhio.
però devo tradurmela, sono all'antica e uso lo stile procedurale, quindi eventualmente te lo posto in procedurale, poi se a te piace lo stile ad oggetti te la traduci
poi una cosa: quindi dall'email verifichi se è iscritto?
non ti converrebbe verificarlo dalla password.
da quello che ho capito se è il genitore ha la password, altrimenti no, giusto?
se è il genitore dovresti chiederti: ma vuole fare una registrazione o modificare i sui dati?
non è difficile che un utente abbandoni un indirizzo e ne assuma un'altro (analogo per il numero di telefono ecc...)

"cogitare prima di lavorare è meglio che rilavorare"
 
e tu hai ragione... ma allora come posso evitare che ci siano email uguali? e poi visto che comunque devo inserire io la password per l'accesso, e quindi anche tutti gli altri dati, ho pensato che se l'utente cambia email, deve comunque mandarmi una mail per una nuova registrazione, cosi non affollo il db di dati inutilizzati e posso eliminarli. tu cosa ne pensi?
 
ciao
ci faccio un pensierino poi ti posto uno schema.
mi farebbe comodo sapere come è fatta la tabella, poi per quel $_POST['tipo_doc'] dove dici che vorresti fare una <select> (meglio così si evitano porcherie) fammi sapere quali sono i valori che vorresti che l'utente inserisse
inoltre da quello che ho capito la pass l'assegni tu a chi si è iscritto, giusto?
 
Ciao Borgo il progetto era diverso all'inizio poi man mano che procedevo riscontravo problemi e quindi tagliavo delle cose, è l'inesperienza e mancanza di fondi per prendere un professionista, comunque la tabella è questa:
db_login.jpg

Per la select io avevo in progetto di mettere: Patente, Carta Identità, passaporto, e tessera sanitaria??? quest'ultima non lo sò.
E si la password la assegno io esatto
Comunque grazie ancora per la disponibilità.
 
ciao
intanto ti posto un es. di come fare la <select> (la scrivo tutta in php)
PHP:
<?php
//se fai un array poi puoi togliere/aggiungere comodamente senza riscrivere tutte le <option>
$documento=array('carta identita'=>'carta identit&agrave;','passaporto'=>'passaporto','tessera sanitaria'=>'tessera sanitaria');
echo "<select name=\"tipo_doc\" id=\"tipo_doc\">";
echo "<option value=\"\">- seleziona -</option>";
foreach($documento as $ch => $val){
	echo"<option value=\"$ch\">$val</option>";
}
echo "</select>";
?>

poi con calma guardo la tabella, comunque penso che ti farò altre domande
 
ciao
non so a cosa esattamante serva il sito, penso che non ti serva solo per fare una semplice rubrica telefonica ma anche per altri scopi, giusto?
se è così io farei in questo modo dividendo il sito in tre parti
1)parte pubblica
in questa parte, oltre a quello che ti serve o vuoi mettere io metterei una pag di log
nella pagina un form in cui l’utente inserisce il cognome e la password, se registrato, e un pulsante per accedere ad una pagina con un form in cui inserisce i dati (in questa pagina puo vedere eventualmente la password attribuitagli (se lo fai in automatico poi non perdi tempo ad inviarglela, anche perche inviare pass per email non è consigliabile) per registrasi
2)parte riservata all’amministratore (tu)
in questa parte tu puoi vedere/modificare/aliminare tutto, ma soprattutto autorizzare dopo le verifiche l’accesso all’utente, in pratica portare il campo set “attivo” da disattivo ad attivo (o viceversa) o eliminare completamente un utente
questa parte è evidente che deve essere eccessibile solo ed esclusivamente all’admin
3)parte riservata all’utente
in questa parte l’utente registrato e attivo potrà vedere solo quello che è di sua esclusiva pertinenza e se vuole modificare i suoi dati modificabili (evidentemente non potrà modificare il nome e/o il cognome, ma es il telefono e l’email si. guarda che non vai ad incrementare i record in quanto il record viene uppato non salvato un altro)
se ti va bene questa prima impostazione fammi sapere, che pian piano buttimo giù quello che ti serve e eventualmente dimmi cosa esattamente vuoi fare

p.s.
la tabella va bene
 
Ciao Borgo grazie ancora di tutto, in effetti io l'ho diviso più o meno cosi:

1) il sito semplice in a html con un aggiunta di una pagina di login da parte dell'utente
2) una pagina form che mi invia la richiesta da parter dell'utente
3) l'admin che sto cercando di terminare con il tuo gentile aiuto
4) il sito e-commerce aiutandomi con prestashop riservato all'utente autorizzato

Tu cosa ne pensi potrebbe funzionarein questo modo?
 
Salve borgo sto tentando di inserire la select come da te consigliato ma non succede nulla...puoi dirmi dove erro????

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']));
    }
    //se fai un array poi puoi togliere/aggiungere comodamente senza riscrivere tutte le <option> 
$documento=array('carta identita'=>'carta identit&agrave;','passaporto'=>'passaporto','tessera sanitaria'=>'tessera sanitaria'); 
echo "<select name=\"tipo_doc\" id=\"tipo_doc\">"; 
echo "<option value=\"\">- seleziona -</option>"; 
foreach($documento as $ch => $val){ 
    echo"<option value=\"$ch\">$val</option>"; 
} 
echo "</select>"; 
     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" />
<select name=\"tipo_doc\" id=\"tipo_doc\">
<option value=\"\">- seleziona -</option>
</select>

 <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:
Una domanda, hai creato un array chiamandola $documento, ma nella mia tabella del db si chiama tipo_doc i dati li carica ugualmente, o devo rinominarla vome nel mio db la variabile $ documento....
ma ci sei ancora??? o mi hai abbandonato???:crying:
 
ciao
no non è obbligatorio che il nome variabile php sia uguale al nome del campo, può essere utile che sia uguale per il prosequio dello script per ricordarsi da dove salta fuori.

poi non ti ho abbandonato, ma capisci oltre agli altri forumisti da seguire e altri impegni non sempre posso essere presente o concentrarmi su un problema
 
no no no ok fai pure capisco perfettamente, è che sapere che dall'altra parte c'è qualcuno capace e che controlla mi dà la carica per fare meglio.:book:
 
ciao
intanto eccoti uno schema di log (io l'ho fatto così)
nella pag index metterai un link alla pag di log
HTML:
<a href="log.php">loggati</a>

pag. loggati.php
PHP:
<?php
session_start();
$_SESSION['controllo']=md5(rand(1000,9999);
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>log</title>
</head>
<body>
<form action="transito.php?c=<?php echo $_SESSION['controllo'];?>" method="post">
tuo cognome:<input name="user" type="text"><br />
tua passvord:<input name="pass" type="password"><br />
<input name="log" type="submit" id="log" value="log">
</form><br />
se non sei registrato <a href="registrati.php">registrati</a><br />
<a href="index.php">esci</a>
</body>
</html>

come vedi la pag. loggati.php punta ad una pagina che chiamo transito.php, è la pag di verifica e di reindirizzamento e serve anche per il logout

pag. transito.php
PHP:
<?php
session_start();
if(!isset($_SESSION['controllo']) || $_SESSION['controllo'] != $_GET['c']){
	//se la sessione non esiste o è diversa dal get è un accesso alla pagina non consentito
	//distruggo eventuali sessioni, mi serve anche per il logout
	if(isset($_SESSION)){session_destroy();}
	//e riinvio
	header("location:index.php");
	exit();
}
//qui definisci il nome e la pass dell'amministratore
//comunque meglio codificarli
$nome_ad=sah1("pinco");//dei e sotto devi mettere quello che vuoi
$pass_ad=sah1("ppppppppp");
//e leggi i $_POST dal form di log
$n=addslashes(ucwords(strtolower($_POST['user']));
$p=sah1($_POST['pass']);
if(sah1($n)==$nome_ad && $p==$pass_ad){
	//username e password sono dell'admin cioe tue
	$_SESSION['admin']=$n;
	header("location:pag_riservata_admin.php");//se in una cartella es. "location:admin/pag_riservata_admin.php"
	exit();
}else{
	//dati di connessione al db
	//qui uso le vecchie mysql perche faccio prima, poi te le traduci a mysqli
	$query="SELECT * FROM utenti WHERE cognome='$n' AND password=''";
	$ris=mysql_query($query);
	if(mysql_num_rows($ris)==1){
		//cognome e password esistono e coincidono con lo stesso utente
		$riga=mysql_fetch_array($ris);
		$_SESSION['utente']=$riga['nome']." ".$riga['cognome'];
		header("location:pag_riservata_utente.php");//se in una cartella  es "location:utenti/pag_riservata_utente.php"
		exit();
	}else{
		//rimando a questa pagina
		//così facendo il get non esiste più
		//quindi eventualemente distruggo le sessioni e riinvio alla index.php
        if(isset($_GET['c']){unset($_GET['c']);}//meglio per sicurezza
		header("location:$_SERVER['PHP_SELF']");
		exit();
	}
}
?>
dalla pag. transito.php in funzione dell'username e della password si viene reindirizzata o alla

pag. pag_riservata_admin.php
PHP:
<?php
session_start();
//attento devi mettere il nome dell'admin come hai messo in transito.php
if(!isset($_SESSION['admin']) || $_SESSION['admin']!="pinco"){
	//la sessione non esiste o il nome non è il tuo
	//e riinvio
	header("location:transito.php");//nota che non ha il get
	exit();
	/*
	questa parte evita accessi indesiderati se per ipotesi qualcuno viene a conoscere il nome della pagina
	scrivendo sul bw es.
	http://www.tuo_sito.it/pag_riservata_admin.php
	*/
}
echo "ciao ".$_SESSION['admin'];
//eccetera tutto l'html e/o php che ti serve
?>
o alla
pag. pag_riservata_utente.php
PHP:
<?php
session_start();
if(!isset($_SESSION['utente'])){
	//come per la pag dell'admin
	header("location:transito.php");//nota che non ha il get
	exit();
}
echo "ciao ".$_SESSION['utente'];
//eccetera tutto l'html e/o php che ti serve
?>
<a href="transito.php">logout</a></body>

guarda che ho messo i nomi un po' a caso.

per la pag di registrazione: alla prossima
 

Discussioni simili