Gå til innhold

Trenger hjelp med "antibot"


Anbefalte innlegg

Er ikke så god på det med sessions..

 

Prøver å lage en "antibot", men gikk ikke så bra:

 

$q = $_SESSION['antibot'];
$w = $_POST['anti'];

  if($q != $w) {
	  echo "test";
  }
  else {
  unset($_SESSION['antibot']);
  }

 

Skriv inn tallet, "<strong><i><?php $m = rand(1, 999); echo $m;  $m = $_SESSION['antibot'] = true; ?></i></strong>": <br><input type="text" name="anti" size="3">

 

 

Lurer på hva jeg har gjort feil? Kan dere hjelpe meg litt.. ? :)

Endret av creAtiive
Lenke til kommentar
Videoannonse
Annonse

Jeg prøvde å hinte til at koden ikke helt henger på greip. Hva du faktisk tenker er jeg ikke egentlig interessert i..

 

En session er ikke noe som startes eller kjøres. Du skal tilegne den en verdi, som du bruker til å sammenligne det brukeren skriver.

Lenke til kommentar

$m = $_SESSION['antibot'] = true;

 

er det samme som:

 

$m = true;

$_SESSION['antibot'] = true;

 

begge er variabler som blir definert.

 

starte session gjøres med funksjonen session_start();

session_start();

$randomInt = mt_rand(1, 999);

$_SESSION['antibot'] = $randomInt;

print 'Skriv inn tallet ' . $randomInt . ' <input type="text" name="antibot" value="" /><br />' . "\n";
print '<input type="submit" name="submit_form" value="Send" /><br />' . "\n";

 

if (isset($_POST['submit_form'])) {
 if ((int)$_SESSION['antibot'] == (int)$_POST['antibot']) print 'Godkjennt!';
 else print 'Feil!';
}

Endret av grimjoey
Lenke til kommentar
Jeg prøvde å hinte til at koden ikke helt henger på greip. Hva du faktisk tenker er jeg ikke egentlig interessert i..

 

En session er ikke noe som startes eller kjøres. Du skal tilegne den en verdi, som du bruker til å sammenligne det brukeren skriver.

 

 

Kan du gi meg et eksempel ? :hmm:

Lenke til kommentar
se oppdatert innlegg #6

 

Jeg prøvde koden du så i en ny fil: test.php

 

 

Og den fungerte ikke :ermm:

 

 

 

<?php

 

session_start();

 

$randomInt = mt_rand(1, 999);

 

$_SESSION['antibot'] = $randomInt;

 

print '<form action="" method="post">Skriv inn tallet ' . $randomInt . ' <input type="text" name="antibot" value="" /><br />' . "\n";

print '<input type="submit" name="submit_form" value="Send" /><br /></form>' . "\n";

 

 

 

 

 

if (isset($_POST['submit_form'])) {

if ((int)$_SESSION['antibot'] == $_POST['antibot']) {

echo 'Godkjennt!';

}

else print 'Feil!';

}

?>

 

Endret av creAtiive
Lenke til kommentar

det er ikke så rart.

 

du skal vise en tilfeldig verdi til brukeren som brukeren skal sende tilbake via et html form for å bekrefte at brukeren ikke er en bot.

 

i spoileren der finnes det ikke en eneste html tag. et form må se tilnærmet slik ut:

 

<form method="post" action="someactionpage.php">

<input type="text" name="antibot" />

<input type="submit" name="submit" />

</form>

 

når du trykker submit her sendes verdien fra input, med navn antibot, til siden som står spesifisert i form attributten "action" (altså someactionpage.php). dataen blir sendt i en post request som vil si at du kan lese verdien i php som $_POST['antibot']. 'antibot' refererer til navnet til input tagen som brukeren la inn informasjon i.

 

 

someactionpage.php

<?php
session_start();
if (isset($_POST['submit_form'])) {
 if ((int)$_SESSION['antibot'] == (int)$_POST['antibot']) print 'Godkjent!';
 else print 'Feil!';
}
?>

 

thepage.php

<?php
session_start();

$randomInt = mt_rand(1, 999);

$_SESSION['antibot'] = $randomInt;

print '<form action="someactionpage.php" method="post">' . "\n";
print 'Skriv inn tallet ' . $randomInt . ' <input type="text" name="antibot" value="" /><br />' . "\n";
print '<input type="submit" name="submit_form" value="Send" /><br />' . "\n";
print '</form>' . "\n";
?>

 

alternativt alt på en side:

<?php

session_start();

if (isset($_POST['submit_form'])) {
 if ((int)$_SESSION['antibot'] == (int)$_POST['antibot']) print 'Godkjent!';
 else print 'Feil!';

} else {
 $randomInt = mt_rand(1, 999);

 $_SESSION['antibot'] = $randomInt;

 print '<form method="post">' . "\n";
 print 'Skriv inn tallet ' . $randomInt . ' <input type="text" name="antibot" value="" /><br />' . "\n";
 print '<input type="submit" name="submit_form" value="Send" /><br />' . "\n";
 print '</form>' . "\n";

}

?>

Endret av grimjoey
Lenke til kommentar
det er ikke så rart.

 

du skal vise en tilfeldig verdi til brukeren som brukeren skal sende tilbake via et html form for å bekrefte at brukeren ikke er en bot.

 

i spoileren der finnes det ikke en eneste html tag. et form må se tilnærmet slik ut:

 

<form method="post" action="someactionpage.php">

<input type="text" name="antibot" />

<input type="submit" name="submit" />

</form>

 

når du trykker submit her sendes verdien fra input, med navn antibot, til siden som står spesifisert i form attributten "action" (altså someactionpage.php). dataen blir sendt i en post request som vil si at du kan lese verdien i php som $_POST['antibot']. 'antibot' refererer til navnet til input tagen som brukeren la inn informasjon i.

 

 

someactionpage.php

<?php
session_start();
if (isset($_POST['submit_form'])) {
  if ((int)$_SESSION['antibot'] == (int)$_POST['antibot']) print 'Godkjent!';
  else print 'Feil!';
}
?>

 

thepage.php

<?php
session_start();

$randomInt = mt_rand(1, 999);

$_SESSION['antibot'] = $randomInt;

print '<form action="someactionpage.php" method="post">' . "\n";
print 'Skriv inn tallet ' . $randomInt . ' <input type="text" name="antibot" value="" /><br />' . "\n";
print '<input type="submit" name="submit_form" value="Send" /><br />' . "\n";
print '</form>' . "\n";
?>

 

alternativt alt på en side:

<?php

session_start();

if (isset($_POST['submit_form'])) {
  if ((int)$_SESSION['antibot'] == (int)$_POST['antibot']) print 'Godkjent!';
  else print 'Feil!';

} else {
  $randomInt = mt_rand(1, 999);

  $_SESSION['antibot'] = $randomInt;

  print '<form method="post">' . "\n";
  print 'Skriv inn tallet ' . $randomInt . ' <input type="text" name="antibot" value="" /><br />' . "\n";
  print '<input type="submit" name="submit_form" value="Send" /><br />' . "\n";
  print '</form>' . "\n";

}

?>

 

 

Takk takk :)

 

Er det nødvendig å slette sessionen ?

Lenke til kommentar

session har to komponenter. en cookie hos bruker med en identifikator. og et array på serveren hvor data lagres med relasjon til identifikatoren hos bruker.

 

cookien slettes når brukeren lukker browseren sin.

arrayet slettes når en viss timeout er nådd uten at php har gjenkjent den aktuelle cookien.

 

med andre ord slettes session av seg selv.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...