Ερώτηση πάνω σε φόρμα επικοινωνίας

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

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

Απάντηση
Άβαταρ μέλους
felipsemassa
Δημοσιεύσεις: 30
Εγγραφή: 01 Αύγ 2009 08:05

Ερώτηση πάνω σε φόρμα επικοινωνίας

Δημοσίευση από felipsemassa » 01 Αύγ 2009 16:07

ευχαριστώ Stadem !

το captcha το έχω ξαναπετύχει σε διάφορα άρθρα εδώ και εκεί πολλοί το συζητούν ως μια γενικότερη λύση προστασίας φορμών επικοινωνίας, δεν μπορείς να μην το βρείς κάπου, αν έχετε να προτείνετε κάτι παραπάνω σε σχέση με τα 2 ερωτήματα καλοδεχούμενο :)

Άβαταρ μέλους
Stadem
Δημοσιεύσεις: 198
Εγγραφή: 10 Μαρ 2007 20:45

Ερώτηση πάνω σε φόρμα επικοινωνίας

Δημοσίευση από Stadem » 02 Αύγ 2009 22:17

Το captcha είναι λίγο κουραστικό.

Μια εναλλακτική ασφάλεια είναι ο έλεγχος του email.

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

if(!eregi('^([a-z0-9\._-])+@([^\.]+\.[^\.]+)', $email, $matched))
	die("Please check your email");
else if(!getmxrr($matched[2], $mxrr))
	die("::Mail sever does not exist::");

Αν θέλεις κάτι για ακόμα μεγαλύτερη ασφάλεια, μπορείς να επιτρέπεις ένα ορισμένο αριθμό αποστολών.
Φτιάχνεις ένα folder ban_folder και δύο αρχεία banted.txt και users.txt

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

		$rate="1";//toy dinei mia prwth timh otan mpenei sto site
			$folder = "ban_folder";// to onoma toy folder
            $filename = "users";// h ip ton apostolewn
			$banfilename = "banted";//h ip ton banned
			
            $alreadyRated = false;
            $totalRates = 1;

   $ip = getenv('REMOTE_ADDR');//pernei thn ip
            $oldResults = file($folder.'/'.$filename.'.txt');//diavazei to folder
            foreach ($oldResults as $value) {
            	$oneRate = explode(':',$value);//diavazei thn prwth ip
if (($ip == $oneRate[0]) and ($oneRate[1]=="2")) $alreadyRated = true;	
            	$totalRates++;
					   echo $totalRates."<br>";
            &#125;

			if &#40;$totalRates >= 4&#41;&#123;            //an kanei panw apo 4 prospathies
 $ipArray = preg_replace&#40;"#\r\n?|\n#","",file&#40;$folder.'/'.$banfilename.".txt"&#41;&#41;;  // duavazei to file sto array
 foreach &#40;$ipArray as $ipTest&#41; &#123; 
   if &#40;substr_count&#40;$ip, $ipTest&#41; != "0"&#41; &#123;//an vrei kapoia ip tote pernei podi
    //header&#40;'location&#58; /banned.htm'&#41;;  // mporei na ton steilei se mia allh selida
    print "den exete dikaioma gia allh apostolh";
	die&#40;&#41;; //papala
  &#125; 
&#125; 	   
			   $f2 = fopen&#40;$folder.'/'.$banfilename.".txt","a+"&#41;; //an den einai sto ban file ton vazei        
               fwrite&#40;$f2,$ip."\n"&#41;;
               fclose&#40;$f2&#41;;   
		
		&#125;else

            if &#40;&#40;!$alreadyRated&#41; && &#40;$rate > 0&#41;&#41;&#123;            //ton vazei kai se ayth thn lista gia na mas diksei tis prospathies
               $f = fopen&#40;$folder.'/'.$filename.".txt","a+"&#41;;         
               fwrite&#40;$f,$ip.'&#58;'.$totalRates."\n"&#41;;
               fclose&#40;$f&#41;;         
			&#125;
			
Είναι ένα srcript που είχα φτιάξει παλιά και ίσως θέλει λίγο βελτίωση.
web-IQ Interactive Quality
Εικόνα

Άβαταρ μέλους
felipsemassa
Δημοσιεύσεις: 30
Εγγραφή: 01 Αύγ 2009 08:05

Ερώτηση πάνω σε φόρμα επικοινωνίας

Δημοσίευση από felipsemassa » 03 Αύγ 2009 07:15

Stadem πολύ καλή η ιδέα για τον αριθμό αποστολών, αυτό μας γλιτώνει σε περίπτωση που κάποιος ανεγκέφαλος επιμένει ή που κάποιο robot,trojan μας δημιουργήσει προβλήματα όπως έχει πει και ο Banavas :)

