ugrás a tartalomhoz

Sessionban a hiba de hol?

Anonymous · 2006. Okt. 14. (Szo), 11.38
Sziasztok!

Nem bírok rájönni, hogy hol a hiba, bejelentkezek sessionnel utána megjelenik az űrlap, beírom a dolgokat, de nem küld el semmit az adatbázisnak és ki is dob a sessionből! De ha a session-os részt kiszedem akkor simán küldi a db-nek a cuccokat, tehát a sessionban van a hiba, de nem bírok rájönni! Segítsetek legyetek szívesek! Itt a teljes kód:
  1. <?php  
  2. include("../db/dbconnect.php");  
  3. session_start();  
  4.   
  5.   
  6. #fejlec  
  7. echo "<img src=\"../modul/pictures/logo.jpg\"><br><br><img src=\"../modul/pictures/smile32.gif\"><b> Új hír? Álmodozz csak ...</b> <img src=\"../modul/pictures/smile32.gif\"><br><br>";  
  8.   
  9. #kilépés  
  10. if ($_REQUEST[kilep]==1){  
  11. session_unregister('sess_nev');  
  12. $_REQUEST[sess_nev] = "";  
  13. }  
  14.   
  15. ####################################################  
  16. #hitelesites  
  17. if (($sess_nev=="")and($_REQUEST[belepnev]!="")and($_REQUEST[belepjelszo]!="")){  
  18.     #megnezzuk, hogy az adatok stimmelnek-e  
  19.     $_REQUEST[sql_joadat] = mysql_query("select * from admin where nev='$_REQUEST[belepnev]' and jelszo='$_REQUEST[belepjelszo]'");  
  20.     #ha egy ilyen rekord van, akkor jot adott meg  
  21.     if (mysql_num_rows($_REQUEST[sql_joadat])==1){  
  22.     #jot adott meg  
  23.     $sess_nev = "$_REQUEST[belepnev]";  
  24.     session_register("sess_nev");  
  25.     }else{  
  26.     #rosszat adott meg  
  27.     echo "Rossz név vagy (és) jelszó!";  
  28.     }  
  29. }  
  30. #hitelesites vege  
  31. ####################################################  
  32. #ha nincs még bejelentkezve  
  33. if ($sess_nev==""){  
  34. echo "  
  35.     <table width=\"100%\">  
  36.         <tr>  
  37.             <td>  
  38.             <form method=\"post\" action=\"ujhir.php\">  
  39.             Név: <input type=\"text\" name=\"belepnev\">  
  40.             Jelszó: <input type=\"password\" name=\"belepjelszo\">  
  41.             <input type=\"submit\" value=\"bejelentkezés\">  
  42.             </form>  
  43.             </td>  
  44.         </tr>  
  45.     </table>  
  46. ";  
  47.   
  48. }else{  
  49. #ha be van jelentkezve  
  50. echo "  
  51.     <table width=\"100%\">  
  52.         <tr>  
  53.             <td>  
  54.             Szia $sess_nev!<a href=\"ujhir.php?kilep=1\">Kijelentkezés</a>  
  55.             </td>  
  56.         </tr>  
  57.     </table>  
  58. ";  
  59. }  
  60.   
  61. if ($sess_nev!=""){  
  62.   
  63.   
  64.   
  65. if (($_POST[kuldve] !=1) or ($_POST[hirkuldo]==""or ($_POST[hirszoveg]=="")){  
  66.   
  67. if ($_POST[kuldve]==1){  
  68.             if ($_POST[hirkuldo]==""){$urlap="A hír küldőjének neve kötelező!";}  
  69.             if ($_POST[hirszoveg]==""){$urlap.="Hírszöveg kötelező!";}  
  70. }  
  71.   
  72. $urlap .="  
  73.         <form method=\"post\" action=\"ujhir.php\">  
  74.         <br><b>Hírküldő neve</b>(max. 20 karakter)<input type=\"text\" name=\"hirkuldo\" value=\"$_POST[hirkuldo]\"><br>  
  75.         <b>Hír Címe</b><input type=\"text\" name=\"hircim\" value=\"$_POST[hircim]\"><br>  
  76.         <br><b>Hír szövege:</b><br><textarea name=\"hirszoveg\" cols=\"40\" rows=\"10\">$_POST[hirszoveg]</textarea><br>  
  77.         <br><input type=\"hidden\" name=\"kuldve\" value=\"1\"><br>  
  78.         <input type=\"submit\" value=\"Új hír elküldése\"><br><br>  
  79.         ";  
  80.   
  81. }else{  
  82.   
  83. $_POST[hircim] = nl2br("$_POST[hircim]");  
  84. $_POST[hirszoveg] = nl2br("$_POST[hirszoveg]");  
  85. $datum = date("Y.m.d");  
  86. $ido = date("H:i");  
  87.   
  88. $zuttybele = mysql_query("INSERT INTO latrina_hirek (id,datum,ido,hirkuldo,hircim,hirszoveg) VALUES ('','$datum','$ido','$_POST[hirkuldo]','$_POST[hircim]','$_POST[hirszoveg]')");  
  89.   
  90. $urlap="<br>Új Hír elküldve<br><br><a href=\"index.php\">Vissza az adminhoz</a>";  
  91. }  
  92. echo "$urlap";  
  93.   
  94. }  
  95. ?>  
 
1

kedves anonymus

krey · 2006. Okt. 14. (Szo), 12.20
Eszembe sem jutott elolvasni a kódodat és ezzel szerintem a legtöbben így vannak. Nagyon optimista ember vagy, ha azt hiszed, hogy ezzel valaki bogarászni fog. Esélyeidet nagyban növelnéd, ha bbcode jelölő(ke)t használnál, vagy esetleg megpróbálnád debuggolni a kódodat és csak a hibás részt bemásolni ide.

üdv. krey
2

bbcode javítva

Hojtsy Gábor · 2006. Okt. 14. (Szo), 12.34
A bbcode jelölés hiányát javítottam.
3

Tömve hibákkal

Dualon · 2006. Okt. 14. (Szo), 12.56
Nincs időm se, kedvem se részletesem végigbogarászni a kódod, de egy-két hibára felhívnám a figyelmed:
  • $sess_nev = "$_REQUEST[belepnev]"
    Ez így nem biztos, hogy menni fog. :)
  • ún. szuperglobális változókat használsz ($_REQUEST), de a sessiont session_registerrel indítod? Miért? $_SESSION = 'valami'?
  • if ($_REQUEST[belepnev]!="") helyett !empty($_REQUEST[belepnev]) tanácsosabb
  • submit gomboknak adj nevet, utána azon a néven tudod ellenőrizni, hogy megérkeztek-e
    1. $_REQUEST[sql_joadat] = mysql_query("select * from admin where nev='$_REQUEST[belepnev]' and jelszo='$_REQUEST[belepjelszo]'");  
    A $_REQUEST[sql_joadat] egyrészt értelmetlen (bár a teljes kódot nem ismerem), másrészt hanyag (idézőjelek/aposztrófok? így konstanst keres!), harmadrészt akkora biztonsági rés van rajt, mint a bécsikapu.
    Általában a bemeneti adatokat szűretlenül tárolod, ami nem egy nagyon jó ötlet. Olvass utána, itt, a weblaboron is volt erről cikk.


