hackertom Δημοσ. 17 Δεκεμβρίου 2010 Δημοσ. 17 Δεκεμβρίου 2010 Παιδιά καλησπέρα... θέλω να κάνω έναν έλεγχο στο login του site μου!!! θέλω στο login: να μην είναι μικρότερο από 4 χαρακτήρες - αν βάλει κάποιος να πετάει μήνυμα να βάλει πάνω απο 4!!! και στο e-mail που θα πληκτρολογώ να έχει προεπιλεγμένο στοιχειό το "@" αυτό πώς το κάνω ???
macabre_sunsets Δημοσ. 17 Δεκεμβρίου 2010 Δημοσ. 17 Δεκεμβρίου 2010 α) Ελέγχεις μέσω JavaScript πόσους χαρακτήρες έχει το username και εαν οι χαρακτήρες είναι παραπάνω από Χ τότε εμφανίζεις το κουμπί «login/register/οτι θες» β) Εφόσον πατηθεί το submit button της φόρμας σου, ελέγχεις πάλι μέσω JavaScript αν ικανοποιούνται όλες οι συνθήκες που σε ενδιαφέρουν. Αν όχι κάνεις ένα return false ώστε να μην μπορεί να συνεχίσει ο χρήστης γ) Κάνεις submit την φορμα σου και ελέγχεις όλες τις μεταβλητές που θέλεις μέσω PHP. Αν όλα είναι εντάξει, συνεχίζεις. Αν όχι κάνεις redirect στην login σελίδα και εμφανίζεις ότι μήνυμα θέλεις
hackertom Δημοσ. 17 Δεκεμβρίου 2010 Μέλος Δημοσ. 17 Δεκεμβρίου 2010 δεν χρησιμοποιώ καθόλου java script μόνο καθαρή php ...
thanocaster Δημοσ. 17 Δεκεμβρίου 2010 Δημοσ. 17 Δεκεμβρίου 2010 Θεωρώ ότι έχεις 4 inputs, ένα με name='username', ένα με name='password', ένα με name='email_name' και ένα με name='email_domain'. > <?php $username = mysql_real_escape_string($_POST['username']); $password = mysql_real_escape_string($_POST['password']); $email = mysql_real_escape_string($_POST['email_name'])."@".mysql_real_escape_string($_POST['email_domain']); if (strlen($username) < 4) { header("Location:<εδώ/το/path/της/φόρμας.php?error=username"); exit; } // εδώ ο κώδικας αν είναι επιτυχής η σύνδεση ?> Σημείωση: Για να είναι προεπιλεγμένο το παπάκι, έχω υποθέσει ότι έχεις βάλει 2 input για το mail, και έχεις δώσει hardcoded το παπάκι. Καλύτερη λύση θα ήταν να αφήνεις τον χρήστη να πληκτρολογεί το mail του as-is μαζί με το παπάκι, και μετά να ελέγχεις με χρήση της strstr(): > <?php $username = mysql_real_escape_string($_POST['username']); $password = mysql_real_escape_string($_POST['password']); $email = mysql_real_escape_string($_POST['email']); if (strlen($username) < 4) { header("Location:<εδώ/το/path/της/φόρμας.php?error=username"); exit; } if (!strstr($email, '@') { header("Location:<εδώ/το/path/της/φόρμας.php?error=email"); exit; } // εδώ ο κώδικας αν είναι επιτυχής η σύνδεση ?> Σημείωση 2: Θα πρέπει στην σελίδα της φόρμας σου να βάλεις και αυτόν τον κώδικα που θα διαβάζει την περίπτωση σφάλματος: > <?php if (isset($_GET['error']) && $_GET['error'] == 'username'){ print "<div class='error'>Το όνομα χρήστη πρέπει να είναι μεγαλύτερο από 4 χαρακτήρες.</div>"; } if (isset($_GET['error']) && $_GET['error'] == 'email'){ print "<div class='error'>Το email που δώσατε δεν είναι έγκυρο.</div>"; } ?> Σημείωση 3: Έχε υπ' όψιν ότι οι έλεγχοι που κάνεις είναι ελλειπείς. Για παράδειγμα, θα πρέπει να περιορίσεις τα επιτρεπόμενα email με χρήση κάποιου regular expression κλπ. Περισσότερες πληροφορίες εδώ, εδώ και εδώ.
hackertom Δημοσ. 17 Δεκεμβρίου 2010 Μέλος Δημοσ. 17 Δεκεμβρίου 2010 PERFECT φίλος πάω να τα κολλήσω στον κώδικά μου και ποστ άρω ΑΠΟΤΕΛΕΣΜΑΤΑ ...
kostasxx Δημοσ. 17 Δεκεμβρίου 2010 Δημοσ. 17 Δεκεμβρίου 2010 > if (!strstr($email, '@') { header("Location:<εδώ/το/path/της/φόρμας.php?error=email"); exit; } Για τον έλεγχο των παραμέτρων που περνάς με GET ή POST μπορείς να χρησιμποιήσεις και τα έτοιμα φίλτρα της PHP για INPUT. π.χ. για το email : > if (filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL) { header("Location:<εδώ/το/path/της/φόρμας.php?error=email"); } Το exit; δε χρειάζεται εφόσον κάνει redirect με το header. Πληροφορίες για τα φίλτρα που μπορείς να χρησιμοποιήσεις έχει εδώ http://docs.php.net/manual/en/book.filter.php
hackertom Δημοσ. 17 Δεκεμβρίου 2010 Μέλος Δημοσ. 17 Δεκεμβρίου 2010 το >if (strlen($login) < 4) { δούλεψε κανονικά που είναι ο έλεγχος των χαρακτήρων !!! το >if (!strstr($email, '@') { δεν ξέρω γιατί αλλά δεν μου δουλεύει... εδώ είναι τμήμα από τον κώδικά μου μέσα στο πλαίσιο θέλω απλά να έχει το "@" ></td></tr> <tr><td>Επιθυμιτό E-MAIL:</td><td> <input type="email" name="email" maxlength="15"> </td></tr>
kostasxx Δημοσ. 17 Δεκεμβρίου 2010 Δημοσ. 17 Δεκεμβρίου 2010 Όπως είπε και ο Thanocaster θα πρέπει να βάλεις 2 input > </td></tr> <tr><td>Επιθυμητό E-MAIL:</td><td> <input type="email_name" name="email_name" maxlength="15">@<input type="email_domain" name="email_domain" maxlength="15"> </td></tr> και στο κομμάτι του ελέγχου να τα ενώσεις πριν κάνεις τον έλεγχο. > $email = trim($_POST['email_name']) . '@' . trim($_POST['email_domain']); if (!strstr($email, '@') { header("Location:<εδώ/το/path/της/φόρμας.php?error=email"); } με τη trim βγάζεις τα κενά από τις άκρες του string.
hackertom Δημοσ. 17 Δεκεμβρίου 2010 Μέλος Δημοσ. 17 Δεκεμβρίου 2010 Όπως είπε και ο Thanocaster θα πρέπει να βάλεις 2 input > </td></tr> <tr><td>Επιθυμητό E-MAIL:</td><td> <input type="email_name" name="email_name" maxlength="15">@<input type="email_domain" name="email_domain" maxlength="15"> </td></tr> και στο κομμάτι του ελέγχου να τα ενώσεις πριν κάνεις τον έλεγχο. > $email = trim($_POST['email_name']) . '@' . trim($_POST['email_domain']); if (!strstr($email, '@') { header("Location:<εδώ/το/path/της/φόρμας.php?error=email"); } με τη trim βγάζεις τα κενά από τις άκρες του string. sorry κιόλας ρε παιδιά αλλά αυτό που κάνει στην ουσία αυτό είναι να "κόβει" το μαιλ στα δύο και απλά το @ θα μπαίνει αυτόματα? και αν κάποιος χρήστης βάλει @ από μόνος του δηλαδή 2 @ τότε τι γίνεται..? ή δέν κατάλαβα εγώ καλά τη κάνει ο κώδικας ακόμα.....
kostasxx Δημοσ. 17 Δεκεμβρίου 2010 Δημοσ. 17 Δεκεμβρίου 2010 sorry κιόλας ρε παιδιά αλλά αυτό που κάνει στην ουσία αυτό είναι να "κόβει" το μαιλ στα δύο και απλά το @ θα μπαίνει αυτόματα? και αν κάποιος χρήστης βάλει @ από μόνος του δηλαδή 2 @ τότε τι γίνεται..? ή δέν κατάλαβα εγώ καλά τη κάνει ο κώδικας ακόμα..... Σωστά κατάλαβες. Αυτό κάνει. Σαν ιδέα δεν είναι καθόλου σωστή, αλλά αφού αυτό σου αρέσει... Το σωστό είναι να έχει ένα πεδίο για το email και στον έλεγχο να χρησιμοποιήσει είτε τη filter_input, ή ακόμα καλύτερα κάποιο regular expression για ποιό σωστή πιστοποίηση του email.
thanocaster Δημοσ. 18 Δεκεμβρίου 2010 Δημοσ. 18 Δεκεμβρίου 2010 @hackertom: Εσύ ζήτησες να έχεις προεπιλεγμένο το παπάκι και ο χρήστης να βάζει το όνομα του λογαριασμού του και το domain (αυτό κατάλαβα από το πρώτο μήνυμά σου). Από εκεί και πέρα σου λέω στη 3η σημείωση πως ο καλύτερος τρόπος είναι να έχεις ένα πεδίο για το μέιλ και να κάνεις χρήση των regular expresssions για τον έλεγχο. Όσον αφορά στην strstr(), φυσικά και δεν δούλεψε, αφού έγραψα ό,τι νά 'ναι... Αντί για την strstr (που κόβει το string στον χαρακτήρα που του δίνεις σαν δεύτερο όρισμα), χρησιμοποίησε την strpos(). @kostasxx: Δεν μου αρέσει καθόλου η ιδέα του "σπασμένου" mail address, γι αυτό πρότεινα τη χρήση των regex. Καλό θα είναι πριν ειρωνευτείς κάποιον που έγραφε ένα ποστ αναλυτικότατο προσφέροντας έτοιμες λύσεις και παραθέσεις σε πολλές άλλες πληροφορίες να διαβάζεις καλά τί έχει γράψει.
hackertom Δημοσ. 18 Δεκεμβρίου 2010 Μέλος Δημοσ. 18 Δεκεμβρίου 2010 ανεβάζω ακόμη μια φώτο για να καταλάβετε τη θέλω... πριν πατήσει κάποιος κάτι το "@" θα βρίσκετε στην περιοχή του mail ήδη σαν προεπιλογή από το σύστημα τώρα αν ο χρήστης το διαγράψει και κάνει υποβολή χωρίς να έχει πατήσει "@" πουθενά να του πετάει μήνυμα πρέπει να βάλεις "@" αυτό θέλω παίδες μου αλλά δεν βρίσκω λύση έκανα το παρακάτω : ><textarea>@</textarea> αλλά δεν μπορώ να τραβήξω την τιμή από εκεί και να την αποθηκεύσω στην βάση του xampp ...
hackertom Δημοσ. 18 Δεκεμβρίου 2010 Μέλος Δημοσ. 18 Δεκεμβρίου 2010 ><input name="email" type="text" value="@" maxlength="15" > τελικά με λίγη προσπάθεια όλα γίνονται τώρα μου μένει μόνο ο έλεγχος ....
kostasxx Δημοσ. 18 Δεκεμβρίου 2010 Δημοσ. 18 Δεκεμβρίου 2010 @kostasxx: Δεν μου αρέσει καθόλου η ιδέα του "σπασμένου" mail address, γι αυτό πρότεινα τη χρήση των regex. Καλό θα είναι πριν ειρωνευτείς κάποιον που έγραφε ένα ποστ αναλυτικότατο προσφέροντας έτοιμες λύσεις και παραθέσεις σε πολλές άλλες πληροφορίες να διαβάζεις καλά τί έχει γράψει. Κατ' αρχήν δεν ειρωνεύτηκα κανέναν (τυπογραφικό λάθος ήταν). Διάβασε ξανά το post. Έπειτα (επειδή διάβασα το post σου), μάλλον δε κατάλαβες οτι συμφωνώ με τη πρόταση σου. Γι' αυτό και του προτείνω στην ουσία ότι του είπες κ εσυ. Αφού δε θέλει να χρησιμοποιήσει javascript στο Input. Ελπίζω να λύθηκε η παρεξήγηση.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.