Form Registrazione

Marchintosh

Nuovo Utente
27 Apr 2010
10
0
0
Ragazzi devo utilizzare un database per un progetto all'università e stavo gestendo una registrazione e non riesco a inserire i dati, il codice prende input da una form e vanno a finire qui:

Codice:
<?PHP
// variabili di connessione
// nome server, nome utente,
// Password, nomedatabase, tabella
$ServerName = "localhost";
$UserName = "root";
$Password = "madara";
$DbName = "EP";
$tbl_name="studente";

// la connessione al database e alla tabella
$conn = mysql_connect($ServerName, $UserName, $Password) or die("CONNECTION NON RIUSCITA");
mysql_select_db($DbName, $conn);
$nome = $_GET["nome"];
$cognome = $_GET["cognome"];
$universita=$_GET['universita'];
$username = $_GET["username"];
$password = $_GET["password"];
$conferma=$_GET['conferma'];
$email = $_GET["email"];
$universita = $_GET["universita"];
//$nome = preg_replace("/[^a-z0-9]+/i", "", $_GET['nome']);
//ad eliminare tutti i caratteri in una stringa che non sono numeri/lettere
//ctype_alnum() -> numeri e lettere 
//$str = "CIAO"; $str .= "MONDO"; risultato $str = "CIAO $mondo";
//vedi funzione extract()
//mysql_real_escape_string fa l'escape dei caratteri speciali tipo 
//$username_safe = mysql_real_escape_string($username) e nella query devo mettere per tutte le variabili xxxxx_safe per salvaguardarle

//Verifico il valore di $nome;
 if(chkEmail($email)) {
    if( (!empty($password)) and (!empty($conferma)) ){
         if( $password!=$conferma ) echo"<center>le password non corrispondono : ricontrolla i campi password</center>"; 
         else{ 
                if( (empty($nome)) or (empty($cognome)) or (empty($username)) ) 
                    echo"<center>inserire tutti i campi è obbligatorio</center>";    
                else{
                       if( ($universita=="Salerno") or  ($universita=="Londra") ){
                           $MySql = "SELECT * FROM '.$tbl_name.' WHERE user_name='$username'";
                           $Result = mysql_query($MySql,$conn) or die("Comunicazione al database fallita");
                           $rs = mysql_fetch_array($Result);
                           $a1 = $rs['user'];
                           $a2 = $rs['email'];
                           $rs->close; 
                           if($a1 == $username){
                              die("Questo Nome utente gi&agrave esiste!");
                           }
                           $Result2 = mysql_query("SELECT * FROM '.$tb1_name.' WHERE e-mail='$email'") or die(mysql_query());
                           $rs2 = mysql_fetch_array($Result2);
                           $a2 = $rs2['email'];
                           $a3 = $rs2['user'];
                           $rs->close; 
                           if($a2 == $email){
                              die("Questa email &egrave gi&agrave stata usata dall'utente: $a3");
                           }
                           //$query="Insert into `$tbl_name` (`nome`,`cognome`,`user_name`,`password`,'e-mail','universita') VALUES ('$nome','$cognome','$username','$password','$email','$universita')";
                           $password=d5(sha1(md5(sha1($password))));
                           $query="Insert into ".$tb1_name." (`nome`,`cognome`,`user_name`,`password`,`e-mail`,`universita`) VALUES ('".$nome."','".$cognome."','".$username."','".$password."','".$email."','".$universita."')";
                           
                           $result=mysql_query($query,$conn); // result ci serve x fare il controllo
                           mysql_close($conn);
                           if (!$result)  die("errore registrazione");
                           else echo "<center>".$nome ." ti sei iscritto, ora sei riconosciuto come ".$username."</center>";
                       }
                       else{
                               if(empty($universita)) echo"<center>Spiacente se non inserisce la sua universit&agrave non pu&ograve proseguire</center>";
                               else echo"<center>Spiacente la tua universit&agrave non fa parte del progetto European Platform </center>";
                            }
                     }
                }
     }
   else
         echo"<center>campi password non inseriti correttamente</center>";
   }

     

?>
<?php

function chkEmail($email)
{
    // elimino spazi, "a capo" e altro alle estremità della stringa
    $email = trim($email);
    // se la stringa è vuota sicuramente non è una mail
    if(!$email) {
                 return false;
     }
     // controllo che ci sia una sola @ nella stringa
    $num_at = count(explode( '@', $email )) - 1;
    if($num_at != 1) {
                           return false;
    }
     // controllo la presenza di ulteriori caratteri "pericolosi":
    if(strpos($email,';') || strpos($email,',') || strpos($email,' ')) {
             return false;
    }
    // la stringa rispetta il formato classico di una mail?
    if(!preg_match( '/^[\w\.\-]+@\w+[\w\.\-]*?\.\w{1,4}$/', $email)) {
                      return false;
     }
     return true;
}

