Καλημέρα..
Στο 3 θέμα μας ζητάει η άσκηση να δημιουργήσουμε ένα registration.php όπου θα ελένχουμε τα 2 pass εαν είναι ίδια και μετά θα ελέγξουμε εάν υπάρχει στην βάση το username? Μπορει να μου πει κάποιος πως θα γίνει το query αυτό?
Καλημέρα Θανάση.Πρέπει να κάνεις ένα query λογικά του τύπου SELECT * FROM users WHERE username='τιμή'
όπου η τιμή είναι η $_POST['user'] που έχει υποβάλλει ο χρήστης στη φόρμα..
όπου η τιμή είναι η $_POST['user'] που έχει υποβάλλει ο χρήστης στη φόρμα..
Θανάση τώρα γράφω κι εγώ τον κώδικα για το Γ οπότε δε μπορώ να σου απαντήσω άμεσα..Στο query στον έλεγχο της συνθήκης where username='$_POST['user']' μήπως θέλει διπλά " " για τη μεταβλητή $_POST;
Καλημέρα σου προτείνω αυτό το site να δεις για να δεις πως δουλεύει το POST.
www.tizag.com υπάρχει επίσης και το schools.
www.tizag.com υπάρχει επίσης και το schools.
Γεια σου Νίκο, Δεν νομίζω ότι είναι θέμα POST αλλά κάπου αλλού,δυστυχώς δεν μπορώ να το βρω....
ετσι που το ειδα μια ξαναδες στο σημειο που κανεις τα ερωτηματα χωρις καμμια βεβαιοτητα ομως.
καλησπέρα.. δες αν σε βοηθάει ο κώδικας παρακάτω, είναι μετά τον έλεγχο για τα 2 passwords.... εμένα μου τρέχει..
if (empty($errors)) {// αν όντως ο πίνακας errors είναι άδειος που σημαίνει όλα οκ
// σύνδεση στην βάση δεδομένων
require_once('mysqli_connect.php');
// έλεγχος εαν το username υπάρχει ΗΔΗ στην βάση δεδομένων κι αν το χρησιμοποιεί άλλος χρήστης
$username = $_POST['user'];
$qun= "SELECT username FROM user WHERE username='$username'";
$run=@mysqli_query($dbc, $qun);
if (mysqli_num_rows($run) == 1) {
echo "Το username που χρησιμοποιήσατε είναι ήδη σε χρήση. Παρακαλώ επιλέξτε κάποιο άλλο και ξαναπροσπαθήστε";
} else {
// δημιουργία ερωτήματος εγγραφής στον πίνακα user
$q="INSERT INTO user (username, password, name, lastname) VALUES ('$un', SHA1('$p'), '$fn', '$ln')";
// εκτέλεση του ερωτήματος
$r= @mysqli_query($dbc, $q);
if ($r) { // εφόσον η εγγραφή έγινε κανονικά
// εκτύπωση μηνύματος:
echo '<h1>Ευχαριστούμε!</h1>
<p> Η εγγραφή σας ήταν επιτυχής</p>
<p><br/></p>';
} else { // Αν δεν εκτελέστηκε σωστά
echo '<h1> System Error</h1>
<p> Η εγγραφή σας δεν ήταν επιτυχής.</p>';
// Μήνυμα αποσφαλμάτωσης:
echo '<p>'.mysqli_error ($dbc). '<br/><br/> Query: '.$q.'</p>';
} // Telos synthikis if($r)
} // Telos synthikis if(mysqli_num_rows($run)==1)
mysqli_close($dbc);// κλείσιμο σύνδεσης με βδ
} else { // efoson o pinakas $errors den einai adeios ginetai anafora sfalmatwn
echo '<h1> Εντοπίστηκαν σφάλματα!</h1>
<p> Αναλυτικά παρουσιάστηκαν τα ακόλουθα σφάλματα: </p> <br/> ';
foreach($errors as $msg) {
//ektyposi kathe sfalmatos
echo " - $msg<br/>\n";
}
} // Τέλος συνθήκης (empty($errors)).
if (empty($errors)) {// αν όντως ο πίνακας errors είναι άδειος που σημαίνει όλα οκ
// σύνδεση στην βάση δεδομένων
require_once('mysqli_connect.php');
// έλεγχος εαν το username υπάρχει ΗΔΗ στην βάση δεδομένων κι αν το χρησιμοποιεί άλλος χρήστης
$username = $_POST['user'];
$qun= "SELECT username FROM user WHERE username='$username'";
$run=@mysqli_query($dbc, $qun);
if (mysqli_num_rows($run) == 1) {
echo "Το username που χρησιμοποιήσατε είναι ήδη σε χρήση. Παρακαλώ επιλέξτε κάποιο άλλο και ξαναπροσπαθήστε";
} else {
// δημιουργία ερωτήματος εγγραφής στον πίνακα user
$q="INSERT INTO user (username, password, name, lastname) VALUES ('$un', SHA1('$p'), '$fn', '$ln')";
// εκτέλεση του ερωτήματος
$r= @mysqli_query($dbc, $q);
if ($r) { // εφόσον η εγγραφή έγινε κανονικά
// εκτύπωση μηνύματος:
echo '<h1>Ευχαριστούμε!</h1>
<p> Η εγγραφή σας ήταν επιτυχής</p>
<p><br/></p>';
} else { // Αν δεν εκτελέστηκε σωστά
echo '<h1> System Error</h1>
<p> Η εγγραφή σας δεν ήταν επιτυχής.</p>';
// Μήνυμα αποσφαλμάτωσης:
echo '<p>'.mysqli_error ($dbc). '<br/><br/> Query: '.$q.'</p>';
} // Telos synthikis if($r)
} // Telos synthikis if(mysqli_num_rows($run)==1)
mysqli_close($dbc);// κλείσιμο σύνδεσης με βδ
} else { // efoson o pinakas $errors den einai adeios ginetai anafora sfalmatwn
echo '<h1> Εντοπίστηκαν σφάλματα!</h1>
<p> Αναλυτικά παρουσιάστηκαν τα ακόλουθα σφάλματα: </p> <br/> ';
foreach($errors as $msg) {
//ektyposi kathe sfalmatos
echo " - $msg<br/>\n";
}
} // Τέλος συνθήκης (empty($errors)).
Έχω δημιουργήσει το αρχείο registration.php αλλά όταν του δίνω τις τιμές μου βγάζει λευκή οθόνη. Όποια βοήθεια δεκτή. Επισυνάπτω και το register.php.
Δεν μπορώ να τεστάρω όλο το κώδικα γιατί μου λείπουν τα υπόλοιπα αρχεία, αλλά πρόχειρα που τον είδα το πρώτο πρόβλημα που βρήκα ήταν
isset($_POST['submitted'])
το key θα πρέπει να είναι isset($_POST['submitbutton'])
αυτό γιατί στη φόρμα το name που έχεις δώσει είναι submitbutton
isset($_POST['submitted'])
το key θα πρέπει να είναι isset($_POST['submitbutton'])
αυτό γιατί στη φόρμα το name που έχεις δώσει είναι submitbutton
Έχεις δίκιο μου έλειπε το hidden button.Είχε και κάποια άλλα λαθάκια αλλά τώρα παίζει σωστά νομίζω. Ευχαριστώ πάντως.
Θα πρέπει να βάλεις κώδικα για να στείλεις την σελίδα σου στην προηγούμενη σελίδα ,δηλαδή στην register.php αλλιώς θα παραμείνει στην
registration.php.ο κώδικας είναι header ("location:register.php");
για να δεις άμα ο ήδη υπάρχων κώδικας λειτουργεί κάνα ένα echo $r η κατι αντίστοιχο.
registration.php.ο κώδικας είναι header ("location:register.php");
για να δεις άμα ο ήδη υπάρχων κώδικας λειτουργεί κάνα ένα echo $r η κατι αντίστοιχο.
Σοφία για δές λίγο στο rtegister.php στην φόρμα δεν έχεις δηλώσει την μέθοδο που θα περάσουν τα δεδομένα σου. Πρέπει να βάλεις το method = post. Κάνε την αλλαγή δεν νομίζω ότι έχεις κάποιο άλλο λάθος. Αλλά κάνε και αυτό που λέει ο αλέξανδρος ή έστω βάλε ένα λινκ μετά το μήνυμα για να επιστρέψει ο χρήστης στην αρχική σελίδα ή οπου αλλού θές.
@Αλέξανδρος και Κώστας:το κοιτάζω τώρα απλά μου τυπώνει system error ότι δεν εγγράφει το χρήστη,τρέχει μεν το αρχείο εν μέρει αλλά κάπου κολλάει στο registration..Με το header("location") απλά ανακατευθύνω το χρήστη στο τέλος του σεναρίου και αφου έχει γίνει το registration?Το βάζω δηλ στο τέλος του script?
Μου εμφανίζει πρόβλημα στη γραμμή 37 του κώδικα για την ακρίβεια με τη μεταβλητή mysqli_num_rows()..