Összességében az az érzésem támadt, hogy nem tudnád elmagyarázni a kód működését, sőt, igazából fogalmad nincs, mi miért van. Ne essen rosszul, ha esetleg hibásan feltételezem, de azt nem várhatod senkitől, hogy itt megcsinálja neked, munkaajánlatnak meg nem a legjobb helyen van.
(Minőségét tekintve legalább jó helyre, a társaihoz megy:
INSERT INTO latrina_hirek
:D)

Kaptad, vagy másoltad a cuccot?
4

kezdő vagyok!

Anonymous · 2006. Okt. 14. (Szo), 14.38
Másoltam, együtt írtuk a suliban :D
A másik dolog az, hogy éppen tanulom még ezt, és még nem jutottunk el a REQUEST/GET/POST stb változókhoz csak szimpla $akarmi változókat hazsnálunk, tehát register_globals_on -on van egyenlőre még így "dolgozunk"! A kódot eltudom magyarázni bármikor, hogy mi hoyg van és miért! Csak ezeket a vátozókat nem értem még igazából! És ebből jön a problémám is, hogy pl mi a külömbség a GET és REQUEST között ... magam kísérleteztem azt is ki, hogy hova kell a POST, segítség nélkül elég nehéz! Szóval nem csak ctrl+c ctrl+v volt a "tudományom".
5

RTFM

Dualon · 2006. Okt. 14. (Szo), 16.42
Nem tudom, a PHP kézikönyvet ismered-e, de abban egyértelműen le van írva a szuperglobális változók mibenléte; általában véve érdemes olvasgatnod a nyelv alapjai c. fejezetet.

"Másoltam, együtt írtuk a suliban :D"

Számítástechnika órán?
6

nem számtek órán! :)

Anonymous · 2006. Okt. 14. (Szo), 16.47
Úgy suliban, hogy rendszerinformatikusnak tanulok!
7

Ó jaj...

Anonymous · 2006. Okt. 14. (Szo), 23.40
Ó jaj, leendő rendszerinformatikuskám, tanuld meg, hogy a kézikönyv egy NAGYON hasznos dolog. Meg az angol nyelv is.
8

munkamenet indítás

kerzo · 2006. Okt. 16. (H), 23.41
Csak egy kérdés. A munkamenetet nem akkor kell indítani, amikor még semmit nem küldtünk el sehova? Tehát először a session_start(), azután az include(). Persze lehet, hogy ennek nincs jelentősége.
Ezt a témát még én sem vágom rendesen.
9

Include

Anonymous · 2006. Okt. 17. (K), 10.50
Ha az include-olt fájlban nincs kimenet, akkor nincs gond. Ha van, akkor probléma.