?>

Per controllare che la registrazione è andata a buon fine devo verificare che la variabile della query sia 'false'?
Non riesco a capire perchè non riesco ad eseguirla è un problema del database che ho chiamato il nick con campo 'user_name' ? Forse dovrei togliere l' '_' .
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao

PHP:
<?php
 $query="Insert into ".$tb1_name." (`nome`,`cognome`,`user_name`,`password`,`e-mail`,`universita`) VALUES ('".$nome."','".$cognome."','".$username."','".$password."','".$email."','".$universita."')";
?>
i nomi dei campi non vanno "apiciati"
scrivi la querry così, mettendo sotto un var_dump per vedere cosa ti restituisce (poi lo togli)

PHP:
<?php
 $query="Insert into $tb1_name (nome,cognome,user_name,password,e-mail,universita) VALUES ('$nome','$cognome','$username','$password','$email','$universita')";
 var_dump($query);
?>
inoltre togli quel
mysql_close($conn);
generalmente non serve, ci pensa php a chiudere la connessione all'uscita della pagina, spesso da più fastidi che benefici se per caso non si trova al posto giusto

poi per validare l'indirizzo email, al posto dello sproloquio postato, leggi quest'articolo
http://blog.mrwebmaster.it/2010/03/21/validare-email-php5.html

intanto prova così, poi eventualmente riposta
 

Marchintosh

Nuovo Utente
27 Apr 2010
10
0
0
L'email funziona, sicuramente il tuo codice è meglio però a me importi che funzioni la comunicazione col database, leviamoci prima gli esami da mezzo XD.
Da errore su questa riga :
Codice:
$Result = mysql_query($MySql,$conn) or die("Comunicazione al database fallita");
mi restituisce la stringa
 
Ultima modifica:

minatore

Utente Attivo
25 Set 2007
410
0
0
I campi in ordine del db sono:

id int(25) chiave primaria auto_increment
nickname varchar(25)
password varchar(255)
email varchar(25)
manager varchar(25)
team varchar(25)

quella con i tuoi campi è
$query_1=mysql_query("SELECT * FROM iscritti WHERE email='".$mail."' or nickname='".$user."'")
or die("errore nella query;".mysql_error());
$num=mysql_num_rows($query_1);
//se ci sono campi gia occupati
if($num > 0)
{
header("location:error2.php");
exit;
}
//altrimenti procedo con l'inserimento
else
{
$query_insert=mysql_query("INSERT INTO iscritti
(nickname, password, email, manager, team)
VALUES
('$user', '$pass', '$mail', '$manager',
'$team')")or die("errore nella query;".mysql_error());
$result=query($query);
header("location:reg_success.php");
}
alla fine rivediti il codice e cerca di capire cosa abbiamo fatto
ciao
 

minatore

Utente Attivo
25 Set 2007
410
0
0
ciao
scusate se vi incasino un po', ma la funzione
ereg e tutte le simili sono deprecate
quuindi usa le preg o vai ha vedere le filter_var

Ciao Borgo, deprecate intendi che non sono funzionanti oppure che non si usano più e quindi ci sono delle migliore, mi faresti un esempio di come la faresti tu
grazie da minatore
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao torniamo al problema di Marchintosh
intanto prova a scrivere la riga

$MySql = "SELECT * FROM '.$tbl_name.' WHERE user_name='$username'";

in questo modo e aggiungici sotto un var_dump cher poi toglierai

$MySql = "SELECT * FROM $tbl_name WHERE user_name='$username'";
var_dump($MySql);

e quarda cosa ti restituisce, perche l'errore a mio parere non è nella riga

$Result = mysql_query($MySql,$conn) or die("Comunicazione al database fallita");

ma nasce a monte
 

leon-kennedy

Utente Attivo
19 Mag 2010
147
0
0
La registrazione funziona!:mavieni:

Grazie a tutti per il vostro preziosissimo aiuto,in particolare a minatore!0:)

Per il log in una pagina tipo questa può andare bene:

PHP:
<?php
$dbhost="localhost";
$dbuser="beamanager";
$dbpass="";
$conn=mysql_connect($dbhost,$dbuser,$dbpass);

$dbname="my_beamanager";
mysql_select_db($dbname,$conn) or die("Erroe nella connessione");

