Vinnaren i pepparkakshustävlingen!
2016-12-08, 15:47
  #1
Medlem
Okej så jag har skapat ett litet anti-spam skydd i PHP men problemet är att när den jämför de 2 olika talen så blir det aldrig rätt.
Tex om randomNumber blir 5+5 och jag skriver in 10 som svar som svar då blir det ändå fel.
$human funkar så det är inte problemet.

Kod:
$randomNumber1 = rand(1,10);
$randomNumber2 = rand(1,10);
$answer = $randomNumber1 + $randomNumber2;

if (isset($_POST['send'])) {
		$human = intval($_POST['human']);

		//Check if simple anti-bot test is correct
		if ($human !== $answer) {
			$errHuman = 'Your anti-spam is incorrect';
		}
}
Citera
2016-12-08, 15:54
  #2
Medlem
EckiEckis avatar
Citat:
Ursprungligen postat av bAngeen
Okej så jag har skapat ett litet anti-spam skydd i PHP men problemet är att när den jämför de 2 olika talen så blir det aldrig rätt.
Tex om randomNumber blir 5+5 och jag skriver in 10 som svar som svar då blir det ändå fel.
$human funkar så det är inte problemet.

Kod:
$randomNumber1 = rand(1,10);
$randomNumber2 = rand(1,10);
$answer = $randomNumber1 + $randomNumber2;

if (isset($_POST['send'])) {
		$human = intval($_POST['human']);

		//Check if simple anti-bot test is correct
		if ($human !== $answer) {
			$errHuman = 'Your anti-spam is incorrect';
		}
}

Varför använder du !== och inte != ? Sen bör du nog fundera på att hantera saker som CR LF och andra eventuella osynliga tecken i din $human
Citera
2016-12-08, 15:55
  #3
Medlem
Kaustis avatar
Citat:
Ursprungligen postat av bAngeen
Okej så jag har skapat ett litet anti-spam skydd i PHP men problemet är att när den jämför de 2 olika talen så blir det aldrig rätt.
Tex om randomNumber blir 5+5 och jag skriver in 10 som svar som svar då blir det ändå fel.
$human funkar så det är inte problemet.

Kod:
$randomNumber1 = rand(1,10);
$randomNumber2 = rand(1,10);
$answer = $randomNumber1 + $randomNumber2;

if (isset($_POST['send'])) {
		$human = intval($_POST['human']);

		//Check if simple anti-bot test is correct
		if ($human !== $answer) {
			$errHuman = 'Your anti-spam is incorrect';
		}
}

Var exakt går det fel? Prova att skriva ut alla variabler för att kunna felsöka, typ nånting sånt här:

Kod:
$randomNumber1 = rand(1,10);
$randomNumber2 = rand(1,10);
$answer = $randomNumber1 + $randomNumber2;

echo $answer. " "; //skriv ut $answer

if (isset($_POST['send'])) {
		$human = intval($_POST['human']);
echo $human;  //skriv ut $human
		//Check if simple anti-bot test is correct
		if ($human !== $answer) {
			$errHuman = 'Your anti-spam is incorrect';
		}
}

Min gissning är att nån av dom typ är tom, innehåller ett space eller likande. För jämförelsen funkar fint när jag testar den.
Citera
2016-12-08, 17:06
  #4
Medlem
Hittade felet, Sidan han refreshas innan den han kolla answer fixade problem genom att förvara värderna med $_SESSION
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback