Kezdőoldal » Számítástechnika » Programozás » Átnézitek mi a hiba? (PHP)

Átnézitek mi a hiba? (PHP)

Figyelt kérdés

<html>

<header>


</header>

<body>

<?php

$uralkodok = array(

array("Mátyás", "1000-1045"),

array("Lipót", "1000-1001"),

array("Horthy", "1000-1544"),

array("IV. Károly", "1000-1545"),

array("I. István", "1000-1123"));

$error_data = false;

$a=rand(0, 4);

$b=rand(0,1);

$kiirt=$uralkodok[$a][$b];

echo $uralkodok[$a][$b];

print "<br/>";

?>

<form method="POST">

<br/>

<i>(pl.: 1921-1931)</i>

<br/>

<br/>

<input type="text" id="input" name="input">

<br/>

<br/>

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

<br/>

<br/>

</form>

<?php

$feltetelek0='/^[0-9\-]/';

$feltetelek1='/^[a-zA-Z0-9\.\ \-]/';

if($b==1){

$b--;

}

else{

$b++;

}

$kiirt=$uralkodok[$a][$b];

if(isset( $_POST["submit"] ) ) {

$input=$_POST["input"];

$submit=$_POST["submit"];

if($input){

if($input==$kiirt){

$error_data = false;

} else{

$error_data =true;

}

if($error_data==true){

echo "Nem helyes";

} else{

echo "Helyes";

}

}

}

?>


</body>

</html>


2012. máj. 8. 18:56
1 2
 1/11 zsomkovacs ***** válasza:
Esetleg kaphatunk egy kis információt, hogy mi nem működik? Hibaüzenetet ír ki? Mi nem/nem jól jelenik meg?
2012. máj. 8. 20:03
Hasznos számodra ez a válasz?
 2/11 A kérdező kommentje:

Amikor beirom az input mezőbe a megfelelő választ akkor nem az annak megfelelő infót írja ki. Pl.: helyes megoldásnál azt írja, hogy "Helytelen".

Egyébként a feltételek, amik megállapítják és/vagy kiírják hogy milyen a megoldás, az isset függvényen belül van, de mégis a gomb megnyomása előtt már kiírja, hogy Helyes vagy Helytelen.

2012. máj. 8. 20:30
 3/11 anonim ***** válasza:

Bár kipróbálni nem tudom, de szerintem a hiba ott van, hogy sorsolsz ugye két random értéket az elején, elkészíted a formot, majd ha volt post ellenőrzöd.

A gond ott van, hogy a post után újra elkészíted a két random $a és $b értékét, és ezzel akarod összehasonlítani a postolt értéket, tehát a $a és $b értéke ismét véletlenszerű lesz, nem pedig az, amit a kérdésben leraktál, ezért lesz többnyire helytelen a válasz.


Rakd le mondjuk hidden inputokba a $a és $b-t és ha volt post, akkor az ellenőrzésnél azokat használda válasznál.

Vagy rakhatod sessionbe, bármi, csak tárold el hogy mi volt a kérdés :)


Remélem segítettem.

2012. máj. 9. 09:22
Hasznos számodra ez a válasz?
 4/11 A kérdező kommentje:
Én még kezdő vagyok, vagyis ha jobban kifejtenéd annak örülnék.
2012. máj. 9. 10:47
 5/11 anonim ***** válasza:

Akkor íme egy példa:

tegyük fel, hogy a random a-nak 3-at, b-nek 0-t sorsol.

Ekkor ugye kirakod, hogy "IV. Károly", és az input mezőt, a válaszra várva.

A user beírja a helyes megoldást: 1000-1545 a tömböd alapján és rányom a gombra.

Ilyenkor újra lefut a php kódod, tehát a-nak ismét ad egy random értéket, pl. 2 b-nek pl. 1.

Tehát te az ellenőrzésnél az $uralkodok[2][0]-t fogod nézni, ami helytelen.

Ez azért történt, mert a postolás után elveszett az eredeti a=3 és b=1 érték, hiszen újra lefutott az egész kód.


Így már érthető?

2012. máj. 9. 11:59
Hasznos számodra ez a válasz?
 6/11 anonim ***** válasza:
Magyarán szólva az ellenőrzést célszerűbb a kód elejére rakni.
2012. máj. 9. 13:10
Hasznos számodra ez a válasz?
 7/11 anonim ***** válasza:

De lehet úgy is,hogy két kódba rakod az egészet.

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

és akkor az ellenorzes.php ba rakod a megfelelő részt.

Ott pedig kiírod az eredményt majd vagy egy formmal vagy sima linkként visszairányítod a kerdes.php-ra..

2012. máj. 9. 13:20
Hasznos számodra ez a válasz?
 8/11 A kérdező kommentje:
Köszönöm szépen!
2012. máj. 9. 14:09
 9/11 A kérdező kommentje:

Hupsz!

Értem, és valózsínüleg ez a gond, de nem tudom megvalósítani.

2012. máj. 9. 14:27
 10/11 anonim ***** válasza:

<input type="text" id="input" name="a_value" value="ide echozd a $a-t">

<input type="text" id="input" name="b_value" value="ide echozd a $b-t">


és az if($b==1){ részt tedd az isset részbe és a POST-ból vedd a-és b értékét:

if(isset( $_POST["submit"] ) ) {

$b = $_POST["b_value"];

$a = $_POST["a_value];

if($b==1){

$b--;

}

else{

$b++;

}

stb...

2012. máj. 9. 14:32
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!