session_start();
$user=$_POST["user"];
$pass=$_POST["pass"];
if($user!="nome_utente")
{
header("Location:log_error.php");
exit;
}
elseif($pass!="pass")
{
header("Location:log_error.php");
exit;
}
else
{
$_SESSION[username]= $user;
$_SESSION[password]= $pass;
header("Location:/game_index.php");
}
?>
 

minatore

Utente Attivo
25 Set 2007
410
0
0
ciao
quando una funzione è deprecata speso vuo dire che ha vita breve, cioè per ora funzia, ma alla prossima versione può darsi di no, quindi meglio non usare le deprecate si corre il rischio di dover riscrivere.
per come farei io ripeto il link di due post fa'

http://blog.mrwebmaster.it/2010/03/21/validare-email-php5.html

Ho inserito le righe del tuo codice in un form, forse non avrò capito bene come funziona, ma non va, inserendo un indirizzo mail non valido non mi torna niente, mi potresti far capire meglio, grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se leggi i commenti dovrebbe essere sufficiente come spiegazione
PHP:
<?php
//faccio la funzione
function verifica_email($em){  
	//pulisco la stringa  
	$em = filter_var($em, FILTER_SANITIZE_EMAIL);  
	//verifico e ritorno  
	return filter_var($em, FILTER_VALIDATE_EMAIL);   //questa ritorna FALSE se email non corretta, l'indirizzo se corretto
}//fine function
//qui avrò i vari $_POST che non metto ma simulo ecc......
$indirizzo="[email protected]";// 1)questo è giusto
//$indirizzo="pinco*pallo.com";//2)questo è sbagliato
/*qui faccio una variabile, ma non servirebbe la funzione può essere messa direttamente nell'if
lo faccio solo per capirci meglio*/
$verifica=verifica_email($indirizzo);
if($verifica== FALSE){
	echo "l'indirizzo inserito non è corretto";
}else{
	echo "l'indirizzo $verifica è corretto";
}
//commentando 1) e decommentando 2) vedi come cambia
?>

modifica: guarda che il filter var mi va a capo non dovrebbe
 
Ultima modifica:

leon-kennedy

Utente Attivo
19 Mag 2010
147
0
0
Scusate ragà quest'ultima domanda,mi da un errore alla pagina per la verifica del log in,potete aiutarmi?

PHP:
<?php
$dbhost="localhost";
$dbuser="beamanager";
$dbpass="";
$conn=mysql_connect($dbhost,$dbuser,$dbpass);

$dbname="my_beamanager";
mysql_select_db($dbname,$conn) or die("Erroe nella connessione");

if($_POST) {

	effettua_login();

} else {

	mostra_form();
	
}

function mostra_form()

{

	// mostro un eventuale messaggio

if(isset($_GET['msg'])) {

	echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';
	
}

}

function effettua_login()

{
	// recupero il nome e la password inseriti dall'utente
	$user = trim($_POST['user']);

	$pass = trim($_POST['pass']);

	// verifico se devo eliminare gli slash inseriti automaticamente da PHP

if(get_magic_quotes_gpc()) {

	$user      = stripslashes($user);

	$pass  = stripslashes($pass);

}
	
 
	
	// verifico la presenza dei campi obbligatori
	
if(!$user || !$pass) {

	$messaggio = urlencode("Non hai inserito il nick o la password.");

	header("location: $_SERVER[PHP_SELF]?msg=$messaggio");

	exit;
	
}
	
	// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
	
$user = mysql_real_escape_string($user);

$pass = mysql_real_escape_string($pass);

	// preparo ed invio la query
$query = ("SELECT * FROM iscritti WHERE nickname='".$user."' and password='".$pass."'")
$result = mysql_query($query);

	// controllo l'esito

if (!$result) {
die("Errore nella query $query: " . mysql_error());

}

$record = mysql_fetch_array($result);


if(!$record) {
	$messaggio = urlencode('Nome utente o password errati');
	header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
} else {
	session_start();
	$_SESSION['user_id'] = $record['id'];
	$messaggio = urlencode('Login avvenuto con successo');
	header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
}
}
?>

L'errore è alla riga 76 $result = mysql_query($query);
Ma sono sicuro di aver sbagliato qualcosa prima!
 

minatore

