Hol a hiba? (PHP)
"Parse error: syntax error, unexpected T_STRING in *.php on line *"
A hibás sor elejére ¤ jelet tettem.
<?php
$host="***";
$dbusername="***";
$dbpassword="***";
$db_name="***";
$tbl_name="members";
mysql_connect("$host", "$dbusername", "$dbpassword")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$username=$_POST['username'];
$password=$_POST['password'];
$password2=$_POST['password2'];
$email=$_POST['email'];
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);
$sql=SELECT * FROM members WHERE username='$username';
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if(($count==0) && ($password==$password2)){
¤ INSERT INTO members (username, password, email) VALUES ('$username','$password','$email');
}
else if($password!=$password2) {
echo 'A jelszavak nem egyeznek!';
}else{
echo 'A felhasználó már létezik.';
}
?>
Nem lehet egy SQL-parancsot direktben beírni oda, ahol egy PHP utasítást vár az interpreter. Ugyanúgy kéne megoldani, mint a felette levő sorokban, mysql_querybe ágyazva.
Aztán ha majd ez megy, gyere vissza, és olvasd el, hogy közben hárman beírták, hogy ne használj mysql_queryt, ami deprecated státuszban van, elavult. De először használd.
Könnyebb felsorolni, hogy hol NINCS hiba. De nagyon helyesen kicsillagoztad a hibaüzenetben azt, hogy hanyadik sorra hivatkozik (bár jelen esetben mindegy is).
1) Az OR kulcsszavak előtt nincs szóköz.
2) mysql_* függvényeket nem használunk.
3) Ennek így semmi értelme:
if(($count==0) && ($password==$password2)){
¤ INSERT INTO members (username, password, email) VALUES ('$username','$password','$email');
}
Ja, most látom, hogy azzal a spec. karakterrel jelölted meg a hiba helyét, amire vonatkozik a hiba. Bocsi, hogy kicsit lecseszősre sikeredett a hozzászólásom.
mysql_ függvények nem biztonságosak, használj helyette mysqli_ kezdetű függvényeket vagy méginkább PDO-t. Ezeket megtalálod a PHP dokumentációjában a php.net oldalon.
A MySQL parancsok így önmagukban nem jelentenek semmit sem a PHP-ben. Oké, hogy ez egy insert és nem szükséges tárolni a visszatérési értékét, de legalább egy függvény paramétereként kellene átadni, ha előtte értékadás nem is szerepel. Mivel több kapcsolat is definiálható, ha tudná is értelmezni a PHP interpreter ezeket az utasításokat, akkor sem tudná, hogy melyik erőforráshoz forduljon vele.
#3-as voltam.
<?php
$host="***";
$dbusername="***";
$dbpassword="***";
$db_name="***";
$tbl_name="members";
mysql_connect("$host", "$dbusername", "$dbpassword")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$username=$_POST['username'];
$password=$_POST['password'];
$password2=$_POST['password2'];
$email=$_POST['email'];
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);
$sql="SELECT * FROM members WHERE username='$username'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if(($count==0) && ($password==$password2)){
mysql_query("INSERT INTO members (username, password, email) VALUES ('$username','$password','$email')");
}
else if($password!=$password2) {
echo 'A jelszavak nem egyeznek!';
}else{
echo 'A felhasználó már létezik.';
}
?>
DE jobb lenne ha MySQLi -t vagy inkább PDO -t használná mert a régi MySQL sajnos megszünőbe.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!