registrazione utenti...

  • Creatore Discussione Creatore Discussione angel
  • Data di inizio Data di inizio
come tabella cosi va bene allora...
PHP:
CREATE TABLE forum_utenti` (
  `id_utenti` int(11) NOT NULL AUTO_INCREMENT,
  `nome_utenti` varchar(12) NOT NULL DEFAULT '',
  `password_utenti` varchar(12) NOT NULL DEFAULT '',
  'data_utenti' BIGINT(20) NOT NULL DEFAULT '0',
  `mail_utenti` varchar(255) NOT NULL DEFAULT '',
  `attivo_utenti` enum('0','1') NOT NULL DEFAULT '0',
  `gruppi_utenti` varchar(255) NOT NULL DEFAULT 'Email da convalidare',
  `messaggi_utenti` int(11) NOT NULL DEFAULT '0',
  `avatar_utenti` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`id_utenti`)
) TYPE=MyISAM AUTO_INCREMENT=1;
per ora ho fatto cosi...
PHP:
<?php
if(isset($_POST["invia"])){
$error = false;
$nome=$_POST["nome"];
$password=$_POST["password"];
$password2=$_POST["conferma_password"];
$mail=$_POST["mail"];
$avatar=$_POST["avatar"];
$parola=$_POST["parola"];



if($nome == "" OR $nome != "^[a-z0-9]{6,12}$"){ 
echo("<b>Il campo Nome è vuoto o caratteri non ammessi.\nLunghezza minima 6 caratteri e massima 12.</b>\n");
$error = true;
}elseif($password == "" OR $password != "^[a-z0-9]{6,12}$"){
echo("<b>Il campo Password è vuotoo caratteri non ammessi.\nLunghezza minima 6 caratteri e massima 12.</b>\n");
$error = true;
}elseif($password2 == "" OR $password != "^[a-z0-9]{6,12}$"){
echo("<b>Il campo Conferma Password è vuoto o caratteri non ammessi.\nLunghezza minima 6 caratteri e massima 12.</b>\n");
$error = true;
}elseif($password != $password2){
echo("<b>Le password non conicidono.</b>\n");
$error = true;
}elseif($mail == "" OR $mail != "^[a-z0-9_]+@[a-z0-9\-]+\.[a-z0-9\-\.]+$]"){
echo("<b>Il campo mail non è corretto.</b>\n");
$error = true;
}elseif($parola == ""){
echo("<b>Il campo parola è vuoto.</b>\n");
$error = true;
}elseif($parola != "ciao"){
echo("<b>Il campo parola è Sbagliato.</b>\n");
$error = true;
}else{
require_once"config.php";

$query1 = mysql_query("SELECT * FROM forum_utenti WHERE nome_utenti = '".$nome."'");
if(mysql_num_rows($query1) != "0"){
echo("<b>Il Nome già esiste</b>\n");
$error = true;
}
$query2 = mysql_query("SELECT * FROM forum_utenti WHERE mail_utenti = '".$mail."'");
if(mysql_num_rows($query2) != "0"){
echo("<b>La mail già esiste</b>\n");
$error = true;
}

if($error == false){
$password=sha1($password);
mysql_query("INSERT INTO `forum_utenti` (
`nome_utenti`, 
`password_utenti`, 
`data_utenti`, 
`mail_utenti`, 
`avatar_utenti`
) VALUES(
'".mysql_real_escape_string(htmlentities($nome))."', 
'".mysql_real_escape_string(htmlentities($password))."', 
'".time()."', 
'".$mail."',
'".mysql_real_escape_string(htmlentities($avatar))."');
");
echo "Registrazione avvenuta";
}}}?>

@alessandro non ho capito bene come usarlo poi farmi un esempio...
 
Ultima modifica:
va bene cosi...allora
PHP:
<?php
if(isset($_POST["invia"])){
$error = false;
$nome=$_POST["nome"];
$password=$_POST["password"];
$password2=$_POST["conferma_password"];
$mail=$_POST["mail"];
$avatar=$_POST["avatar"];
$parola=$_POST["parola"];



if($nome == "" OR !eregi("^[a-z0-9]{6,12}$", $nome)){
echo("<b>Il campo Nome è vuoto o caratteri non ammessi.\nLunghezza minima 6 caratteri e massima 12.</b>\n");
$error = true;
}elseif($password == "" OR !eregi("^[a-z0-9]{6,12}$", $password)){
echo("<b>Il campo Password è vuotoo caratteri non ammessi.\nLunghezza minima 6 caratteri e massima 12.</b>\n");
$error = true;
}elseif($password2 == "" OR !eregi("^[a-z0-9]{6,12}$", $password2)){
echo("<b>Il campo Conferma Password è vuoto o caratteri non ammessi.\nLunghezza minima 6 caratteri e massima 12.</b>\n");
$error = true;
}elseif($password != $password2){
echo("<b>Le password non conicidono.</b>\n");
$error = true;
}elseif($mail == "" OR !eregi("^[a-z0-9_]+@[a-z0-9\-]+\.[a-z0-9\-\.]+$]", $mail)){
echo("<b>Il campo mail non è corretto.</b>\n");
$error = true;
}elseif($parola == ""){
echo("<b>Il campo parola è vuoto.</b>\n");
$error = true;
}elseif($parola != "ciao"){
echo("<b>Il campo parola è Sbagliato.</b>\n");
$error = true;
}else{
require_once"config.php";

$query1 = mysql_query("SELECT * FROM forum_utenti WHERE nome_utenti = '".$nome."'");
if(mysql_num_rows($query1) != "0"){
echo("<b>Il Nome già esiste</b>\n");
$error = true;
}
$query2 = mysql_query("SELECT * FROM forum_utenti WHERE mail_utenti = '".$mail."'");
if(mysql_num_rows($query2) != "0"){
echo("<b>La mail già esiste</b>\n");
$error = true;
}

if($error == false){
$password=sha1($password);
mysql_query("INSERT INTO `forum_utenti` (
`nome_utenti`, 
`password_utenti`, 
`data_utenti`, 
`mail_utenti`, 
`avatar_utenti`
) VALUES(
'".mysql_real_escape_string(htmlentities($nome))."', 
'".mysql_real_escape_string(htmlentities($password))."', 
'".time()."', 
'".$mail."',
'".mysql_real_escape_string(htmlentities($avatar))."'
);
");
echo "Registrazione avvenuta";
}}}?>
 
va bene....
per la funzione che hai detto tu come lo devo impostare nello script....
 
La funzione ti consiglio di metterla in una libreria che poi includerai in tutte le pagine del tuo software. Poi controlli il valore che ti restituisce, se l'estensione è tra quelle elencate restituirà true, altrimenti false.
 
ciao
secondo me devi aggiungere quello che deve fare lo script nel caso in cui
$error== FALSE;

oppure
$error== TRUE;

in entrambi i casi devi mettere a quale pagina l'utente deve essere reindirizzato dopo la registrazione (in automatico o con un link da cliccare)

poi, come volevi tu, guardati un momento la funzione mail() per inviare l'email di conferma in caso di registrazione ok, e prova a buttare giù qualcosa
 
@ale
non ti sto seguendo nel discorso...
@borgo
per ora ho fatto cosi che ne pensi....
PHP:
<?php
$subject = "Completa la tua registrazione";

$boundary = "==MP_Bound_xyccr948x==";
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: multipart/alternative; boundary=\"$boundary\"\r\n";
$headers .= "From: quellochevuoi@tuoserver.it\r\n"; //inseriamo l'indirizzo email del mittente, cioè il nostro

$html_msg  = "<center>";
$html_msg .= "<table width=\"500\" border=0 cellpadding=\"4\">";
$html_msg .= "<tr><td align=\"center\">&nbsp;";
$html_msg .= "</td></tr>";
$html_msg .= "<tr><td>Questi sono i dati della tua registrazione:";
$html_msg .= "</td></tr><tr><td>Username: <font color=\"red\">" .$nome. "</font>";
$html_msg .= "</td></tr><tr><td>Password: <font color=\"red\">" .$password. "</font>";
$html_msg .= "</td></tr><tr><td align=\"center\">&nbsp;";
$html_msg .= "</td></tr></table></center>";

$confirmmessage = "Salve " .$nome. ",\n\n";
$confirmmessage .= "per completare la tua registrazione devi cliccare sul link sottostante:\n\n";
$confirmmessage .= $html_msg. "\n\n";
$confirmmessage .= "<a href=\"http://localhost/percorso pagina confirm_reg.php" ."?id=$msgid\">Clicca qui per confermare la tua registrazione</a>";

$message  = "This is a Multipart Message in MIME format\n";
$message .= "--$boundary\n";
$message .= "Content-type: text/html; charset=iso-8859-1\n";
$message .= "Content-Transfer-Encoding: 7bit\n\n";
$message .= $confirmmessage. "\n";
$message .= "--$boundary--";


if(mail($mail, $subject, $message, $headers)){
echo "Salve" .$nome. ",<br>";
echo "Un messaggio è stato inviato all'indirizzo <b>" .$mail. "</b> da te fornito.<br><br>";
echo "IMPORTANTE:<br>";
echo "Per completare la registrazione al sito devi aprire la tua casella e-mail, leggere il messaggio di conferma e cliccare sul link che troverai all'interno.<br><br>";
}else{
echo "Errore durante l'invio dell'e-mail.";
}?>
 
ciao, nel complesso mi sembra ok (poi con calma guardo meglio)

io chiamerei lo script mail_conf.php e
farei, nello script precedente,

");
echo "Registrazione avvenuta";
include_once "mail_conf.php";
}}}?>

con due piccoli accorgimenti uno formale ed uno sostanziale
formale:
devi considerare che la funzione mail() non sempre riesce ad inviare email agli indirizzi tipo aaa@libero.it o aaa@tin.it o simili, quindi
al messaggio aggiungerei:
se non ricevi l'email di conferma scrivi al webmaster quellochevuoi@tuoserver.it

sostanziale:
fai attenzione che devi ricavarti il valore di $msgid, quindi o fai un'altra query per ricavare l'ultimo id inserito, o cambi variabile usando una già disponibile
es.
$confirmmessage .= "<a href=\"http://www.tuoserver.it/percorso_pagina/confirm_reg.php" ."?em=$mail\">Clicca qui per confermare la tua registrazione</a>";
 
io pensavo invece di metterlo nella pagina registrazioni...
pero io volevo fare una cosa e ti spiego....

l'utente si registra mettendo i dati...
viene inviata un mail al utente con due link uno di conferma e uno no...
se clicca sul link di conferma viene inserito l'utente nel db, se l'utente clicca sul altro non viene inserito il contatto...^^
hai capito
 
ciao
la parte di script

");
echo "Registrazione avvenuta";
}}}?>

non è la pagina di registrazione?

viene inviata un mail al utente con due link uno di conferma e uno no...

puoi farlo, basta che tu metta nell'email un altro link e aggiungi una variabile alle querystringa
es.

$confirmmessage .= "<a href=\"http://www.tuoserver.it/percorso_pagina/confirm_reg.php" ."?em=$mail&conf=SI\">Clicca qui per confermare la tua registrazione</a>";

$confirmmessage .= "<a href=\"http://www.tuoserver.it/percorso_pagina/confirm_reg.php" ."?em=$mail&conf=NO\">Clicca qui per annullare la tua registrazione</a>";

poi nella pag confirm_reg.php

$email=htmlspecialchars($_GET['em'];
$conferma=htmlspecialchars($_GET['conf'];

switch($conferma){
case "SI"://fai quello che devi fare se si
break;
case "NO"://quello per non conferma es delete ...where email=$email
break;
}

dimenticavo:
alla fine a me e ad alessandro pagherai una birra?
 
xDxD
Non dimenticherò il vostro aiuto....

ho buttato giù qualcosa...
PHP:
<?php
if(isset($_POST["invia"])){
$error = false;
$nome=$_POST["nome"];
$password=$_POST["password"];
$password2=$_POST["conferma_password"];
$mail=$_POST["mail"];
$sesso=$_POST["sesso"];
$sito=$_POST["sito"];
$avatar=$_POST["avatar"];
$parola=$_POST["parola"];



if($nome == "" OR !eregi("^[a-z0-9]{6,12}$", $nome)){
echo("<b>Il campo Nome è vuoto o caratteri non ammessi.\nLunghezza minima 6 caratteri e massima 12.</b>\n");
$error = true;
}elseif($password == "" OR !eregi("^[a-z0-9]{6,12}$", $password)){
echo("<b>Il campo Password è vuotoo caratteri non ammessi.\nLunghezza minima 6 caratteri e massima 12.</b>\n");
$error = true;
}elseif($password2 == "" OR !eregi("^[a-z0-9]{6,12}$", $password2)){
echo("<b>Il campo Conferma Password è vuoto o caratteri non ammessi.\nLunghezza minima 6 caratteri e massima 12.</b>\n");
$error = true;
}elseif($password != $password2){
echo("<b>Le password non conicidono.</b>\n");
$error = true;
}elseif($mail == "" OR !eregi("^[a-z0-9_]+@[a-z0-9\-]+\.[a-z0-9\-\.]+$]", $mail)){
echo("<b>Il campo mail non è corretto.</b>\n");
$error = true;
}elseif($sito == "" OR !eregi("^[a-z0-9\-\.]+\.(it|com|org|net|eu|mobi)$", $sito)){
echo("<b>Il campo sito è vuoto.</b>\n");
$error = true;
}elseif($parola == ""){
echo("<b>Il campo parola è vuoto.</b>\n");
$error = true;
}elseif($parola != "ciao"){
echo("<b>Il campo parola è Sbagliato.</b>\n");
$error = true;
}else{
require_once"config.php";

$query1 = mysql_query("SELECT * FROM forum_utenti WHERE nome_utenti = '".$nome."'");
if(mysql_num_rows($query1) != "0"){
echo("<b>Il Nome già esiste</b>\n");
$error = true;
}
$query2 = mysql_query("SELECT * FROM forum_utenti WHERE mail_utenti = '".$mail."'");
if(mysql_num_rows($query2) != "0"){
echo("<b>La mail già esiste</b>\n");
$error = true;
}

if($error == false){
$password=sha1($password);
mysql_query("INSERT INTO `forum_utenti` (
`nome_utenti`, 
`password_utenti`, 
`data_utenti`, 
`mail_utenti`, 
`avatar_utenti`
) VALUES(
'".mysql_real_escape_string(htmlentities($nome))."', 
'".mysql_real_escape_string(htmlentities($password))."', 
'".time()."', 
'".$mail."',
'".$sesso."',
'".$sito."',
'".mysql_real_escape_string(htmlentities($avatar))."'
);
");
echo "Registrazione avvenuta";


#Mail
$subject = "Completa la tua registrazione";

$headers  = 'MIME-Version: 1.0'."\r\n";
$headers .= 'Content-type: multipart/alternative; boundary="==MP_Bound_xyccr948x=="'."\r\n";
$headers .= 'From: quellochevuoi@tuoserver.it'."\r\n";

$html_msg .= '<center><table width="500" border="0" cellpadding="4">';
$html_msg .= '<tr><td align="center"></td></tr>';
$html_msg .= "<tr><td>Questi sono i dati della tua registrazione:</td></tr>";
$html_msg .= '<tr><td>Username:<font color="red">' .$nome. "</font></td></tr>";
$html_msg .= '<tr><td>Password:<font color="red">' .$password. "</font></td></tr>";
$html_msg .= '<tr><td align="center"></td></tr>';
$html_msg .= "</table></center>";

$confirmmessage  = 'Salve ' .$nome. ",\n\n per completare la tua registrazione devi cliccare sul link sottostante:\n\n" .$html_msg. "\n\n";
$confirmmessage .= '<a href="confirm_reg.php?mail='.$mail.'&conf=SI">Clicca qui per confermare la tua registrazione</a>';
$confirmmessage .= '<a href="confirm_reg.php?mail='.$mail.'&conf=NO">Clicca qui per annullare la tua registrazione</a>';

$message  = "This is a Multipart Message in MIME format\n";
$message .= "--==MP_Bound_xyccr948x==\n";
$message .= "Content-type: text/html; charset=iso-8859-1\n";
$message .= "Content-Transfer-Encoding: 7bit\n\n";
$message .= $confirmmessage. "\n";
$message .= "--==MP_Bound_xyccr948x==--";


if(mail($mail, $subject, $message, $headers)){
echo "Salve" .$nome. ",<br>";
echo "Un messaggio è stato inviato all'indirizzo <b>" .$mail. "</b> da te fornito.<br><br>";
echo "IMPORTANTE:<br>";
echo "Per completare la registrazione al sito devi aprire la tua casella e-mail, leggere il messaggio di conferma e cliccare sul link che troverai all'interno.<br><br>";
}else{
echo "Errore durante l'invio dell'e-mail.";
}
}}}?>
 
ho provato il campo mail ma non funziona con le mail hotmail....^^

per la pagina di conferma che ne pensi...
PHP:
<?php
require_once"config.php"; 
$mail=htmlspecialchars($_GET['mail']);
$conferma=htmlspecialchars($_GET['conf']);

switch($conferma){
case "SI":
mysql_query("UPDATE forum_utenti SET attivo_utente = '1' WHERE mail_utente ='".$mail."'");
echo '<script type="text/javascript">alert("Account Attivato!!")</script>';
break;
case "NO":
mysql_query("DELETE FROM forum_utenti WHERE mail_utente ='".$mail."'");
mysql_query("ALTER TABLE forum_utenti AUTO_INCREMENT = 0");
echo '<script type="text/javascript">alert("Account Cancellato!!")</script>';
break;
}?>
però dove ce no deve controllare se non ce come attivo_utente settato su 1...
se no basterebbe mettere una mail e scritto no...
ma non ho idea di come fare..
qualche suggerimento
 
Ultima modifica:
Basta che recuperi con una semplice SELECT, a partire dall'indirizzo e-mail, i dati sull'utente e controlli il campo relativo.
Comunque togli la parte dove imposti l'AUTO_INCREMENT a 0, è inutile. Ho capito cosa vuoi fare, ma è solo uno spreco di risorse per database ed hai anche sbagliato a scrivere la query, e poi nessun software conosciuto usa quel sistema.
E poi: cosa intendi con "non funziona con Hotmail"?
 

Discussioni simili