Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Funkcja rand()
Forum PHP.pl > Forum > PHP
TNT
Witam,
Napisałem sobie taki o to prosty skrypcik:
script.php
  1. <?php
  2. if ($confirm == $code) {...}else{...}
  3. ?>

index.php
  1. <?php $code = rand(1, 500); ?>
  2. Enter code: <input type="text" name="confirm" size="10" maxlength="3"> <?php echo($code);?>
  3. </body>
  4. </html>

Jednak po wpisaniu - teoretycznie - poprawnego kodu w polu 'confirm' wyskakuje mi wartość else. Jak można to zrobić poprawnie?
klocu
wywala elsa bo dostaje wartosc wpisana przez usera i nie ma z czym jej zweryfikowac. w formularzu pusc <input type='hidden' name='oryginal' value='<?= $code; ?>' /> i wtedy weryfikuj.
powiedz jak postepy...
TNT
Ok dodałem to do index.php a w script.php dałem:
  1. <?php
  2. if ($oryginal == $confirm) {...}else{...}
  3. ?>

I dalej nie działa
klocu
sprobuj sprawdzac zmienne poprzez $_POST i $_GET a najlepiej sprawdz co przesyla sie od usera w postaci
Kod
print_r( $_POST );
i wtedy zoabczysz gdzie i w czym tkwi problem...
Suh
Witam.. jezeli to w czymś pomoze to ja zrobilem to w taki sposob.
Jest to kawałek gotowego kodu który ja użyłem..
Polega to na tym ze img.php to grafika wyswietlajaca liczbe z przedzialu (10000,99999) i nastepnie to liczbe musi przepisac uzytkownik...

<?
$liczba = rand(10000, 99999);

print "<img src=\"img.php?val=".$liczba."\"><br><br>\n".
"<font>Przepisz powyższ± liczbę.</font><br>\n".
"<input type=\"text\" size=\"5\" name=\"wynik\"><br>\n".
"<input type=\"hidden\" name=\"liczba\" value=\"".$liczba."\"><br>\n";

?>



Potem jeszcze tylko warunek

<?
if( $_POST['wynik'] == $_POST['liczba'] )
...
else
...
?>

Mam nadzieje że to w czymś pomoże
Pzdr
klocu
po bardzo krótkim teście wyszło na to że Twoja konstrukcja jest jak najbardziej prawidłowa
Kod
<?
$liczba = rand(10000, 99999);

print "<form method=\"post\" action=\"t.php\">".
"<img src=\"img.php?val=".$liczba."\"> dla mnie zebym nie musiał generować obrazka: $liczba<br><br>\n".
"<font>Przepisz powyższ± liczbę.</font><br>\n".
"<input type=\"text\" size=\"5\" name=\"wynik\"><br>\n".
"<input type=\"hidden\" name=\"liczba\" value=\"".$liczba."\"><br>
<input type=\"submit\" name=\"sprawdz\" value=\"Sprawdź\" /></form>\n";

if( $_POST['wynik'] == $_POST['liczba'] and $_POST['wynik'] <> null and $_POST['liczba'] <> null and $_POST['sprawdz'] <> null ) {
    echo"ok";
} else {
    echo"bad";
}
?>

tylko pamietaj, jak widzisz weryfikuje dopiero jesli formularz jest wypelniony w 100% nigdy mniej.
i ciekawostka w tym przykladzie. jesli puscisz formularz w IE przez enter a nie submit to formularz nie dojdzie, w firefoxie jest jak najbardziej prawidłowo...
TNT
Dzięki Suh! Oparłem sie na twoim przykładzie i działa smile.gif
Suh
Ciesze się ze moglem pomóc jak również dziękuję za uwagę.. musze popróbować pod IE bo faktycznie używam ostatnio tylko i wyłącznie FF'a rolleyes.gif
Pzdr

Edit
Dodam jedynie, że w moim kodzie jest to wszystko faktycznie weryfikowane dopiero po całkowitym wypełnieniu formularza. Dlatego tez pominąłem warunki typu $zmienna <> null poniewaz uważam, że skoro 2 zmienne - w tym przypadku GETwynik i GETliczba - maja byc porównywane to one poprostu muszą istnieć - więc nie mogą być null'em.
bim2
Przejrzałem sobie topic i mam pytanie. Czy ten obrazek ma zabezpieczać stronę przed botami? Bo jak tak to nic nie utrudniłes botom... sciana.gif
Suh
nie... poprostu chcialem sobie cos takiego zrobic snitch.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.