Utente Attivo
25 Set 2007
410
0
0
ciao
se leggi i commenti dovrebbe essere sufficiente come spiegazione
PHP:
<?php
//faccio la funzione
function verifica_email($em){  
	//pulisco la stringa  
	$em = filter_var($em, FILTER_SANITIZE_EMAIL);  
	//verifico e ritorno  
	return filter_var($em, FILTER_VALIDATE_EMAIL);   //questa ritorna FALSE se email non corretta, l'indirizzo se corretto
}//fine function
//qui avrò i vari $_POST che non metto ma simulo ecc......
$indirizzo="[email protected]";// 1)questo è giusto
//$indirizzo="pinco*pallo.com";//2)questo è sbagliato
/*qui faccio una variabile, ma non servirebbe la funzione può essere messa direttamente nell'if
lo faccio solo per capirci meglio*/
$verifica=verifica_email($indirizzo);
if($verifica== FALSE){
	echo "l'indirizzo inserito non è corretto";
}else{
	echo "l'indirizzo $verifica è corretto";
}
//commentando 1) e decommentando 2) vedi come cambia
?>

modifica: guarda che il filter var mi va a capo non dovrebbe

ok grazie mo la provo
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se quanto hai postato è quello che stuai usando l'errore non è alla riga 76 ma alla precedente

$query = ("SELECT * FROM iscritti WHERE nickname='".$user."' and password='".$pass."'")
1. le parentesi non servono
2. dimenticato punto e virgola fine istruzione

$query = "SELECT * FROM iscritti WHERE nickname='".$user."' AND password='".$pass."'";
oppure, in questo caso meglio
$query = "SELECT * FROM iscritti WHERE nickname='$user' AND password='$pass.'";
 

leon-kennedy

Utente Attivo
19 Mag 2010
147
0
0
ciao
se quanto hai postato è quello che stuai usando l'errore non è alla riga 76 ma alla precedente

$query = ("SELECT * FROM iscritti WHERE nickname='".$user."' and password='".$pass."'")
1. le parentesi non servono
2. dimenticato punto e virgola fine istruzione

$query = "SELECT * FROM iscritti WHERE nickname='".$user."' AND password='".$pass."'";
oppure, in questo caso meglio
$query = "SELECT * FROM iscritti WHERE nickname='$user' AND password='$pass.'";
1000 grazie sei stato utilissimo!Immaginavo di aver sbagliato qualcosa alla riga sopra!0:)
 

Marchintosh

Nuovo Utente
27 Apr 2010
10
0
0
Ho revisionato in questa maniera, ma mi da sempre errore sulla seconda query e poi per controllare se inserimento della form viene correttamente nel database devo fare quell'if se è falso vuol dire che non è andato a buon fine giusto?
Perchè se è corretto come ho scritto non funziona nemmeno la query per la registrazione.
Allora riepilogando
Problema 1:
$Result2 da il messaggio di errore
Problema 2:
se tralascio il precedente $query nell'if(!$result) stampa il messaggio di errore

Codice:
<?PHP
// variabili di connessione
// nome server, nome utente,
// Password, nomedatabase, tabella
$ServerName = "localhost";
$UserName = "root";
$Password = "madara";
$DbName = "EP";
$tbl_name="studente";

// la connessione al database e alla tabella
$conn = mysql_connect($ServerName, $UserName, $Password) or die("CONNECTION NON RIUSCITA");
mysql_select_db($DbName, $conn);
$nome = $_GET["nome"];
$cognome = $_GET["cognome"];
$universita=$_GET['universita'];
$username = $_GET["username"];
$password = $_GET["password"];
$conferma=$_GET['conferma'];
$email = $_GET["email"];
$universita = $_GET["universita"];


//Verifico il valore di $nome;
 if(chkEmail($email)) {
    if( (!empty($password)) and (!empty($conferma)) ){
         if( $password!=$conferma ) echo"<center>le password non corrispondono : ricontrolla i campi password</center>"; 
         else{ 
                if( (empty($nome)) or (empty($cognome)) or (empty($username)) ) 
                    echo"<center>inserire tutti i campi è obbligatorio</center>";    
                else{
                       if( ($universita=="Salerno") or  ($universita=="Londra") ){
                           $MySql = "SELECT * FROM " . $tbl_name . " WHERE user_name='" . $username . "'";
                           $Result = mysql_query($MySql,$conn) or die("Comunicazione al database fallita");
                           $rs = mysql_fetch_array($Result);
                           $a1 = $rs['user_name'];
                           $a2 = $rs['email'];
                           $rs->close; 
                           if($a1 == $username){
                              die("Questo Nome utente gi&agrave esiste!");
                           }
                          $MySql2 = "SELECT * FROM " . $tbl_name . " WHERE e-mail='" . $email ."'";
                           $Result2 = mysql_query($MySql2,$conn) or die("Comunicazione al database 2 fallita");
                          
                           $rs2 = mysql_fetch_array($Result2);
                           $a2 = $rs2['email'];
                           $a3 = $rs2['user_name'];
                           $rs->close; 
                           if($a2 == $email){
                              die("Questa email &egrave gi&agrave stata usata dall'utente: $a3");
                           }
                           $password=(sha1(md5(sha1($password))));
                           $query = "insert into " . $tbl_name. "(nome, cognome, user_name, password, e-mail, universita) VALUES ('$nome', '$cognome', '$username', '$password', '$email', '$universita')";
                           
                           
                           $result=mysql_query($query,$conn); // result ci serve x fare il controllo
                           var_dump($query); //sappiamo cosa ci restituisce la query
                           if (!$result)  die("errore registrazione");
                           else echo "<center>".$nome ." ti sei iscritto, ora sei riconosciuto come ".$username."</center>";
                       }
                       else{
                               if(empty($universita)) echo"<center>Spiacente se non inserisce la sua universit&agrave non pu&ograve proseguire</center>";
                               else echo"<center>Spiacente la tua universit&agrave non fa parte del progetto European Platform </center>";
                            }
                     }
                }
     }
   else
         echo"<center>campi password non inseriti correttamente</center>";
   }

     

