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:
<?php
include("../db/dbconnect.php");
session_start();


#fejlec
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>";

#kilépés
if ($_REQUEST[kilep]==1){
session_unregister('sess_nev');
$_REQUEST[sess_nev] = "";
}

####################################################
#hitelesites
if (($sess_nev=="")and($_REQUEST[belepnev]!="")and($_REQUEST[belepjelszo]!="")){
	#megnezzuk, hogy az adatok stimmelnek-e
	$_REQUEST[sql_joadat] = mysql_query("select * from admin where nev='$_REQUEST[belepnev]' and jelszo='$_REQUEST[belepjelszo]'");
	#ha egy ilyen rekord van, akkor jot adott meg
	if (mysql_num_rows($_REQUEST[sql_joadat])==1){
	#jot adott meg
	$sess_nev = "$_REQUEST[belepnev]";
	session_register("sess_nev");
	}else{
	#rosszat adott meg
	echo "Rossz név vagy (és) jelszó!";
	}
}
#hitelesites vege
####################################################
#ha nincs még bejelentkezve
if ($sess_nev==""){
echo "
	<table width=\"100%\">
		<tr>
			<td>
			<form method=\"post\" action=\"ujhir.php\">
			Név: <input type=\"text\" name=\"belepnev\">
			Jelszó: <input type=\"password\" name=\"belepjelszo\">
			<input type=\"submit\" value=\"bejelentkezés\">
			</form>
			</td>
		</tr>
	</table>
";

}else{
#ha be van jelentkezve
echo "
	<table width=\"100%\">
		<tr>
			<td>
			Szia $sess_nev!<a href=\"ujhir.php?kilep=1\">Kijelentkezés</a>
			</td>
		</tr>
	</table>
";
}

if ($sess_nev!=""){



if (($_POST[kuldve] !=1) or ($_POST[hirkuldo]=="") or ($_POST[hirszoveg]=="")){

if ($_POST[kuldve]==1){
			if ($_POST[hirkuldo]==""){$urlap="A hír küldőjének neve kötelező!";}
			if ($_POST[hirszoveg]==""){$urlap.="Hírszöveg kötelező!";}
}

$urlap .="
		<form method=\"post\" action=\"ujhir.php\">
		<br><b>Hírküldő neve</b>(max. 20 karakter)<input type=\"text\" name=\"hirkuldo\" value=\"$_POST[hirkuldo]\"><br>
		<b>Hír Címe</b><input type=\"text\" name=\"hircim\" value=\"$_POST[hircim]\"><br>
		<br><b>Hír szövege:</b><br><textarea name=\"hirszoveg\" cols=\"40\" rows=\"10\">$_POST[hirszoveg]</textarea><br>
		<br><input type=\"hidden\" name=\"kuldve\" value=\"1\"><br>
		<input type=\"submit\" value=\"Új hír elküldése\"><br><br>
		";

}else{

$_POST[hircim] = nl2br("$_POST[hircim]");
$_POST[hirszoveg] = nl2br("$_POST[hirszoveg]");
$datum = date("Y.m.d");
$ido = date("H:i");

$zuttybele = mysql_query("INSERT INTO latrina_hirek (id,datum,ido,hirkuldo,hircim,hirszoveg) VALUES ('','$datum','$ido','$_POST[hirkuldo]','$_POST[hircim]','$_POST[hirszoveg]')");

$urlap="<br>Új Hír elküldve<br><br><a href=\"index.php\">Vissza az adminhoz</a>";
}
echo "$urlap";

}
?>
 
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
  • $_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.