για το Login.php ομως ακομα ισχυει το οτι τα βγαζει ολα ως λαθος,ακομη και σωστα στοιχεια να εισαγω..
το register.php τα περναει σωστα αποτι φαινεται μεχρι τωρα τα στοιχεια..
Συντονιστής: konnn


parenthesis έγραψε:Τι τύπο έχεις ορίσει στο πεδίο password της βάσης σου; Επειδή αυτό που παράγει η συνάρτηση hash() είναι αρκετά μεγάλο, καλό θα ήταν να το βάλεις VARCHAR(100).

$password = hash("sha256", $_POST['password']); $password = sha256($_POST["password"]);$query = sprintf("SELECT * FROM users WHERE username='%s' and password='%s'",
mysql_real_escape_string($username),
mysql_real_escape_string($password));$username = trim (mysql_real_escape_string ($_POST["username"]) );
$password = sha256 (trim (mysql_real_escape_string ($_POST["password"]) ) );
$query = sprintf("SELECT * FROM users WHERE username='".$username."' and password='".$password."');
Αποστόλης έγραψε:
4. Κοίτα, δεν ξέρω πολλά από php/mysql, αλλά εδώ λέει ότι υπάρχει και η σύνταξη INSERT INTO ... SET... . Οπότε κάπου αλλού είναι το πρόβλημα...
Μην μπερδεύεσαι. Δεν σου είπα οτι εκεί είναι το πρόβλημα αλλά οτι αυτή η σύνταξη δεν είναι αυτή που χρειάζεσαι.
Και καλό είναι να μην τη μάθεις γιατί μπορεί να μπλεχτείς αν χρησιμοποιείς πάντα αυτή. Για παράδειγμα δεν μπορείς να την χρησιμοποιήσεις για να βάλεις πολλά rows με ένα query.
Οπότε θεώρησε πως...δεν υπάρχει.

Αποστόλης έγραψε:1. Για sha256 μπορείς να βάλεις πεδίο varchar(64) ή char(64) ή binary(32)
Καλύτερα από όλα το varchar.
2.κάντο
- Κώδικας: Επιλογή όλων
$password = hash("sha256", $_POST['password']);
- Κώδικας: Επιλογή όλων
$password = sha256($_POST["password"]);
3.
- Κώδικας: Επιλογή όλων
$query = sprintf("SELECT * FROM users WHERE username='%s' and password='%s'",
mysql_real_escape_string($username),
mysql_real_escape_string($password));
Εδώ του λές να βρει οτιδήποτε ταιριάζει με αυτά που πληκτρολογείς. Το % είναι wild charachter για την php.
Εκτός κι αν αυτό είναι αυτό που θέλεις.
Επίσης, μην μπλέκεσαι πολύ.
Βάλε
- Κώδικας: Επιλογή όλων
$username = trim (mysql_real_escape_string ($_POST["username"]) );
$password = sha256 (trim (mysql_real_escape_string ($_POST["password"]) ) );
$query = sprintf("SELECT * FROM users WHERE username='".$username."' and password='".$password."');
Απλοίησε τα πράγματα για να μπορείς να βγάλεις ευκολότερα άκρη.
4. Κοίτα, δεν ξέρω πολλά από php/mysql, αλλά εδώ λέει ότι υπάρχει και η σύνταξη INSERT INTO ... SET... . Οπότε κάπου αλλού είναι το πρόβλημα...
Μην μπερδεύεσαι. Δεν σου είπα οτι εκεί είναι το πρόβλημα αλλά οτι αυτή η σύνταξη δεν είναι αυτή που χρειάζεσαι.
Και καλό είναι να μην τη μάθεις γιατί μπορεί να μπλεχτείς αν χρησιμοποιείς πάντα αυτή. Για παράδειγμα δεν μπορείς να την χρησιμοποιήσεις για να βάλεις πολλά rows με ένα query.
Οπότε θεώρησε πως...δεν υπάρχει.

Αποστόλης έγραψε:
- Κώδικας: Επιλογή όλων
$query = sprintf("SELECT * FROM users WHERE username='%s' and password='%s'",
mysql_real_escape_string($username),
mysql_real_escape_string($password));
Εδώ του λές να βρει οτιδήποτε ταιριάζει με αυτά που πληκτρολογείς. Το % είναι wild charachter για την php.
Εκτός κι αν αυτό είναι αυτό που θέλεις.



Αποστόλης έγραψε:- Το sprintf απλά μορφοποιεί ή εκτυπώνει ένα string σύμφωνα με το format που του δίνεις. Αν βάλεις σκέτο το query πάλι θα τρέξει.
Βέβαια ανάλογα τη δομή του script μπορεί να μην προλάβεις να δεις την εκτύπωση ή να μην την βγάλει καθόλου (αν π.χ. κάνεις κάποιο redirect πρίν ολοκληρωθεί το script).
- Δεν γνωρίζω αν το % είναι wild charachter και της mysql.
Πολύ πιθανό μιας και πολλές εντολές της php "πατάνε" πάνω στη mysql.
Μαζί με το s στην ουσία μορφοποιεί οτιδήποτε του δώσεις σε string. Είναι παράμετρος της sprintf.
Ομως παραμένει wild charachter και σε login διαδικασίες όπου ψάχνεις ακριβώς αυτό που πληκτρολογεί ο χρήστης μπορεί να δημιουργήσει πρόβλημα.