?>
<?php

function chkEmail($email)
{
    // elimino spazi, "a capo" e altro alle estremità della stringa
    $email = trim($email);
    // se la stringa è vuota sicuramente non è una mail
    if(!$email) {
                 return false;
     }
     // controllo che ci sia una sola @ nella stringa
    $num_at = count(explode( '@', $email )) - 1;
    if($num_at != 1) {
                           return false;
    }
     // controllo la presenza di ulteriori caratteri "pericolosi":
    if(strpos($email,';') || strpos($email,',') || strpos($email,' ')) {
             return false;
    }
    // la stringa rispetta il formato classico di una mail?
    if(!preg_match( '/^[\w\.\-]+@\w+[\w\.\-]*?\.\w{1,4}$/', $email)) {
                      return false;
     }
     return true;
}

?>
 

Marchintosh

Nuovo Utente
27 Apr 2010
10
0
0
ok il problema era la variabile e-mail nel database, non prendeva il trattino ora mettendo e_mail funziona :). Mi ha fatto dannare :book:.
 
Discussioni simili
Autore Titolo Forum Risposte Data
A [PHP] Controllo nome utente form di registrazione PHP 4
X__WELBO__X [css] form registrazione utente HTML e CSS 9
P [PHP] come criptare una password in un form di registrazione PHP 4
F form registrazione PHP 3
F Codic e php visibile su form registrazione utenti PHP 2
L errore mysql per form di registrazione PHP 3
D Form Registrazione con conferma via email - problema PHP 10
L Form di registrazione e log in. PHP 2
S Problemi form registrazione newsletter PHP 0
C Form registrazione Bootstrap PHP 0
C Form di registrazione personalizzato PHP 2
F script php form registrazione PHP 13
F Controlli form per Registrazione utenti PHP 9
S Memorizzare nome file allegato da form registrazione PHP 1
C Form login e registrazione aruba Hosting 7
A form registrazione + php + alert javascript Javascript 6
emanuelevt form per registrazione Javascript 2
C Cancellazione-Annulla Registrazione Dati appena Inseriti nel Form dall' Utente PHP 13
P Aiuto form registrazione utenti PHP 5
I Creare un form di registrazione PHP 7
B Form di registrazione Classic ASP 0
W Form di registrazione HTML e CSS 5
M problema form registrazione Classic ASP 1
S passare un valore da un form a un file .php con metodo post PHP 4
K Form che manda dati doppi PHP 1
K Problema form update PHP 2
Elisacau [Contact form 7] Inserire Numero auto incrementante WordPress 1
K form Inserimento record mysql PHP 2
I Form con selettore HTML e CSS 0
K [php]form invio dati PHP 0
G form invio multiplo con checkbox PHP 12
nivaria.achinet Intercettare form solo dopo invio Javascript 1
D Form contatti non funzionante HTML e CSS 0
A Stampare dati da form PHP 8
M Unire 2 funzioni per l'invio di un form e con l'apertura di un div Javascript 0
I Form HTML e CSS 17
otto9due $_FILE non passa i dati dal form PHP 1
M Form: come tornare ai campi già compilati dopo invio PHP 1
G Invio form con PHP PHP 3
felino Form action costum e parametri in queryString WordPress 1
M Come recuperare molteplici input form PHP 1
M Collegamento tra form html e script php PHP 4
L form immagini per il database PHP 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
L inserimento form dati multipli ? PHP 0
L Problemi form Pagina php HTML e CSS 3
Cosina Creare bottone delete in form upload PHP 5
Cosina Creare bottone delete in form upload PHP 1
D Devo far funzionare un form di contatti PHP 4

Discussioni simili