login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Eigen anti spam maken..

Offline Scythen - 19/01/2007 19:55
Avatar van ScythenPHP gevorderde Ik zou graag een eigen anti-spam willen maken, Captcha is me iets te moeilijk, dadelijk zal je begrijpen waarom:P. Ik wou dus eigenlijk een array maken, met daarin sommen. Bijv. $som1=4+5, etc. Maar ik heb al een beetje geprobeerd, maar het lukt niet.. ik begrijp niet hoe je ze erin moet doen, en hoe je ze eruit moet halen.. kan iemand mij helpen? En als het goed is moet ik rand(); gebruiken.. toch?

38 antwoorden

Gesponsorde links
Offline Stijn - 19/01/2007 20:07
Avatar van Stijn PHP expert Ik gebruik ook zoiets bij contact formulieren. Eigenlijk is zo'n som ding enkel voor bots tegen te gaan. Anti-spam kan je doen met sessie of cookie. Maar voor zo'n som moet je het volgende doen (vereenvoudigde code:
  1. <input type="hidden" name="som1" value="<?php echo rand(0,10); ?>">
  2. <input type="hidden" name="som2" value="<?php echo rand(0,10); ?>">
  3. <input type="text" name="som">
  4.  
  5. <? //php
  6. if( $_POST['som'] == $_POST['som1'] + $_POST['som2'] ) {
  7. echo "de som is verkeerd!";
  8. } else {
  9. //verstuur mail
  10. echo "correct!";
  11. }
  12. ?>


stijn
Offline Scythen - 19/01/2007 20:11
Avatar van Scythen PHP gevorderde En, wat zijn precies die inputs? Moet ik een maken van som: <input type="text" name ="som1"> en dat voor 2 en 3 ook of.. ?
Offline webstab - 19/01/2007 20:17
Avatar van webstab PHP ver gevorderde Zo kan je het doen, maar ik denk dat de "spambot" dat wel zal kunnen oplossen.
Zeker als het gewoon in de broncode staat.

som1,som2 zijn hidden fields en "ziet" de gebruiker niet (tenzij in broncode)
som is hetgeen wat hij moet invullen
Offline Stijn - 19/01/2007 20:17
Avatar van Stijn PHP expert dat zijn hidden inputs, je ziet die niet maar die zijn nodig omdat je toch de som moet weten... 
Offline timo - 19/01/2007 20:23
Avatar van timo PHP ver gevorderde maar als ik mijn spambot file_get_contents() laat doen en a/d hand daarvan mijn POST gegevens opmaak, dan zie ik 2 hidden inputs met iets wat ik in moet vullen dus dan geef ik zo de som ervan mee..
Offline Scythen - 19/01/2007 20:23 (laatste wijziging 19/01/2007 20:23)
Avatar van Scythen PHP gevorderde Ik heb even zitten knutselen ik heb dit nu:

  1. <?
  2. $rand1 = rand(0,10);
  3. $rand2 = rand(0,20);
  4. $som = $rand1 + $rand2;
  5.  
  6. echo "".$rand1." + ".$rand2."";
  7.  
  8. ?>


Dat is mijn 'verify' dan, dat is x + x, daarna komt html input met antwoord:

maar hoe ga ik verder met de verificatie in de php..
Offline Kr4nKz1n - 19/01/2007 20:25 (laatste wijziging 19/01/2007 20:30)
Avatar van Kr4nKz1n Onbekend Als je een echo begint en/of eindigt hoef je geen "". en/of ."" te typen.

  1. <?
  2. echo $rand1." + ".$rand2;



-Edit-
Ik zou het zo doen:
  1. <?
  2. $rand = array(rand(0,10), rand(0,20));
  3. echo $rand[0]." + ".$rand[1]." = ".($rand[0] + $rand[1]);

Geen onnodige variabelen etc.
Offline Scythen - 19/01/2007 20:31
Avatar van Scythen PHP gevorderde Dankjewel, ziet er beter uit ja. En nu de verificatie in mijn script dan.. misschien dat nog ff samen doen?:)
Offline Kr4nKz1n - 19/01/2007 20:35
Avatar van Kr4nKz1n Onbekend Dit moet je dus niet met HIDDEN fields doen.

1: Opslaan in de DB en ophalen via IP,
2: Een session of cookie aanmaken met de waardes erin en deze controleren,
Offline Scythen - 19/01/2007 20:38
Avatar van Scythen PHP gevorderde Kr4nKz1n, ik denk niet dat je begrijpt waar ik op doel...

