ugrás a tartalomhoz

Urlap feldolgozaskor elvesznek az adatok

millye · 2006. Május. 9. (K), 06.36
Udv Weblaborosok!

Megoldast keresek a kovetkezo problemara:
Beolvasni adatokat, azokat megjeleniteni (preview), majd elkuldeni e-mail-ben.

En a kovetkezo megoldasra gondoltam:

Van egy urlapom amibol beolvasom az adatokat

urlap.php:
<form action="elkuldi.php" method="post">
<input type="text" name="nev">
<input type="text" name="eletkor">
<input type="submit" name="button" value="Elonezet">
</form>
Van egy masik file, ami a bevitt adatokat megjeleniti (es felajanlja a lehetoseget a modositasra), majd a mail() fuggveny segitsegevel elkuldi a kivant cimre.

elkuldi.php:
<html>
<head><title>Ez a lap cime</title></head>
<body>Ez lesz a lap torzse<br>
<?php
$nev=$_POST["nev"];
$eletkor=$_POST["eletkor"];
$szoveg = "A bevitt adatok a kovetkezoek: <br>";
$szoveg = $szoveg . "Név:&nbsp;&nbsp; ".$nev."<br>";
$szoveg = $szoveg . "Életkor:&nbsp;&nbsp; ".$eletkor;
print($szoveg);
if (isset($gomb)) {
if (mail("valaki##kukac##valami.com", "Targy", $szoveg, "MIME-Version: 1.0\r\n"."Content-type: text/html; charset=iso-8859-2\r\n")) {
print("Sikeres kuldes!");
exit;
}
else {
print("Sikertelen kuldes!");
}
}
?>
<form method="post">
<input type="submit" name="gomb" value="Elküld">
<input type="button" value="Vissza" onClick="history.go(-1); return true;">
</form>
</body>
</html>

NA MOST JON AMIT NEM TUDOK:

Amikor az urlap tartalmat elkuldom a feldolgozo file-nak (az elkuld.php-nak) minden ok.
Amikor viszont raklikkelek az "Elkuld" gombra, azaz amikor lefut a mail() annyi Notice szintu hibauzenet jelentkezik ahany valtozo van. A fenti esetben konkretan ketto darab:
Notice: Undefined index: nev in C:\phpweb\elkuldi.php on line 5
Notice: Undefined index: eletkor in C:\phpweb\elkuldi.php on line 6

Ennek ellenere elmegy a level, de valtozok nelkul.

Hogyan lehet megmenteni a valtozokat, hogy azok is postazodjanak?
Ugyanakkor az is fontos, hogy elkuldes elott meg egyszer meg lehessen jeleniteni az adatokat.

Otleteket varok es elore is koszonom!
 
1

Post

Anonymous · 2006. Május. 9. (K), 10.57
A második esetben már nincs tárolva a $szoveg változód. Azt már nem Postolod.
Oda még kellene:
<input type="hidden" name=szoveg value=<?php print($szoveg) ?>

Illetve ahol a $gomb eseményt vizsgálod ott $szoveg=$_POST["szoveg"]
BCsoft
2

:(:(:(

millye · 2006. Május. 9. (K), 15.09
Koszi az otletet, de sajnos nem mukodik.
Csak nem kuldi el a valtozokat, illetve azok tartalmat.
3

Megvaltoztattam a kodot:

millye · 2006. Május. 9. (K), 15.51
A kovetkezo keppen valtoztattam a kodon:
elkuldi.php
<html>
<head><title>Ez a lap cime</title></head>
<body>Ez lesz a lap torzse<br>
<?php
$szoveg = "A bevitt adatok a kovetkezoek: <br>";
$szoveg = $szoveg . "Név:&nbsp;&nbsp; ".$_POST["nev"]."<br>";
$szoveg = $szoveg . "Életkor:&nbsp;&nbsp; ".$_POST["eletkor"];
print($szoveg);
if (isset($gomb)) {
if (mail("valaki##kukac##valami.com", "targy", $_POST["szoveg"], "MIME-Version: 1.0\r\n"."Content-type: text/html; charset=iso-8859-2\r\n")) {
print("Sikeres kuldes!");
exit;
}
else {
print("Sikertelen kuldes!");
}
}
?>
<form method="post" action="elkuldi.php">
<input type="submit" name="gomb" value="Elküld">
<input type="button" value="Vissza" onClick="history.go(-1); return true;">
<input type="hidden" name="szoveg" value="<?php print($szoveg);?>">
</form>
</body>
</html>
Most elkuldi az adatokat.

Csak az a baj, hogy meg mindig megjelenik a Notice szintu hibauzenet minden valtozora, igy:
Notice: Undefined index: nev in C:\phpweb\elkuldi.php on line 6
Notice: Undefined index: eletkor in C:\phpweb\elkuldi.php on line 7
Ez ellen mit lehet tenni???
4

post még mindig

talger · 2006. Május. 9. (K), 16.30
Mert a második küldésnél a nev és az eletkor sem "post"-olódik. Ezért küld figyelmeztetést.

Esetleg nézz körül itt Hibakezelés; Notice típusú "hibákkal" mennyire érdemes foglalkozni?
5

Köszönöm a segítséget!

millye · 2006. Május. 10. (Sze), 13.33
Most már minden OK!
Köszi szépen!
6

Off :)

Anonymous · 2006. Május. 10. (Sze), 16.29
Hello :)
Igazából ez már nem ide tartozik, de egy kis kiegészítés (egyszerűsítés)... Jól jöhet más környezetben, pl. ha sok bejövő adatot ellenőrzöl és gyűjtöd a hibaüzeneteket, akkor jól jöhet így egy változóba (pl $error) és utána csak egy echo az egész...

Ez helyett:
$szoveg = "A bevitt adatok a kovetkezoek: <br>";
$szoveg = $szoveg . "Név:&nbsp;&nbsp; ".$nev."<br>";
$szoveg = $szoveg . "Életkor:&nbsp;&nbsp; ".$eletkor;

Így:
$szoveg = "A bevitt adatok a kovetkezoek: <br>";
$szoveg .= "Név:&nbsp;&nbsp; ".$_POST["nev"]."<br>";
$szoveg .= "Életkor:&nbsp;&nbsp; ".$_POST["eletkor"];

Lényegében full ugyan az a kettő, csak rövidebb...
mint a $szam = $szam+5; ekvivalens a $szam+=5; -tel :D