Hol a hiba? (PHP)

Figyelt kérdés

"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.';

}

?>



2015. febr. 11. 19:59
 1/6 anonim ***** válasza:

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.

2015. febr. 11. 20:06
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:
Habár most látom, hogy rosszul azonosítottad a hibás sort, mert előbb kellett kidobnia hibásnak a $sql= kezdetűt, ahol csúnyán lehagytad az idézőjelet.
2015. febr. 11. 20:07
Hasznos számodra ez a válasz?
 3/6 anonim ***** válasza:

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');

}

2015. febr. 11. 20:28
Hasznos számodra ez a válasz?
 4/6 A kérdező kommentje:
Bocsi, lehet, hogy nem is kellett volna egyből itt kezdenem. Az sql-t kb tudom, de a php-hez nem értek. Azért köszi a segítséget.
2015. febr. 11. 20:41
 5/6 anonim ***** válasza:

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.

2015. febr. 11. 22:18
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:

<?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.

2015. febr. 12. 04:43
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!