[RISOLTO]controllo mail se esiste

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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"
 

Marco196943

Utente Attivo
19 Ago 2012
66
0
0
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?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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?
 

Marco196943

Utente Attivo
19 Ago 2012
66
0
0
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à.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
 

Marco196943

Utente Attivo
19 Ago 2012
66
0
0
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?
 

Marco196943

Utente Attivo
19 Ago 2012
66
0
0
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:

Marco196943

Utente Attivo
19 Ago 2012
66
0
0
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:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
 

Marco196943

Utente Attivo
19 Ago 2012
66
0
0
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:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
Autore Titolo Forum Risposte Data
M [RISOLTO]Problema controllo e passaggio di valori da una pagina all''altra PHP 4
L [RISOLTO]Query di controllo. PHP 2
L (risolto) MySQL 0
B getElementById su piu id(Risolto) Javascript 7
L Esercitarsi con Js [RISOLTO] Javascript 4
C [RISOLTO]Inserimento variabile php in input html PHP 20
L risolto visualizzazione e ordinamento dati PHP 1
moustache [RISOLTO] SQL PHP IIS PHP 8
Sergio Unia Ricezione email con destinatari multipli [Risolto] PHP 2
L update tabelle in php mysql [risolto] PHP 6
M Semplice visualizzatore di immagini [risolto con plugin wp] PHP 7
L [RISOLTO] Stampa a video risultato count in html PHP 13
L [RISOLTO] Eliminare una discussione creata PHP 3
tomorc [HTML] Problema con scroll bar (risolto) HTML e CSS 0
A [PHP] Problema query insert [RISOLTO] PHP 14
B [PHP] recuperare IP dei server in load balancing [RISOLTO] PHP 3
K [RISOLTO] Problema Griglia Php+Mysql PHP 13
S [RISOLTO] aggiorna tabella da select option asp classic Classic ASP 7
elpirata [RISOLTO][Javascript] Datapicker e autocompletamento campo input Javascript 2
elpirata [RISOLTO][Mysql] Problema insert valori apostrofati MySQL 1
elpirata [RISOLTO][Mysql] Contare le occorrenze in un campo tipo varchar MySQL 2
G [MS Access] Gestione biglietti [RISOLTO] MS Access 2
G [MS Access] Casella combinata & Query [RISOLTO] MS Access 4
G [MS Access] Query mese corrente con conteggio [RISOLTO] MS Access 2
M [RISOLTO]Windows media player non mi funziona più su win 10 pro 64 bit Windows e Software 2
C [RISOLTO][PHP] Errore di sintassi PHP 8
IT9-Gpp [RISOLTO] Leggere variabile restituita da success Ajax 3
Kolop [RISOLTO][PHP] Problema Pagination PHP 2
C [RISOLTO][PHP] Funzione ONclick PHP 14
C [RISOLTO][PHP] Conteggio righe di una tabella PHP 4
N [PHP] Utilizzo variabili di sessione [Risolto] PHP 13
Tommy03 [RISOLTO][PHP] Webserver o devserver? PHP 2
Sergio Unia Recupero dati da una vecchia versione MySql [Risolto] MySQL 4
spider81man [PHP] Problemi cancellazione dato su DB [RISOLTO] PHP 1
A [RISOLTO]Inserimento Immagini da pc a MySql PHP 15
A [PHP] RISOLTO Invio Mail con Tabella PHP 2
felino Risolto - [Wordpress][WooCommerce] PayPal Checkout e campi di fatturazione WordPress 2
elpirata [PHP][RISOLTO] Sommare gli importi estratti da un ciclo while PHP 3
elpirata [PHP][RISOLTO] Effettuare la somma dei tempi di lavorazione PHP 3
elpirata [PHP] [RISOLTO]Sovrascrivere testo in una tabella PHP 2
A [RISOLTO]Recuperare dati inviati con json tramite php PHP 4
C [RISOLTO][PHP] Passaggio variabili senza refresh di pagina PHP 7
elpirata [PHP][RISOLTO] Errore di tipo Notice: Undefined index - Come risolvere quando si hanno tante var PHP 10
S Problema in PHP per invio file XML - RISOLTO- PHP 8
A [Javascript] [RISOLTO] Doppio "submit", in uno stesso "Form" , che puntino ad "action" diversi Javascript 1
marino51 [Risolto]videochat di messenger ha smesso di funzionare sul telefonino Smartphone e tablet 1
A [Javascript] [HTML] RISOLTO...Allungare un box all'apertura della pagina No Mouse over Javascript 9
ken_korn [Javascript][Risolto] browser.tab.Tabs.favIconUrl non funziona Javascript 5
A [RISOLTO] HighChart e PHP PHP 4
A [RISOLTO] PHP Selezionare tutti i file con stessa estensione PHP 2

Discussioni simili