Δημιουργία CAPTCHA

Μια περιοχή όπου τα μέλη μας μπορούν να βάζουν τα PHP scripts που έχουν φτιάξει και θέλουν να τα μοιραστούν με τα υπόλοιπα μέλη.

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

Απάντηση
Άβαταρ μέλους
_Invisible_
Δημοσιεύσεις: 418
Εγγραφή: 16 Νοέμ 2006 16:47
Τοποθεσία: Greece

Δημιουργία CAPTCHA

Δημοσίευση από _Invisible_ » 05 Ιαν 2007 03:28

Γεια σας.

Σκέφτηκα ότι ένα CAPTCHA για κάθε εφαρμογή είναι απαραίτητο και έτσι αποφάσισα πως αν κάποιος άλλος το χρειαστεί μπορεί να το βρει εδώ. Το έφτιαξα για μένα, αλλά αποφάσισα να το μοιραστούμε... :D

Θα χρησιμοποιήσουμε αυτό το function:

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

function generateCAPTCHA()
{
	$random_number = rand (3546, 5134);

	$_SESSION['captcha'] = md5($random_number);


	return '<span class="captcha">' . $random_number . '</span>';

&#125;
τώρα πως θα το χρησιμοποιήσουμε:

test.php

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

<?php

session_start&#40;&#41;;

function generateCAPTCHA&#40;&#41;
&#123;
	$random_number = rand &#40;3546, 5134&#41;;

	$_SESSION&#91;'captcha'&#93; = md5&#40;$random_number&#41;;


	return '<span class="captcha">' . $random_number . '</span>';

&#125;


if &#40;! isset&#40;$_POST&#91;'submit_form'&#93;&#41;&#41;
&#123;
?>
	<style type="text/css">
		.captcha &#123;
			position &#58; relative;
			padding&#58; 7px;
			font-weight &#58; bold;
			background &#58; #9caf9c;
			color &#58; #000;
			margin &#58; 5em auto;
		&#125;
	</style>
	
	<form action="test.php" method="post">
	Doste Kodiko&#58; <input type="text" name="kodikos" size="15" /><br /><br />
	Kodikos&#58; <?=generateCAPTCHA&#40;&#41;;?><br /><br />
	<input type="submit" name="submit_form" value="Submit!" />
	</form>
	
<?php
&#125;
else if &#40; isset&#40;$_POST&#91;'submit_form'&#93;&#41; &#41;
&#123;
	$kodikos_given = trim&#40;$_POST&#91;'kodikos'&#93;&#41;;

	if &#40;! $kodikos_given &#41;
	&#123;
		header&#40;'Location&#58; test.php'&#41;;
	&#125;

	if &#40;$_SESSION&#91;'captcha'&#93;&#41;
	&#123;
		$session_given = trim&#40;$_SESSION&#91;'captcha'&#93;&#41;;
	&#125;
	else if &#40;$_SESSION&#91;'captcha'&#93; == ''&#41;
	&#123;
		header&#40;'Location&#58; test.php'&#41;;
	&#125;
	
	if &#40;$session_given == md5&#40;$kodikos_given&#41;&#41;
	&#123;
		echo 'o kodikos einai sostos!!!!';
	&#125;
	else
	&#123;
		die&#40;'o kodikos pou dosate einai lathos'&#41;;
	&#125;
&#125;

?>
Το δοκίμασα πριν το κάνω post και δουλεύει κανονικά. Τώρα φυσικά οι αλλαγές που πρέπει να κάνετε δεν είναι πολλές... Απλά φαντασία θέλει... :kaloe:

Ελπίζω να σας άρεσε,
Ευχαριστώ Invisible
Συνημμένα
test.zip
CAPTCHA Test
(686 Ψηφιολέξεις) Μεταφορτώθηκε 977 φορές

nastis
Δημοσιεύσεις: 124
Εγγραφή: 16 Φεβ 2005 16:28
Επικοινωνία:

Δημιουργία CAPTCHA

Δημοσίευση από nastis » 05 Ιαν 2007 09:53

_Invisible_
Σόρρυ κιόλας, αλλα δεν είναι και πολύ χρήσιμη η εφαργμογή σου :hammer:

Επίσης μάλλον δεν πρέπει να ονομάζεται καν CAPTCHA
http://en.wikipedia.org/wiki/Captcha
"Completely Automated Public Turing test to tell Computers and Humans Apart"...
used in computing to determine whether or not the user is human
8)

Το δικό σου μπορεί να διαβάζει κανείς το
<span class="captcha"></span> σου και να έχει plain text μάλιστα τον αριθμό που έβαλες.
πράγμα που είναι πανεύκολο να "διαβαστεί" με ένα scriptaki από μη-άνθρωπο.

