Pagina per raccolta adesioni

ilgiaguaro

Nuovo Utente
18 Ott 2010
6
0
0
Ciao a tutti, nono sono molto "esperto" di php ed è per questo che cerco aiuto.
Ho bisogno di fare una pagina per una raccolta adesioni che memorizzi i dati su un database sql.
Il database è costituito da una tabella con i seguenti campi:
id,nome,cognome,telefono,mail
Il campo id è INT auto_increment ed è proprio lì che ho bisogno di aiuto.
In pratica devo raccogliere adesioni ad un corso con posti limitati a 150, devo quindi effettuare un controllo sull'id.
if (id < 150) { permetti l'iscrizione e memorizza i dati}
else { messaggio di limite raggiunto}.

Codice:
<?php

// includiamo il file di connessione al database 

include ('configurazione.php');



// creiamo il nostro modulo di registrazione

?>


<TITLE>Iscrizione al Corso XYZ</TITLE>
<form action='?inviodati=ok' method='POST'>

  <h1 align="center">ISCRIZIONE AL CORSO XYZ</h1>
  <p align="center">&nbsp;</p>
  <p align="center"><b>Nome</b><br>
    <input type='text' name='nome'><br>
    
    <b>Cognome</b><br>
    <input type='text' name='cognome'><br>
    
    <b>Indirizzo E-mail</b><br>
    <input type='text' name='mail'><br>
    
    <b>Telefono</b><br>
    <input type='text' name='telefono'><br>
    <br>
    <input type='submit' value='Invia Registrazione'><br>
  </p>
</form>



<div align="center">
  <?php

// attraverso un if controlliamo che il form sia stato inviato 

if ( $_GET['inviodati'] == "ok" ) {



// recuperiamo i dati inviati con il form


$nome = $_POST['nome'];

$cognome = $_POST['cognome'];

$mail = $_POST['mail'];

$telefono = $_POST['telefono'];


// ora controlliamo che i campi siano stati tutti compilati

if ( $nome == TRUE && $mail == TRUE && $cognome == TRUE && $telefono == TRUE)  {


// controlliamo se il campo mail è stato scritto in maniera errata


$email = eregi("^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$",$mail); 

if ( $email == TRUE ) {



// controlliamo se l'mail è presente già nel database

$sql = mysql_query("SELECT * FROM tabella_registrati WHERE mail = '$mail'") or die ("L'indirizzo e-mail e' gia' presente nel database");

$num_rows = mysql_num_rows($sql); 

if ( $num_rows == 0 ) {

// ora controlliamo che le password inserite siano identiche




mysql_query("INSERT INTO tabella_registrati
             (id , cognome, nome , telefono , mail )
             VALUES 
             ('','$cognome', '$nome', '$telefono', '$mail' )") OR DIE(mysql_error());

// e inviamo una mail con la riuscita registazione


mail ($mail, "Avvenuta registrazione Corso XYZ", "Complimenti,la registrazione al corso e' avvenuta con successo", "From: [email protected]");

// messaggio da far visualizzare all'utente finale

echo "Complimenti registrazione effettuata con successo.";



} 

else {

echo "L'indirizzo e-mail e' gia' presente nel database";

}

} 

else {

echo "La tua mail non e' idonea per la registrazione.";

}


} 

else {

echo "Tutti i campi sono obbligatori.";

}
}

?>
</div>

Ecco il codice della pagina, adattato alle mie esigenze...

qualcuno saprebbe dirmi come implementare quanto detto sopra!??


Grazie mille!
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
non ti conviene effettuare il controllo sul numero degli id perché potrebbero essere non consecutivi a causa di cancellazioni, effettua invece il controllo sul numero dei record:

PHP:
if(mysql_num_rows($sql)<150){
// esegui l'insert
}else{
echo "Raggiunto il numero massimo di adesioni";
}
 

ilgiaguaro

Nuovo Utente
18 Ott 2010
6
0
0
Ho inserito così...ma continua a farmi iscrivere senza limitazioni...

Codice:
$sql = mysql_query("SELECT * FROM tabella_registrati WHERE mail = '$mail'") or die ("L'indirizzo e-mail e' gia' presente nel database");

$num_rows = mysql_num_rows($sql); 

if ( $num_rows == 0 ) {

// ora controlliamo che le password inserite siano identiche

if(mysql_num_rows($sql)<6){
// esegui l'insert



mysql_query("INSERT INTO tabella_registrati
             (id , cognome, nome , telefono , mail )
             VALUES 
             ('','$cognome', '$nome', '$telefono', '$mail' )") OR DIE(mysql_error());

// e inviamo una mail con la riuscita registazione


mail ($mail, "Avvenuta registrazione Corso XYZ", "Complimenti,la registrazione al corso e' avvenuta con successo", "From: [email protected]");

// messaggio da far visualizzare all'utente finale

echo "Complimenti registrazione effettuata con successo.";



}else{
echo "Raggiunto il numero massimo di adesioni";
}
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
come fai tu il numero di record sarà sempre minore di 6, anzi sempre = a 1 in quanto la query che usi per verificare non cerca tutti i record, ma solo quelli che verificano la condizione mail = '$mail'
prova così
PHP:
<?php
$sql = mysql_query("SELECT * FROM tabella_registrati WHERE mail = '$mail'") or die ("L'indirizzo e-mail e' gia' presente nel database");
$num_rows = mysql_num_rows($sql); 
if ( $num_rows == 0 ) {
	// ora controlliamo che le password inserite siano identiche
	//ecc....
	//verifico quanti record ho in tutto
	$num_rows_is=mysql_num_rows(mysql_query("SELECT * FROM tabella_registrati"));
	if($num_rows_is<6){
		// esegui l'insert
		mysql_query("INSERT INTO tabella_registrati(id , cognome, nome , telefono , mail ) VALUES('','$cognome', '$nome', '$telefono', '$mail' )") OR DIE(mysql_error());
		// e inviamo una mail con la riuscita registazione
		mail ($mail, "Avvenuta registrazione Corso XYZ", "Complimenti,la registrazione al corso e' avvenuta con successo", "From: [email protected]");
		// messaggio da far visualizzare all'utente finale
		echo "Complimenti registrazione effettuata con successo.";
	}else{
		echo "Raggiunto il numero massimo di adesioni";
	}
}
?>
p.s.
usa il tag php e non quello di codice
 

ilgiaguaro

Nuovo Utente
18 Ott 2010
6
0
0
Grazie mille per le risposte,ma via via che affino il codice mi sto trovando davanti altri piccoli problemini.
Mi spiego meglio:
Ho deciso di inserire un controllo della validità dell'e-mail e l'ho implementato creando un nuovo campo nella tabella che di default va a 0,al momento dell'iscrizione viene inviata una mail con un link che porta ad una pagina conferma.php che esegue un update sulla riga settando ad un il valore "attiva" che come detto di default va a 0.

Adesso per questioni di follie "mie" vorrei che la mail che arriva al cliente abbia la variabile "nascosta"...criptata tramite md5

Ecco il codice:

PHP:
// controlliamo se l'mail è presente già nel database

$sql = mysql_query("SELECT * FROM tabella_registrati WHERE mail = '$mail'") or die ("L'indirizzo e-mail e' gia' presente nel database"); 

$num_rows = mysql_num_rows($sql);  

if ( $num_rows == 0 ) {  // ora controlliamo che le password inserite siano identiche 


    
$num_rows_is=mysql_num_rows(mysql_query("SELECT * FROM tabella_registrati WHERE attiva='1'")); //verifico quanti record ho in tutto 
   
    if($num_rows_is<2){

// esegui l'insert



mysql_query("INSERT INTO tabella_registrati
             (id , cognome, nome , telefono , mail, attiva ) VALUES ('','$cognome', '$nome', '$telefono', '$mail','' )") OR DIE(mysql_error());

// e inviamo una mail con la riuscita registazione

$mail_md5=md5($mail);

mail ($mail, "Avvenuta registrazione Corso XYZ", "Complimenti,la registrazione al corso e' avvenuta con successo   
http://www.xxx.it/registrazione/conferma.php?cod=$mail_md5", "From: [email protected]");

// messaggio da far visualizzare all'utente finale

echo "Complimenti registrazione effettuata con successo.";



}
else{
echo "Raggiunto il numero massimo di adesioni";
}

Arriva così la mail con l'indirizzo email nel link di conferma criptata...

Ecco il codice della pagina conferma.php

PHP:
<?php

include ('configurazione.php');

$mail=$_GET[$mail_md5];
$mail_md5=$_GET['cod'];


$num_rows_is=mysql_num_rows(mysql_query("SELECT * FROM tabella_registrati WHERE attiva='1'")); //verifico quanti record ho in tutto 
   
    if($num_rows_is<2){

mysql($db_name,"UPDATE tabella_registrati SET attiva='1' WHERE mail='$mail'") or die ("Errore durante la connessione");

echo "Iscrizione avvenuta con successo";

}
else{ echo "I posti sono esauriti";
}

?>

Ho reso così,ma forse sbaglio nel settare le variabili poichè nel database il campo "attiva" non viene updatato dalla query presente nella pagina conferma.php


Cosa sbaglio?!

Grazie mille!!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
probabilmente, se non ho capito male, nel campo mail hai l'indirizzo in chiaro (es. [email protected]) e lo confronti con un valore modificato (md5), quindi non lo trova.
non so se è possibile decodificare, cioè dal valore mdcinquato ritornare al valore in chiaro, se non è così dovresti farti un altro campo es email_md5 e salvarvi il valore codificato e poi fare la WHERE su quello
.... WHERE email_md5='$mail_md5'....
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Le operazioni matematiche necessarie per decodificare una stringa codificata in MD5 sono talmente complesse da essere definite impossibili. In altre parole non si può fare. Hai bisogno di salvare nel database l'indirizzo codificato in MD5, in modo da poterlo confrontare con quello inserito.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
@alex: era quello che pensavo io.
comunque io farei due campi, uno con l'email in chiaro e uno mndcinquato, in chiaro puo servirmi se devo spedire un'email allutente, mdcinquato per mettere nel get di cancellazione
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Ora che ci penso basta anche solo un campo contenente l'email dell'utente. Tanto l'hash MD5 corrispondente sarà sempre lo stesso. Per cercare all'interno del database basta fare una cosa del genere:
Codice:
SELECT * FROM tabella WHERE MD5(email) = 'md5_inserito_da_utente'
 
Discussioni simili
Autore Titolo Forum Risposte Data
A Aiuto per pagina php PHP 0
Y Vorrei selezionare un colore di sfondo per una pagina web Javascript 0
felino [Wordpress] Title dinamico per pagina WordPress 0
F [PHP] Pagina conta verghe per carpenteria PHP 15
T con oop creare un ciclo per una pagina dinamica html con php PHP 3
R [PHP] creare pagina profilo per ogni utente PHP 4
S [CERCO] Inviti Facebook per la mia pagina Annunci servizi di Social Media Marketing 0
A [COMPRO] pagina instagram dai 10k in su, acount italiani e attivi per fotografia Annunci servizi di Social Media Marketing 0
Instagramsocialmedia vendo pagina INSTAGRAM 70K reali e italiani adatto per fashion blogger o marchi Annunci servizi di Social Media Marketing 6
Merlina3377 Vendo spam per pagina da 310 mila followers Annunci servizi di Social Media Marketing 11
G Inserzione script nella pagina html per jquery jQuery 8
M [VENDO] Pagina Instagram 6k Followers 550 like medi per post Annunci servizi di Social Media Marketing 3
enricoblandini Pagina non ottimizzata per dispositivi moibili Google Search Console 0
J SVENDO PAGINA FACEBOOK 10.000 FANS, PER INFO ENTRA. Annunci servizi di Social Media Marketing 1
J SVENDO PAGINA FACEBOOK 10.000 FANS, PER INFO ENTRA. Annunci servizi di Social Media Marketing 4
A Cerco pagina facebook ed instagram per ecommerce Annunci servizi di Social Media Marketing 3
T Cerco editor per pagina Facebook Offerte e Richieste di Lavoro e/o Collaborazione 2
L VENDO PAGINA FACEBOOK 8000 LIKES REALI (PAGINA POCO ATTIVA, VENDO PER NON UTILIZZO) Annunci servizi di Social Media Marketing 17
A [Javascript] [CSS] elenco affiancato per evitare scorrimento pagina Javascript 4
G Compro post e recensioni per pagina facebook Annunci servizi di Social Media Marketing 1
A Vendo 30.000 inviti per pagina Facebook. Annunci servizi di Social Media Marketing 5
P [HTML] Redirect sito su pagina per Android HTML e CSS 6
L [Javascript] Cliccare su mi piace per accedere a vedere la pagina Javascript 0
M creazione pagina web per esercizio corso di web design Offerte e Richieste di Lavoro e/o Collaborazione 2
P problemi di refresh per reindirizzamento pagina PHP 6
L Script per aggiornare pagina html Javascript 2
M Inserire nel DB i dati provenienti da checkbox e recuperarli poi dal DB per la pagina di edit PHP 20
A Supporto per creazione pagina HTML HTML e CSS 8
Z creazione modulo e pagina invio php per invio dati al db PHP 2
I modo per ricaricare pagina Javascript 1
B Saluti ed aiuto per pagina web html HTML e CSS 11
F [VENDO]Pagina 76K perfetta per chi vuole iniziare a lavorare con FACEBOOK! Annunci servizi di Social Media Marketing 3
M Come procedere per override strutturale pagina contatti Joomla 0
A Sottofondo musicale per pagina Index HTML e CSS 6
andry79fi PLUGIN (o script) per Pagina Facebook con INTERVENTI degli utenti WordPress 0
B Online per tutta la pagina PHP 1
denisgligor ciao, vorrei creare una pagina personale per ogni utente con un dominio di terzo livello... si può ? PHP 0
K immissione password per una pagina PHP 8
M Semplice pagina per inserire/leggere dati su database PHP 5
Alessandro Le Mura Contatore visite per ogni pagina con MYSQL - PHP PHP 40
L Bottone per aggiornare una pagina HTML HTML e CSS 5
giancadeejay Pagina profilo utente diversa per ogni utente. PHP 1
M Vendo spam su pagina a tema sexy per solo adulti Annunci servizi di Social Media Marketing 0
M Creazione di una pagina web per la cancellazione da una mailing list PHP 13
F pagina personalizzata per ogni utente PHP 2
F comando php per caricare delle scritte in una pagina html PHP 4
7thl Slider head per ogni singola pagina WordPress 2
D Problema con il disclaimer/pagina per l'accesso al'sito, funziona solo con firefox PHP 0
Monital attributo iframe per porzione di pagina HTML e CSS 0
P Inserire un'immagine avatar nel profilo per avere ogni utente la sua pagina PHP 42

Discussioni simili