het is gewoon een simpel sommetje, waarin je het antwoord invullen moet in een input type="text" .. en dan moet je het controleren, of dat klopt met de opgegeven som.. maar dat weet ik niet hoe dat moet.
Offline Kr4nKz1n - 19/01/2007 20:42
Avatar van Kr4nKz1n Onbekend Ja dit doe je om BOT`s tegen te gaan toch? Zodat de actie niet 100x wordt uitgevoerd.
Dat bedoel ik ook 

  1. <?php
  2. if($_SERVER['REQUEST_METHOD'] == "POST")
  3. {
  4. if($_POST['answer'] == ($_SESSION['int1'] + $_SESSION['int2']))
  5. echo "Goed";
  6. else
  7. echo "Fout";
  8. }
  9. else
  10. {
  11. $rand = array(rand(0,10), rand(0,20));
  12. $_SESSION['int1'] = $rand[0];
  13. $_SESSION['int2'] = $rand[1];
  14. echo "<form method=\"post\">
  15. ".$rand[0]." + ".$rand[1]."
  16. <input type=\"text\" name=\"answer\" /><br />
  17. <input type=\"submit\" value=\"Register\" />
  18. </form>";
  19. }
  20.  
  21. ?>

Al getest.
Offline Scythen - 19/01/2007 20:44
Avatar van Scythen PHP gevorderde Is het goed als ik jouw ff mijn script geef? Want dit erin verwerken gaat toch echt boven mijn kunnen...

-> http://www.plaatscode.be/3883/
Offline Kr4nKz1n - 19/01/2007 20:50
Avatar van Kr4nKz1n Onbekend http://www.plaatscode.be/3884/
Probeer eens.

Wel slordige coding hoor pfff
Offline Scythen - 19/01/2007 20:51
Avatar van Scythen PHP gevorderde Ben een echte perfectionist hoor, maar vind het goed doen beter dan netjes doen.. als het maar af komt, dan kan ik het nog wel ordenen.
Offline Kr4nKz1n - 19/01/2007 20:52
Avatar van Kr4nKz1n Onbekend Hoezo?
Gewoon gelijk ordenen.
Geen gezeik achteraf.
Offline Scythen - 19/01/2007 20:54
Avatar van Scythen PHP gevorderde Het werkt niet hoor Krankzin, als ik op submit druk gebeurt er niks..
Offline Kr4nKz1n - 19/01/2007 21:05
Avatar van Kr4nKz1n Onbekend Gebruik even allemaal quotes " << bij HTML.
Anders zou ik het niet weten.

Of verander

$_SERVER['REQUEST_METHOD'] == "POST"
in
IsSet($_POST['post'])

zoals je het had.
Offline Stijn - 19/01/2007 21:06
Avatar van Stijn PHP expert een random nummer kan niet worden achterhaalt door een bot rofl
Offline Kr4nKz1n - 19/01/2007 21:07
Avatar van Kr4nKz1n Onbekend stijn1989, wat lach je? Dat is toch ook de reden waarom we dit doen?
Offline Scythen - 19/01/2007 21:08
Avatar van Scythen PHP gevorderde Kan iemand me helpen, want dit schiet namelijk niet op.
Offline Kr4nKz1n - 19/01/2007 21:11
Avatar van Kr4nKz1n Onbekend http://www.plaatscode.be/3885/
Check deze ff
Moet werken stond een fout in.
Offline Scythen - 19/01/2007 21:15
Avatar van Scythen PHP gevorderde Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at d:\easyphp1-8\www\index.php:6) in d:\easyphp1-8\www\toevoegen.php on line 3


Krijgen we dat weer...
Offline Kr4nKz1n - 19/01/2007 21:16
Avatar van Kr4nKz1n Onbekend ik gebruik nooit sessions, dus kweenie of je ob_start en session_start tegelijk mag gebruiken.
Offline Scythen - 19/01/2007 21:19
Avatar van Scythen PHP gevorderde Grappig zeg, nu laat die gwoon t uitkomst van de som zien.. lol
Offline Kr4nKz1n - 19/01/2007 21:20
Avatar van Kr4nKz1n Onbekend Dan haal je dat toch weg.
Offline Scythen - 19/01/2007 21:21
Avatar van Scythen PHP gevorderde wat weg halen? ff duidelijker zijn aub.. want dit is totaal vreemd voor mij.
Offline Kr4nKz1n - 19/01/2007 21:23
Avatar van Kr4nKz1n Onbekend Hallo!! Als dit vreemd voor je is ga dan snel even tutorials lezen. gewoon dat gene weg halen wat je niet wilt zien.
(het antworod dus)
Offline Scythen - 19/01/2007 21:25
Avatar van Scythen PHP gevorderde ^_- Erm, normaal gaf hij het niet aan, ik weet niet wat jij hebt toegevoegd.. maar dat klopt dus gewoon niet.
Offline nielsvdwal - 19/01/2007 21:26
Avatar van nielsvdwal PHP gevorderde Scythen.. wat ben jij serieus een ondankbaar mens zeg.. hij probeert je te helpen en dan ga je hem nog beschuldigen dat hij iets fout heeft gedaan.. serieus goed bezig jij..
Offline Scythen - 19/01/2007 21:28
Avatar van Scythen PHP gevorderde Ik beschuldig hem nergens van, maar ik zeg alleen dat er iets fout is in de code.. wát? .. dat weet ik ook niet, daarom vraag ik hier om hulp. Maar jij bent er toch ook, jij zegt ook niks.. je staat er bij en kijkt ernaar .. dus.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.284s