Problema _session

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Monica
Mesaje:21

Problema _session

Buna ziua.

Va rog sa ma ajutati intr-o problema la care nu-i dau de capat.
Am urmatoarele coduri:

aa.php

Cod: Selectaţi tot

<form  name="FormLogin" action="userlogin.php" method="post">
	<label for="email">E-Mail: </label>
	<input class="field" type="text" name="adremail" value="<?php echo (isset($_POST['adremail'])) ? $_POST['adremail'] : ''; ?>" size="17" /><br />
	<label for="password_new">Parola: </label>
	<input class="field" type="password" name="parola" size="20" /><br />
	<input type="hidden" name="action" value="submit" />
	<input name="Login" type="submit" value="Login" class="login_button" />
</form>
userlogin.php

Cod: Selectaţi tot

<?php
session_start();
if(!isset($_SESSION['email']))
	$_SESSION['email'] = $_POST['adremail'];

if ($_POST['adremail']=='' || $_POST["parola"]==''){	
	echo "Completati ambele campuri";
} else {
	echo "<script>location.href='formular.php';</script>";
}
?>
formular.php

Cod: Selectaţi tot

<?php
echo $_SESSION['email'];
?>
care imi da eroarea

""Notice: Undefined variable: _SESSION in C:\Program Files\EasyPHP-5.3.5.0\www\CatalogulWeb_V.3.0\formular.php on line 2""