Γιαυτό συνηθίζουνε να το κάνουνε
α) image
β) distorted (για να μην διαβάζεται από OCR)

άλλη προσέγγιση είναι και αυτή
http://www.hotcaptcha.com/ ;-)

Φιλικά
Β.
www.oktonia.com - Παγκόσμιο Χωριό Γνώσης Λυμένα Θέματα Εξετάσεων - Ασκήσεις

zeppos
Δημοσιεύσεις: 431
Εγγραφή: 26 Μαρ 2006 10:43
Τοποθεσία: Kyklades
Επικοινωνία:

Δημιουργία CAPTCHA

Δημοσίευση από zeppos » 05 Ιαν 2007 13:43

Invi μην βιάζεσαι..Captcha είναι η εμφάνιση γραμμάτων ή αριθμών μέσα σε μια εικόνα την οποία φιάχνει η εντολή
imageCreate($size_x,$size_y) ώστε να μην μπορεί το ρομποτ να την διαβάσει..(Υπάρχουν όμως σπαστήρια!!)
Ψάξε την εντολή και θα δείς τη διαφορά.

Άβαταρ μέλους
_Invisible_
Δημοσιεύσεις: 418
Εγγραφή: 16 Νοέμ 2006 16:47
Τοποθεσία: Greece

Δημιουργία CAPTCHA

Δημοσίευση από _Invisible_ » 05 Ιαν 2007 15:57

Eυχαριστώ παιδιά δεν το ήξερα, ούτως η άλλως δεν το έβαλα για να γίνει tutorial...

Μα πώς γίνεται το bot να βρίσκει τον τυχαίο αριθμό του rand (3546, 5134) ?????????
Τελευταία επεξεργασία από το μέλος _Invisible_ την 05 Ιαν 2007 16:15, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
_Invisible_
Δημοσιεύσεις: 418
Εγγραφή: 16 Νοέμ 2006 16:47
Τοποθεσία: Greece

Δημιουργία CAPTCHA

Δημοσίευση από _Invisible_ » 05 Ιαν 2007 16:14

SOLVED:

test.php:

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

<?php

session_start&#40;&#41;;

header&#40;"Content-type&#58; image/png"&#41;;
$im = imagecreate&#40;50, 40&#41; or die&#40;"Cannot Initialize new GD image stream"&#41;;
$background_color = imagecolorallocate&#40;$im, 255, 255, 255&#41;;
$text_color = imagecolorallocate&#40;$im, 100, 90, 60&#41;;

$rand_text = rand&#40;3049, 4059&#41;;
$_SESSION&#91;'cpt'&#93; = md5&#40;$rand_text&#41;;

imagestring&#40;$im, 5, 5, 5,  "$rand_text", $text_color&#41;;
imagepng&#40;$im&#41;;
imagedestroy&#40;$im&#41;;

?>
test_page.php:

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

<?php

session_start&#40;&#41;;


if &#40;! isset&#40;$_POST&#91;'submit_form'&#93;&#41; &#41;
&#123;
?>
	<form action="test_page.php" method="post">
	Kodikos&#58; <input type="text" name="kodikos" size="15" /><br />
	<img src="test.php"><br />
	<input type="submit" name="submit_form" value="Submit!" />
	</form>

<?php
&#125;
else if &#40; isset&#40;$_POST&#91;'submit_form'&#93;&#41; &#41;
&#123;
	if &#40; isset&#40;$_POST&#91;'kodikos'&#93;&#41; &#41;
	&#123;
		if &#40;md5&#40;$_POST&#91;'kodikos'&#93;&#41; == $_SESSION&#91;'cpt'&#93;&#41;
		&#123;
			echo 'kodikos correct &#58;D';
		&#125;
		else
		&#123;
			echo 'kodikos not correct &#58;&#40;';
		&#125;
	&#125;
&#125;


?>
Τώρα το εμφανίζει σε εικόνα και δουλεύει και πάλι :D

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

Δημιουργία CAPTCHA

Δημοσίευση από panosru » 05 Ιαν 2007 16:46

To metefera sta dika mas scripts, apla invi ayto den einai captcha to ebala edo me skopo na anaptyxthei to script gi' ayto douleia!!! mhn epanapayese! :P :lol:

Άβαταρ μέλους
_Invisible_
Δημοσιεύσεις: 418
Εγγραφή: 16 Νοέμ 2006 16:47
Τοποθεσία: Greece

Δημιουργία CAPTCHA

Δημοσίευση από _Invisible_ » 05 Ιαν 2007 16:49

