Βοήθεια σε SQL + PHP

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
aivas
Δημοσιεύσεις: 24
Εγγραφή: 26 Απρ 2013 13:46

Βοήθεια σε SQL + PHP

Δημοσίευση από aivas » 28 Φεβ 2014 22:00

καλησπέρα στο FORUM !!

θα ήθελα να με βοηθήσετε σαν καινούργιος στον χώρο της php/mysql
προσπαθώ να φτιάξω μια ιστοσελίδα με τα βασικά πράγματα και σιγά σιγά να το προχωρήσω
έχω κολήσει κάπου εδώ
Η απορία μου είναι οτί δεν μπορώ να καταλάβω πότε βάζουμε τα " " και πότε ' '
single or double quotes ο παρακάτω κώδικας δεν ξέρω τι πρόβλημα μπορεί να έχει μάλλον ειναι με τα quotes αν μπορεί κάποιος να με βοηθήσει . Ευχαριστώ

Με εκτίμιση
Χρήστος

Κώδικας: Επιλογή όλων

<?php 
$username = $_POST&#91;'username'&#93;;
$password = $_POST&#91;'password'&#93;;

include &#40;'db_connect'&#41;;
$sql=SELECT * FROM users WHERE username = $username AND password=$password;
$result = mysql_query&#40;$sql&#41;;

$count= mysql_num_rows&#40;$result&#41;;

if &#40;$count >0 &#41;
&#123;
	session_start&#40;&#41;;
	$_session&#91;'username'&#93;=$username;
	$_session&#91;'password'&#93;=$password;
	
	header &#40;'location &#58; login_success.php'&#41;;
&#125;
else 
&#123;
	echo "Wrong username or password";
&#125;

?>

Άβαταρ μέλους
burnmind
Script Master
Δημοσιεύσεις: 954
Εγγραφή: 26 Σεπ 2009 02:14
Τοποθεσία: UK
Επικοινωνία:

Βοήθεια σε SQL + PHP

Δημοσίευση από burnmind » 28 Φεβ 2014 23:21

Όσον αφορά τα single & double quotes, ένα απλό παράδειγμα:

Κώδικας: Επιλογή όλων

$var = 'test';
echo 'printing $var'; //θα εκτυπώσει&#58; printing $var
echo "printing $var"; //θα εκτυπώσει&#58; printing test
Για μια πιο λεπτομερή ανάλυση διαφορών, διάβασε αυτό.

Τώρα για τον κώδικα που δίνεις, το πρώτο λάθος στο οποίο έπεσε το μάτι μου είναι πως δεν έχεις καθόλου quotes στο string που περνάς στη μεταβλητή $sql. Βέβαια, αυτό θα στο πουν και τα errors που παίρνεις (στην περίπτωσή σου κάτι όπως "Parse error: syntax error, unexpected T_STRING in..."), οπότε μάθε τι σημαίνουν ώστε να λύνεις αυτού του είδους τα προβλήματα.

Από εκεί και πέρα, 2 συμβουλές:

1) Μη χρησιμοποιείς mysql_*, καθώς είναι πλέον deprecated. Χρησιμοποίησε mysqli, ή PDO.

2) Διάβασε κάποια πράγματα για security (αποθήκευση κωδικών, διάφορα attacks και πως μπορείς να προστατευτείς, κλπ), καθώς είναι σημαντικό.

Για παράδειγμα, στον κώδικα που δίνεις περνάς τα δεδομένα που στέλνει ο χρήστης μέσω ενός post request κατ' ευθείαν στο SQL query σου, κάτι το οποίο είναι ό,τι πρέπει για SQL injection. Αν χρησιμοποιείς mysqli υπάρχει η mysqli_real_escape_string και τα prepared statements (όπως και για pdo), που θα κάνουν αυτή τη δουλειά.

Υπομονή, επιμονή, και καλό διάβασμα! :)

aivas
Δημοσιεύσεις: 24
Εγγραφή: 26 Απρ 2013 13:46

Βοήθεια σε SQL + PHP

Δημοσίευση από aivas » 28 Φεβ 2014 23:28

SELECT * FROM users WHERE username = $username AND password=$password;

αν το βάλω με quotes den καταλαβενει το $username κλπ με τα βγαζει σαν κειμενο ....

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Βοήθεια σε SQL + PHP

Δημοσίευση από geomagas » 28 Φεβ 2014 23:56

Μήπως το βάζεις σε single quotes; Θέλει double.
Στο πρώτο κομμάτι της απάντησης του, ο burnmind σου εξηγεί τη διαφορά.

Edit: Επίσης, βάλε single quotes γύρω από τις μεταβλητές. Κάπως έτσι:

Κώδικας: Επιλογή όλων

$sql="SELECT * FROM users WHERE username = '$username' AND password='$password'";

aivas
Δημοσιεύσεις: 24
Εγγραφή: 26 Απρ 2013 13:46

Βοήθεια σε SQL + PHP

Δημοσίευση από aivas » 01 Μαρ 2014 00:15

Warning: include(db_connect): failed to open stream: No such file or directory in D:\xampp\htdocs\check_login.php on line 13

Warning: include(): Failed opening 'db_connect' for inclusion (include_path='.;D:\xampp\php\PEAR') in D:\xampp\htdocs\check_login.php on line 13

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in D:\xampp\htdocs\check_login.php on line 17
Wrong username or password

Τώρα έχω αυτά τα προβλήματα

Κώδικας: Επιλογή όλων

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http&#58;//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http&#58;//www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

<?php 
$db_host = "localhost";
$db_username = "root";
$db_password = "";
$db_name ="my_site";
$db_connect = mysql_connect&#40;$db_host,$db_username,$db_password&#41;;
mysql_select_db&#40;$db_name&#41;;

if &#40;!$db_connect&#41;&#123;
	echo "Data Base Error";
&#125;
else &#123;
	echo "Connected Successfully";
&#125;

?>
</body>
</html>
to db_connect μου ειναι καλα πιστευω... ειμαι σε xampp Και τα εχω βαλει ολα μεσα στον φακελο htpdocs

geomagas
Δημοσιεύσεις: 667
Εγγραφή: 06 Απρ 2013 13:36
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Βοήθεια σε SQL + PHP

Δημοσίευση από geomagas » 01 Μαρ 2014 01:10

php έγραψε:Warning: include(db_connect): failed to open stream: No such file or directory in D:\xampp\htdocs\check_login.php on line 13
Αυτό σημαίνει ότι δεν υπάρχει τέτοιο αρχείο.
Τα υπόλοιπα είναι παρεπόμενα αυτού.

aivas
Δημοσιεύσεις: 24
Εγγραφή: 26 Απρ 2013 13:46

Βοήθεια σε SQL + PHP

Δημοσίευση από aivas » 01 Μαρ 2014 14:28

μα μεσα στον ιδιο φακελο ειναι ...

άκυρο ειχα ξεχασει το .php :p
Ευχαριστω !!

Απάντηση

Επιστροφή στο “MySQL”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες