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:
  1. <form action="elkuldi.php" method="post">  
  2. <input type="text" name="nev">  
  3. <input type="text" name="eletkor">  
  4. <input type="submit" name="button" value="Elonezet">  
  5. </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:
  1. <html>  
  2. <head><title>Ez a lap cime</title></head>  
  3. <body>Ez lesz a lap torzse<br>  
  4. <?php  
  5. $nev=$_POST["nev"];  
  6. $eletkor=$_POST["eletkor"];  
  7. $szoveg = "A bevitt adatok a kovetkezoek: <br>";  
  8. $szoveg = $szoveg . "Név:&nbsp;&nbsp; ".$nev."<br>";  
  9. $szoveg = $szoveg . "Életkor:&nbsp;&nbsp; ".$eletkor;  
  10. print($szoveg);  
  11. if (isset($gomb)) {  
  12. if (mail("valaki##kukac##valami.com""Targy"$szoveg"MIME-Version: 1.0\r\n"."Content-type: text/html; charset=iso-8859-2\r\n")) {  
  13. print("Sikeres kuldes!");  
  14. exit;  
  15. }  
  16. else {  
  17. print("Sikertelen kuldes!");  
  18. }  
  19. }  
  20. ?>  
  21. <form method="post">  
  22. <input type="submit" name="gomb" value="Elküld">  
  23. <input type="button" value="Vissza" onClick="history.go(-1); return true;">  
  24. </form>  
  25. </body>  
  26. </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
  1. <html>  
  2. <head><title>Ez a lap cime</title></head>  
  3. <body>Ez lesz a lap torzse<br>  
  4. <?php  
  5. $szoveg = "A bevitt adatok a kovetkezoek: <br>";  
  6. $szoveg = $szoveg . "Név:&nbsp;&nbsp; ".$_POST["nev"]."<br>";  
  7. $szoveg = $szoveg . "Életkor:&nbsp;&nbsp; ".$_POST["eletkor"];  
  8. print($szoveg);  
  9. if (isset($gomb)) {  
  10. 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")) {  
  11. print("Sikeres kuldes!");  
  12. exit;  
  13. }  
  14. else {  
  15. print("Sikertelen kuldes!");  
  16. }  
  17. }  
  18. ?>  
  19. <form method="post" action="elkuldi.php">  
  20. <input type="submit" name="gomb" value="Elküld">  
  21. <input type="button" value="Vissza" onClick="history.go(-1); return true;">  
  22. <input type="hidden" name="szoveg" value="<?php print($szoveg);?>">  
  23. </form>  
  24. </body>  
  25. </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