pano το έχουμε πει 1000 φορές δεν επαναπαύομαι και δεν ήθελα να γίνει tutorial (αν κάποιοι από εσάς αυτό νομίσατε). Πάντως δηλαδή τι άλλο θα μπορούσαμε να βάζαμε για να το κάναμε να είναι πιο ασφαλές;

Ευχαριστώ πολύ για τις απαντήσεις σας.

Άβαταρ μέλους
tix-3-
Δημοσιεύσεις: 827
Εγγραφή: 25 Μαρ 2004 05:12
Τοποθεσία: Θεσσαλονικη-Καβαλα-βεροια(το τριγωνο της καταρας)
Επικοινωνία:

Δημιουργία CAPTCHA

Δημοσίευση από tix-3- » 05 Ιαν 2007 19:30

απο τον "δικο μας" cherouvim
http://www.cherouvim.com/el/programming/captcha

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Δημιουργία CAPTCHA

Δημοσίευση από ThyClub » 05 Ιαν 2007 20:19

Και όπως είχε αναφέρει και σε κάποιο πόστ ο cherouvim καλύτερα αντί για απλά χαρακτήρες να δίνεις στον χρήστη να σου πεί πόσο είναι το αποτέλεσμα μιας πράξης...

ΠΧ Μια εικόνα με το κείμενο: 8+4 και ο χρήστης να πρέπει να δώσει το αποτέλεσμα: 12

;)

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Δημιουργία CAPTCHA

Δημοσίευση από cherouvim » 05 Ιαν 2007 22:24

thanks for the credit ;)

21century
Δημοσιεύσεις: 409
Εγγραφή: 11 Ιούλ 2002 15:44

Δημιουργία CAPTCHA

Δημοσίευση από 21century » 27 Μαρ 2007 20:11

Μπορουμε να βρουμε σκριπτακι για να αποκλειονται οι σπαμερς εντελως?

xatzh
Δημοσιεύσεις: 15
Εγγραφή: 11 Αύγ 2007 16:15

Δημιουργία CAPTCHA

Δημοσίευση από xatzh » 11 Αύγ 2007 23:39

re pedia exo mperdefti ligo pos doylebi ayto diladi
poy bazoume ton κώδικα ego kano mia selida ton bazo ala den moy doylebi as eksigisi kapios pos ginete ke se mena ton asxeto kita to moy bgazi
Εικόνα
exo kani akoma ena post edo
http://www.freestuff.gr/forums/viewtopic.php?t=30375

Άβαταρ μέλους
_Invisible_
Δημοσιεύσεις: 418
Εγγραφή: 16 Νοέμ 2006 16:47
Τοποθεσία: Greece

Δημιουργία CAPTCHA

Δημοσίευση από _Invisible_ » 16 Αύγ 2007 17:32

Hello και ευχαριστώ για τις απαντήσεις σας.

@21century: Η ερώτηση αυτή δεν ξέρω αν μπορεί να απαντηθεί σίγουρα... Πάντως οι προγραμματιστές χρησιμοποιούν όλο και καλύτερες τεχνικές για να σταματούν όσο το δυνατόν γίνεται τα bots. Εγώ έκανα αυτό που είπε ο cherouvim: Έκανα ένα captcha που εμφανίζει μία πράξη (αφαίρεση, πρόσθεση) και αποθηκεύει το αποτέλεσμα της πράξης σε ένα session.

@xatzh: Όπως βλέπω έχεις δημιουργήσει μία φόρμα. Αυτό που πρέπει να κάνεις είναι το εξής: Να ορίσεις πού θα κάνει request αυτή η φόρμα, δηλαδή που θα οδηγεί το action="" και εκεί να βάλεις ένα script που θα επεξεργάζεται την φόρμα που υποβλήθηκε.