nu inteleg unde e greseala ? :roll: :( :( :(

Multumesc anticipat.

claUdiu Mesaje:313
Ai incercat sa pui un session_start(); in formular.php?
Se spune ca...."omul tot invata in viata". Dar...Totusi...Trebie sa ne oprim undeva, nu?

Monica Mesaje:21
asta era. Multumesc !

Monica Mesaje:21
Acum a aparut o alta problema ...
Partea de cod cu form (aa.php) am luat-o dintr-o pagina php care reprezinta pagina principala. Daca rulez din aa.php totul e ok, daca rulez din pagina principala apare mesajul ca session_start este pornit din pagina principala si nu merge mai departe.
Pagina principala nu contine niciun cod php deci nicio sesiune deschisa, este un layer cu div-uri, imagini, bannere, javascripturi, bla, bla si acest formular de autentificare (aa.php). De unde poate aparea eroarea asta ? Cum scap de ea ?

claUdiu Mesaje:313
Ca session_start e pornit din alta pagina? Poti sa pui te rog textul erorii?
Se spune ca...."omul tot invata in viata". Dar...Totusi...Trebie sa ne oprim undeva, nu?

Monica Mesaje:21
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Program Files\EasyPHP-5.3.5.0\www\Catalog\anunturi.php:119) in C:\Program Files\EasyPHP-5.3.5.0\www\Catalog\user_login.php on line 11

MarPlo Mesaje:4343
Salut
Eroarea indica date trimise la server inainte de linia unde se aplica "session_start()" , sau includerea fisier cu aceasta (cum ar fi un echo, un cod html sau chiar un spatiu inainte de <?php ).
"session_start()" trebuie apelat inainte de trimitere alte date spre server, si ca sa nu fie accesat de mai multe ori, se poate folosi asa:

Cod: Selectaţi tot

if(!isset($_SESSION)) session_start(); 

Monica Mesaje:21
Nu reusesc sa scap de eroare :(
codurile sunt asa:

aa.php - am luat cu copy/paste exact cum e in pagina principala

Cod: Selectaţi tot

<form  name="FormLogin" action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
	<label for="email">E-Mail: </label>
	<input class="field" type="text" name="adremail" value="<?php echo (isset($_POST['adremail'])) ? $_POST['adremail'] : ''; ?>" size="17" /><br />
	<label for="password_new">Parola: </label>
	<input class="field" type="password" name="parola" size="20" /><br />
	<a href="#" name="recupparola" style="font-family:Arial, Helvetica, sans-serif;font-weight:normal" >Am uitat parola</a>
	<input type="hidden" name="action" value="submit" />
	<input name="Login" type="submit" value="Login" class="login_button" /><br />
	<a href="user_nou.php" name="inregistrare" >Inregistrare</a>
	<input class="field" type="text" name="adremail_log" value="<?php echo (isset($_POST['adremail_log'])) ? $_POST['adremail_log'] : ''; ?>" size="17"  style="visibility:hidden"/>
</form>


<?php
if (isset($_POST['Login'])) {
	include('user_login.php');
};
?>

<a id="aAnunt" href="#" onclick="fanuntgratuit();">Adauga Anunt</a>

<script>
function fanuntgratuit(){
if (document.FormLogin.adremail.value==""){
	alert('Trebuie sa va logati pentru a putea inscrie un anunt.');
} else {
	location.href="anunt_adauga.php";
};
};
</script>

user_login.php

Cod: Selectaţi tot

<?php
if(!isset($_SESSION)) session_start(); 
if(!isset($_SESSION['email']))
	$_SESSION['email'] = $_POST['adremail'];

$wemail = $_POST['adremail'];
$wparola=trim($_POST["parola"]);
...
anunt_adauga.php

Cod: Selectaţi tot

<?php
if(!isset($_SESSION)) session_start(); 
?>

<html>
<head>
...
daca rulez asa totul e ok, merge. Daca rulez din pagina principala nu mai merge, imi da eroarea la autentificare (click pe "Login").

MarPlo Mesaje:4343
Incearca in pagina principala sa incluzi "user_login.php" la inceput, cu:

Cod: Selectaţi tot

<?php include('user_login.php'); ?>
Sau adaugi si in ea, la inceput:

Cod: Selectaţi tot

<?php
if(!isset($_SESSION)) session_start();
?>

Monica Mesaje:21
in pagina principala am <?php include('user_login.php'); ?> pus in lini a in care am nevoie de el
in user_login.php am pus if(!isset($_SESSION)) session_start();

Eu sunt la inceput de drum cu php-ul, pagina principala nu e facuta de mine, e un layer pe care incerc sa-l fac functional, nu are decat bannere, imagini si meniurile. Eu am intervenit doar cu ce am boldat albastru, in rest nimic, nu are nimic care ar putea starta o sesiune ...


</div>
</div>
<div id="catalog_header_right">
<div class="box1">
<div id="box1_left_section">
<div id="login">
<form name="FormLogin" action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<label for="email">E-Mail: </label>
<input class="field" type="text" name="adremail" value="<?php echo (isset($_POST['adremail'])) ? $_POST['adremail'] : ''; ?>" size="17" /><br />
<label for="password_new">Parola: </label>
<input class="field" type="password" name="parola" size="20" /><br />
<a href="#" name="recupparola" style="font-family:Arial, Helvetica, sans-serif;font-weight:normal" >Am uitat parola</a>
<input type="hidden" name="action" value="submit" />
<input name="Login" type="submit" value="Login" class="login_button" /><br />
<a href="user_nou.php" name="inregistrare" >Inregistrare</a>
<input class="field" type="text" name="adremail_log" value="<?php echo (isset($_POST['adremail_log'])) ? $_POST['adremail_log'] : ''; ?>" size="17" style="visibility:hidden"/>
</form>
</div>

<?php
if (isset($_POST['Login'])) {
include('user_login.php');
};
?>
</div>


<div id="box1_right_section">
<div class="nav-stiri">
Stiri:
<a href="#">Interne</a> |
<a href="#">Externe</a> |
<a href="#">Sport</a> |
<a href="#">Financiar</a> |
<a href="#">Monden</a> |
<a href="#">Auto</a> |
<a href="#">IT</a>
</div>


<div id="ticker-container" onmouseover="sspeed=0;" onmouseout="sspeed=resumesspeed">
<div id="ticker"></div>
</div>
</div>
</div>

<div style="margin-top:107px; margin-left:45px;">
<img id="banner_1" border="0" src="images/BANNER2.gif"></img>
</div>


<script>
function fanuntgratuit(){
if (document.FormLogin.adremail_log.value==""){
alert('Trebuie sa va logati pentru a putea inscrie un anunt.');
} else {
location.href="anunt_adauga.php";
};
};
</script>
<div id="box2">
<div id="box2_left_section">
<a id="aAnunt" class="LCP" href="#" onclick="fanuntgratuit();">Adauga Anunt</a>
<a id="aSite" class="LCP" href="#">Adauga Site</a>
<a id="aFirma" class="LCP" href="#">Adauga Firma</a>
Publicitate Online
<br />

scuze ca am scos din code, dar nu imi lua boldarea si culoarea.

Nu mai stiu ce sa-i fac :( :( :( stau blocata pe chestia asta de o saptamana, la inceput ca nu am pus inca un session_start unde trebuia, acum, dupa ce l-am pus a aprut chestia asta cu mesajul de eroare.

MarPlo Mesaje:4343
Incearca cu if(!isset($_SESSION)) session_start(); la inceputul paginii principale.
Daca nici asa nu merge, asta e, ne fiind facut de tine, incerci sa modifici..., cam greu sa potrivesti stilul /cunostintele celui care a facut scriptul cu cel ce modifica. De aceea evit sa ma bag in modificari de scripturi ale altora.
Cine modifica, sa stie ce face.

Monica Mesaje:21
Cu <?php if(!isset($_SESSION)) session_start(); ?> pus la inceput merge ... in sfarsit merge :D
Se poate inchide subiectul.

Multumesc mult Marplo pt ajutor.

Subiecte similare