PDA

View Full Version : [PHP] Errore nella registrazione


error 404
14-02-2010, 19:15
ho un altro problema:
$myconn = mysql_connect('localhost','root',''); //connessione con l'utente 'root'
mysql_select_db('bc', $myconn) or die('Errore... select db'); //selezione database

if ($_POST['pwd']==$_POST['pwd1']) { //controllo coincidenza password
$query = "SELECT usr,eml FROM utenti WHERE usr='".$_POST['usr']."' or '".$_POST['eml']."';";
$result = mysql_query($query, $myconn) or die('Errore... result');
$tab= mysql_fetch_array($result);
if ($tab[0]!=$_POST['usr']) {
if ($tab[1]!=$_POST['eml']) {
$query = "INSERT INTO utenti VALUES ('".$_POST['usr']."','".$_POST['eml']."',md5('".$_POST['pwd']."'),'');"; //esecuzione query
$result = mysql_query($query, $myconn) or die('Errore... result');
echo "Registrazione avvenuta con successo";
} else {
echo "Email già in uso";
}
} else {
echo "L'username è già in uso";
}
} else {
echo "Hai inserito due password differenti!";
}

non mi vede le email che sono già presenti lasciando andare la registrazione a buon fine (il controllo sull'username funziona tranquillamente). Se invece metto come operatore == anziché != tutte le mail che inserisco sono già esistenti. Ho sbagliati a mettere due if appiccicati o cosa?

Grazie ciao

|------------------------------------------PROBLEMA RISOLTO-------------------------------------------------------|
Sera a tutti,
sto cercando di creare un sistema di registrazione con il seguent codice:

<form action="elabora.php" method="post">
Username: <br> <input type="text" name="username"><br><br>
Email: <br> <input type="email" name="email"><br><br>
Password: <br> <input type="password" name="password"><br><br>
Ripeti password: <br> <input type="password" name="password1"><br><br><br>
<input type="submit" name="submit" value="Invia">
</form>

e questo è elabora.php
<?php

if ($_POST['password']==$_POST['password1']) {
$myconn = $mysql_connect('localhost','root','') or die('Errore myconn');
mysql_select_db('gmbc', $myconn) or die('Errore select db');
$query="INSERT INTO utenti VALUES('$_POST['username']','$_POST['password']','$_POST['email']')";
$result="mysql_query($query, $myconn) or die('Errore result')";
} else {
echo "Hai inserito due password diverse!";
}

?>

mi restituisce quest'errore:
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\wamp\www\sito\elabora.php on line 11
(la line 11 è quella "mysql_select_db").

Però non capisco quale sia... premetto che la tabella utenti ha un ID che si autoincrementa e a tal proposito vorrei sapere se nell'INSERT VALUES devo inserirolo.

Detto questo spero possiate aiutarmi.

Grazie ciao.

KuWa
14-02-2010, 19:31
il database non ha password? ma poi tu confronti password con password1... cioè se sono uguali accede? :O scusa ma dovrai andare a confrontarla con qlche valore presente nel db...

error 404
14-02-2010, 19:35
il database non ha password? ma poi tu confronti password con password1... cioè se sono uguali accede? :O scusa ma dovrai andare a confrontarla con qlche valore presente nel db...Dunque ho usato l'username root che di per se non ha password (così dice phpmyadmin).
Poi per il confronto delle password è un'altra cosa: controllo che l'untente le abbia inserite uguali... è il classico controlo che uno mette, che c'è di strano?

michx
14-02-2010, 19:49
Ci sono parecchi errori di sintassi... ecco il codice corretto:

if ($_POST['password']==$_POST['password1']) {
$myconn = mysql_connect('localhost','root','') or die('Errore myconn');
mysql_select_db('gmbc', $myconn) or die('Errore select db');
$query="INSERT INTO utenti VALUES('".$_POST['username']."','".$_POST['password']."','".$_POST['email']."')";
$result=mysql_query($query, $myconn) or die('Errore result');
} else {
echo "Hai inserito due password diverse!";
}

P.S: Il controllo che fai sulle password dovresti farlo dopo aver controllato se il form html sia stato effettivamente "lanciato". Inoltre sarebbero opportuni controlli di sicurezza sulle variabili.

error 404
14-02-2010, 20:51
Mitigozz!
Grazie mille, però ora mi dice Errore result.... cosa c'è che non va in quella riga? :stordita:

michx
14-02-2010, 21:29
Come hai costruito la tabella utenti sul DB?

error 404
14-02-2010, 21:34
ID int(11) auto increment (primary key)
username text
password text
email text

KuWa
14-02-2010, 22:11
Dunque ho usato l'username root che di per se non ha password (così dice phpmyadmin).
Poi per il confronto delle password è un'altra cosa: controllo che l'untente le abbia inserite uguali... è il classico controlo che uno mette, che c'è di strano?
ah no sorry tutto chiaro, è che ero occupato e ho letto con distrazione :P

michx
15-02-2010, 08:38
ID int(11) auto increment (primary key)
username text
password text
email text

Dunque non ti accorgi che manca qualcosa nella query INSERT? :mbe:

error 404
16-02-2010, 16:18
Non ricordavo che si dovessero mettere gli apici per gli attributi che non venivano inseriti dall'utente :D

Cmq adesso ho un altro problema:
$myconn = mysql_connect('localhost','root',''); //connessione con l'utente 'root'
mysql_select_db('bc', $myconn) or die('Errore... select db'); //selezione database

if ($_POST['pwd']==$_POST['pwd1']) { //controllo coincidenza password
$query = "SELECT usr,eml FROM utenti WHERE usr='".$_POST['usr']."' or '".$_POST['eml']."';";
$result = mysql_query($query, $myconn) or die('Errore... result');
$tab= mysql_fetch_array($result);
if ($tab[0]!=$_POST['usr']) {
if ($tab[1]!=$_POST['eml']) {
$query = "INSERT INTO utenti VALUES ('".$_POST['usr']."','".$_POST['eml']."',md5('".$_POST['pwd']."'),'');"; //esecuzione query
$result = mysql_query($query, $myconn) or die('Errore... result');
echo "Registrazione avvenuta con successo";
} else {
echo "Email già in uso";
}
} else {
echo "L'username è già in uso";
}
} else {
echo "Hai inserito due password differenti!";
}

non mi vede le email che sono già presenti lasciando andare la registrazione a buon fine (il controllo sull'username funziona tranquillamente). Se invece metto come operatore == anziché != tutte le mail che inserisco sono già esistenti. Ho sbagliati a mettere due if appiccicati o cosa?

Grazie ciao




EDIT: risolto non avevo messo un "innocuo" eml='"