Όπως βλέπω, έχεις ένα μικρό προβληματάκι με το captcha σου. Κοίτα τι πρέπει να κάνεις: Πρέπει να δώσεις σωστό path. Αν είσαι σίγουρος ότι στο src="" του image tag σου έχεις ορίσει σωστό path, τότε τρέξε το captcha αρχείο directly από τον browser σου (πχ: http://localhost/captcha.php) και δες αν σου εμφανίζει κάποιο σφάλμα.

Αν δεν σου εμφανίζει κάποιο σφάλμα, και εξακολουθεί να μην σου εμφανίζει την εικόνα, πολύ απλά βάλε στο αρχείο captcha το ακόλουθο (στην αρχή):

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

error_reporting&#40;E_ALL&#41;;
ini_set&#40;'display_errors', true&#41;;
και τότε ίσως εμφανίσει κάποιο σφάλμα. Αν εμφανίζει σωστά την εικόνα χωρίς προβλήματα, τότε έλεγξε το path που έχεις ορίσει στην εικόνα σου. Αν δεν γνωρίζεις HTML, το image tag είναι αυτό:

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

<img src="path_eikonas" alt="" />
Το μόνο που πρέπει να κάνεις είναι να αλλάξεις το "path_eikonas" με το url του αρχείου captcha.

Οτιδήποτε χρειαστείς κάνε ένα post εδώ πέρα και θα σε βοηθήσουμε.

Φιλικά,
invisible.

xatzh
Δημοσιεύσεις: 15
Εγγραφή: 11 Αύγ 2007 16:15

Δημιουργία CAPTCHA

Δημοσίευση από xatzh » 17 Αύγ 2007 14:36

ipon pedia eyxaristo giati boi8iasas telika to eytiaksa ke i ikona doylebi kanonika ala patao register ke mou to kani pali to register xoris na ipologisi tin ikona ton ari8mo enoo.iparxi kati alo mpori kapios na boi8isi na toy stilo to arxio na to dio kodikas tis selidas ine aytos ama boi8ai se kati
Εικόνα

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

<link href="../../css/style.css" rel="stylesheet" type="text/css"> <form name="form1" method="post" action="">
  <table width="400" border="0" cellpadding="0" cellspacing="0" class="main-tables">
    <tr class="label-txt"> 
      <td width="228" bgcolor="#003333">&nbsp;</td>
      <td width="83" bgcolor="#003333">&nbsp;</td>
      <td width="487" bgcolor="#003333">&nbsp;</td>
  </tr>
  <tr class="label-txt"> 
      <td rowspan="2" bgcolor="#003333">&nbsp;</td>
      <td colspan="2" class="logo-txt" bgcolor="#003333">&nbsp;</td>
  </tr>
  <tr class="label-txt"> 
      <td bgcolor="#003333">&nbsp;</td>
      <td bgcolor="#003333">&nbsp;</td>
  </tr>
  <tr> 
      <td bgcolor="#003333">&nbsp;</td>
      <td class="label-txt" bgcolor="#003333"><font color="#FFFFFF"><b>Login&#58;</b></font></td>
      <td bgcolor="#003333">
        <input type="text" name="login" maxlength="10" size="16">
      </td>
  </tr>
  <tr class="label-txt"> 
      <td bgcolor="#003333">&nbsp;</td>
      <td bgcolor="#003333"><font color="#FFFFFF"><b>Password&#58;</b></font></td>
      <td bgcolor="#003333">
        <input type="password" name="password" maxlength="10" size="16">
      </td>
  </tr>
  <tr class="label-txt"> 
      <td bgcolor="#003333">&nbsp;</td>
      <td bgcolor="#003333"><font color="#FFFFFF"><b>Retype&#58;</b></font></td>
      <td bgcolor="#003333"> 
        <input type="password" name="password2" maxlength="10" size="16">
      </td>
  </tr>
  <tr class="label-txt"> 
      <td bgcolor="#003333" height="119">&nbsp;</td>
      <td bgcolor="#003333" height="119"><font color="#FFFFFF"><b>Kodikos</b></font></td>
      <td bgcolor="#003333" height="119">
        <p>&nbsp;</p>
        <p><img src="captcha.php"></p>
        <p> 
          <input type="text" name="kodikos" size="16" />
        </p>
        <p> 
          <input type="submit" name="Submit" value="Register">
        </p>
        <p>
          <?php
&#125;
else if &#40; isset&#40;$_POST&#91;'submit_form'&#93;&#41; &#41;
&#123;
   if &#40; isset&#40;$_POST&#91;'kodikos'&#93;&#41; &#41;
   &#123;
      if &#40;md5&#40;$_POST&#91;'kodikos'&#93;&#41; == $_SESSION&#91;'cpt'&#93;&#41;
      &#123;
         echo 'kodikos correct &#58;D';
      &#125;
      else
      &#123;
         echo 'kodikos not correct &#58;&#40;';
      &#125;
   &#125;
&#125;


?>
        </p>
      </td>
  </tr>
  <tr class="label-txt"> 
      <td bgcolor="#003333">&nbsp;</td>
      <td bgcolor="#003333">&nbsp;</td>
      <td bgcolor="#003333">&nbsp;</td>
  </tr>
 </table>
</form>

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

Δημιουργία CAPTCHA

Δημοσίευση από mrpc » 17 Αύγ 2007 21:28

xatzh σου έβαλα code tag στο μήνυμα σου για να είναι πιο ευανάγνωστο.

Απάντηση

Επιστροφή στο “PHP τα δικά μας scripts”

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

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