registrazione utenti...

  • Creatore Discussione Creatore Discussione angel
  • Data di inizio Data di inizio
ciao

E poi: cosa intendi con "non funziona con Hotmail"?
probabilmente intende quello che è scritto in molti post del forum.

cioè che la funzione mail() da true, ma l'email non viene ricevuta.
il fenomeno avvine su indirizzi tipo @tin.it @libero.it @email.it @hotmail. e da che ne so dipende (sembrerebbe) dal fatto che i filtri di tin libero... bloccano le email inviate da mail()
 
ciao
non so se hotmail fa parte della serie (anche se col tempo qualcosa può cambiare).
comunque se cerchi in vecchi post il problema non era solo mio.

p.s.
io sono passato ad usare le classe pahpmailer (vedi articoli php) e, al 99% i problmi non susssistono più
 
no io intendevo questa parte
PHP:
}elseif($mail == "" OR !eregi("^[a-z0-9_]+@[a-z0-9\-]+\.[a-z0-9\-\.]+$]", $mail)){
echo("<b>Il campo mail non è corretto.</b>\n");

poi non ho capito bene cosa dicevi per la conferma per l'mail
mi da errore

Notice: Undefined index: mail in C:\Programmi\EasyPHP 3.0\www\forum\conferma_account.php on line 3
Notice: Undefined index: conf in C:\Programmi\EasyPHP 3.0\www\forum\conferma_account.php on line 4
PHP:
<?php
require_once"config.php"; 
$mail=htmlspecialchars($_GET['mail']);
$conferma=htmlspecialchars($_GET['conf']);

if($mail != "" AND $conferma != ""){
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;
}}else{
Header("index.php"); 
}?>
 
Ultima modifica:
ciao
prova con questa espressione regolare, io l'ho utilizzata in diversi siti

!eregi("^([-a-z0-9\._]+)(@[-a-z0-9\._]+)(\.{1,2}[a-z0-9]{2,6})$", $mail)
 
ciao
per quanto riguarda gli errori la pagina non funziona autonomamente ma solo se chiamata da uno dei due link che sono nell'email se la fai funzionare cosi non ricevendo il $_GET da nessuno ti da indefinito.
iloltre verifica che il nome dentro i get siano uguali a quelli che usi nella querystringa
 
ciao
nell'email inserisci questi due link

$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>";

che chiamano la pagina confirm_reg.php trasmettendogli via GET i valori di em e conf

la pagina confirm_reg.php riceve i valori e quindi
1.

$mail=htmlspecialchars($_GET['mail']);
$conferma=htmlspecialchars($_GET['conf']);

dove conf va bene ma mail no, o metti sia nei link mail o nel $_GET['em']

2. se chiami la pagina da qualche altra cosa o direttamente dalla linea di comando del bw (es. http://www.mio_sito.it/confirm_reg.php/) non trasmetti la query stringa quindi i due get risultano indefiniti
 
em lo cambiato con mail....^^prima
da da quel errore lo stesso
il problema sta
se vado nella pagina
conferma.php
senza conferma.php?mail=dasa&conf=quello che ce
da errore capito se io le metto no...

p.s.
usando la querysql UPDATE devo aumentare il valore di +1 sai dirmi come fare....

vi ringrazio lo stesso dei consigli che mi avete dato...
 
Ultima modifica:
angel, è quello che borgoitalia ti ha già spiegato. Se la variabile non è definita nell'URL è ovvio che non funzioni, come speri che faccia altrimenti PHP a recuperarla? :hammer:

Comunque ti consiglio, per evitare il problema in futuro, di implementare un semplicissimo controllo if, se la variabile non è definita restituisci un errore e basta.
 
ciao

<?php
if(!isset($_GET['mail']) || !isset($_GET['mail']){
header("index.php");
}else{
require_once"config.php";
$mail=htmlspecialchars($_GET['mail']);
$conferma=htmlspecialchars($_GET['conf']);
if($mail != "" AND $conferma != ""){
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;
}
}else{
header("index.php");
}
}//fine if-else isset
?>
 
ho capito ma il problema sta nel fatto se già e attivato ce la possibilità di cancellarlo....
io vorrei fare se già e stato attivato non ce bisogno di attivarlo e non ce la possibilità di cancellarlo...


p.s.
usando la querysql UPDATE devo aumentare il valore di +1 sai dirmi come fare....
 
cosi pensi vada bene...
PHP:
<?php
if(!isset($_GET['mail']) || !isset($_GET['conf'])){
header("index.php");
}else{
require_once"config/config.php";
$mail=htmlspecialchars($_GET['mail']);
$conferma=htmlspecialchars($_GET['conf']);

$query = mysql_query("SELECT * FROM forum_utenti WHERE mail_utente ='".$mail."'");
if($query == 0){
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;
}}

}?>
Comunque, che cosa devi aumentare di 1?

mi serve per la pagina delle risposte aumentare di 1 il numero che e gia impostato nella tabella se è
8 diventa 9 e cosi via sai come potrei fare...

E ho già detto che impostare AUTO_INCREMENT a 0 è una gran bella vaccata...

scusa perche....^^
 
ciao
nel complesso lo script va bene, anche se sono d'accordo con alessandro sull'utoincrement, comunque al posto dell'alert che l'utente devi cliccare io metterei il ritorno automatico perche l'utente deve interagire il meno possibile con questa pagina

PHP:
switch($conferma){ 
case "SI": 
mysql_query("UPDATE forum_utenti SET attivo_utente = '1' WHERE mail_utente ='".$mail."'"); 
echo "<h2>Account Confermato</h2>";
echo "<meta http-equiv='Refresh' content='3; URL=index.php'>";
break; 
case "NO": 
mysql_query("DELETE FROM forum_utenti WHERE mail_utente ='".$mail."'"); 
echo "<h2>Account Cancellato</h2>";
echo "<meta http-equiv='Refresh' content='3; URL=index.php'>";
break; 
}

anze secondo me non dovrebbe vedere alcun messaggio e metterei content='0 URL=index.php'>";
 
ci penserò...
invece per

mi serve per la pagina delle risposte aumentare di 1 il numero che e gia impostato nella tabella se è
8 diventa 9 e cosi via sai come potrei fare...
 
ciao
sarà perche la discussione è diventata lunga, ma non capisco esattamente cosa intendi per
mi serve per la pagina delle risposte aumentare di 1 il numero che e gia impostato nella tabella se è
8 diventa 9 e cosi via sai come potrei fare...

cioè quale pag e/o quale campo della tabella?
 
ciao, potresti fare così

PHP:
<?php
switch($conferma){ 
case "SI": 
//leggi il valore di messaggi_utenti
$riga=mysql_fetch_array(mysql_query("SELECT messaggi_utenti FROM forum_utenti WHERE  mail_utente ='".$mail."'"));
//ricavi il valore e lo incrementi di 1
$num_messaggi=$riga['messaggi_utenti'] + 1;
//poi nella query di UPPA modifichi anche il suo valore nella tabella
mysql_query("UPDATE forum_utenti SET attivo_utente = '1', messaggi_utenti=".$num_messaggi." WHERE mail_utente ='".$mail."'"); 
echo "<h2>Account Confermato</h2>";
echo "<meta http-equiv='Refresh' content='3; URL=index.php'>";
break; 
case "NO": 
mysql_query("DELETE FROM forum_utenti WHERE mail_utente ='".$mail."'"); 
echo "<h2>Account Cancellato</h2>";
echo "<meta http-equiv='Refresh' content='3; URL=index.php'>";
break; 
} 
?>
 

Discussioni simili