Τα regular expressions

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

^&#40;&#91;a-z0-9\._-&#93;&#41;+@&#40;&#91;^\.&#93;+\.&#91;^\.&#93;+&#41; 
γενικότερα μας χαρίζουν καλύτερη προστασία από τα μη regular expressions ; Ρωτώ αν τα επιλέγουμε επειδή είναι καλύτερα ή επειδή είναι πιο σύντομα ;

Άβαταρ μέλους
Stadem
Δημοσιεύσεις: 198
Εγγραφή: 10 Μαρ 2007 20:45

Ερώτηση πάνω σε φόρμα επικοινωνίας

Δημοσίευση από Stadem » 03 Αύγ 2009 18:01

Πιστεύω ότι είναι μία σύντομη επιπλέον προστασία που βοηθάει.
web-IQ Interactive Quality
Εικόνα

Άβαταρ μέλους
felipsemassa
Δημοσιεύσεις: 30
Εγγραφή: 01 Αύγ 2009 08:05

Ερώτηση πάνω σε φόρμα επικοινωνίας

Δημοσίευση από felipsemassa » 03 Αύγ 2009 23:01

θέλει ψάξιμο και το θέμα των regular expressions φαίνεται όμως να λύνει τα χέρια :)

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Ερώτηση πάνω σε φόρμα επικοινωνίας

Δημοσίευση από Banavas » 03 Αύγ 2009 23:48

felipsemassa έγραψε:θέλει ψάξιμο και το θέμα των regular expressions φαίνεται όμως να λύνει τα χέρια :)
Τα regular expressions είναι πολύ χρήσιμα για να ελέγξεις αν το περιεχόμενο που έδωσε ο χρήστης ακολουθεί κάποιους συγκεκριμένους κανόνες πχ αν το πεδίο τηλ. έχει 10 χαρακτήρες και είναι όλα ψηφία χωρίς γράμματα. Ένα regexp μπορεί να το ελέγξει πολύ εύκολα οπότε αν ο χρήστης έχει δώσει λάθος τηλέφωνο μη αποδεκτό του βγάζεις ένα μήνυμα λάθους ώστε να το διορθώσει.
Μπορείς να ελέγξεις πολλά πράγματα όπως πχ να μην έχει αριθμούς το ονοματεπώνυμο ή το email να έχει συγκεκριμένο format κλπ

Είναι δύσκολο αν δεν ρίξεις πολύ διάβασμα να συντάξεις τα δικά σου regexp αλλά μπορεί να βρεις αρκετά έτοιμα (google it )

από μόνα τους τα regexp δεν προσφέρουν κα΄ποια ασφάλεια αλλά σε βοηθάνε να κάνεις ελέγχους και να βάλεις κανόνες πχ ένα αριθμητικό πεδίο να δέχετε μόνο αριθμούς κλπ.
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
felipsemassa
Δημοσιεύσεις: 30
Εγγραφή: 01 Αύγ 2009 08:05

Ερώτηση πάνω σε φόρμα επικοινωνίας

Δημοσίευση από felipsemassa » 04 Αύγ 2009 06:15

μάλιστα, αν θέλουμε να ελέγξουμε τον ελληνικό αριθμό τηλεφώνου για την ορθότητα του με ένα regular expression είναι εύκολο ; Γιατί οτι βρήκα ως τώρα για regular expression και παραδείγματα τσεκαρίσματος τηλεφώνου αναφέρονται σε τηλέφωνα στην Αμερική και τον Καναδά όπως αυτό το βοήθημα Matching Phone Numbers

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Ερώτηση πάνω σε φόρμα επικοινωνίας

Δημοσίευση από Banavas » 04 Αύγ 2009 10:18

Το παρακάτω ελέγχει αν το νούμερο που έδωσες είναι μόνο αριθμοί με πλήθος 10 ψηφία και τυπώνει ένα μήνυμα λάθους αν δεν ισχύουν.

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

if&#40;!eregi&#40;"&#91;0-9&#93;&#123;10&#125;", $phone&#41;&#41; &#123;
echo  "Έχετε κάνει κάποιο λάθος με τον αριθμό του τηλεφώνου";
echo "<br><a href=\"javascript&#58; history.back&#40;&#41;\">ΠΙΣΩ<a>";
exit;
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
felipsemassa
Δημοσιεύσεις: 30
Εγγραφή: 01 Αύγ 2009 08:05

Ερώτηση πάνω σε φόρμα επικοινωνίας

Δημοσίευση από felipsemassa » 04 Αύγ 2009 10:39

σωστό αφού ακόμα και τα 801 είναι 10ψήφια και έτσι με 1 γραμμή τελειώσαμε, καλό :)

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

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

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