Session errors
Mijn probleem is dat ik steeds session errors krijg die er als volgt uitzien:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /www/zymichost.com/v/i/d/vidjinderhoebaduop/htdocs/index.php:14) in /www/zymichost.com/v/i/d/vidjinderhoebaduop/htdocs/verwerkenlogin.php on line 3
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /www/zymichost.com/v/i/d/vidjinderhoebaduop/htdocs/index.php:14) in /www/zymichost.com/v/i/d/vidjinderhoebaduop/htdocs/verwerkenlogin.php on line 3
Warning: Cannot modify header information - headers already sent by (output started at /www/zymichost.com/v/i/d/vidjinderhoebaduop/htdocs/index.php:14) in /www/zymichost.com/v/i/d/vidjinderhoebaduop/htdocs/verwerkenlogin.php on line 23
stop de POST variablen en SESSION variablenmysql_num_rows ($result) = 1
en dit is mijn verwerkenlogin.php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<div class="verwerkenlogincontent">
<?php
session_start();
if(!empty ($_POST["email"]) and !empty($_POST["wachtwoord"])){
include ("connect_db.php");
$query = " SELECT email, wachtwoord, gebruikersrol
FROM userinloggegevens
WHERE email = '".$_POST["email"]."'
AND wachtwoord = '".MD5($_POST["wachtwoord"])."'";
$results = mysql_query($query) or die ("de query is niet goed gelukt".mysql.error());
if( mysql_num_rows($results) > 0 ) {
$_SESSION["email"] = $_POST["email"];
$_SESSION["wachtwoord"] = MD5($_POST["wachtwoord"]);
for ( $i=0 ; $i<mysql_num_rows($results) ; $i++)
{
$gegevens = mysql_fetch_array($results);
$_SESSION["gebruikersrol"] = $gegevens["gebruikersrol"];
}
echo $_SESSION["email"]." ".$_SESSION["wachtwoord"]." ".$_SESSION["gebruikersrol"]."<br/>";
header("location: doorverwijzen.php");
echo "stop de POST variablen en SESSION variablen";
echo 'mysql_num_rows ($result) = '.mysql_num_rows ($results);
}else{
echo "De opgegeven combinatie van uw Email en Wachtwoord is niet geldig.<br/> Ga jezelf <a href='index.php?content=registreren'>registreren</a> of ga terug naar de <a href='index.php?content=home'>homepage</a>.";
}
}else{
header("location: index.php?content=inloggen");
}
?>
</div>
<?php
session_start();
if(!empty ($_POST["email"]) and !empty($_POST["wachtwoord"])){
include ("connect_db.php");
$query = " SELECT email, wachtwoord, gebruikersrol
FROM userinloggegevens
WHERE email = '".$_POST["email"]."'
AND wachtwoord = '".MD5($_POST["wachtwoord"])."'";
$results = mysql_query($query) or die ("de query is niet goed gelukt".mysql.error());
if( mysql_num_rows($results) > 0 ) {
$_SESSION["email"] = $_POST["email"];
$_SESSION["wachtwoord"] = MD5($_POST["wachtwoord"]);
for ( $i=0 ; $i<mysql_num_rows($results) ; $i++)
{
$gegevens = mysql_fetch_array($results);
$_SESSION["gebruikersrol"] = $gegevens["gebruikersrol"];
}
echo $_SESSION["email"]." ".$_SESSION["wachtwoord"]." ".$_SESSION["gebruikersrol"]."<br/>";
header("location: doorverwijzen.php");
echo "stop de POST variablen en SESSION variablen";
echo 'mysql_num_rows ($result) = '.mysql_num_rows ($results);
}else{
echo "De opgegeven combinatie van uw Email en Wachtwoord is niet geldig.<br/> Ga jezelf <a href='index.php?content=registreren'>registreren</a> of ga terug naar de <a href='index.php?content=home'>homepage</a>.";
}
}else{
header("location: index.php?content=inloggen");
}
?>
</div>
Ik heb al wat op internet gezocht en die zeggen dat de session_start bovenaan moet staan zoals je ziet heb ik dat gedaan maar de probleem is er nogsteeds.
Kan iemand me helpen?
Alvast bedankt
Gewijzigd op 17/01/2011 15:47:04 door V K
Dit is een 'standaard'foutmelding, waarbij Google je heel snel het antwoord had kunnen geven. Ook op dit forum is deze vraag regelmatig gesteld.
header("location: doorverwijzen.php");
header("location: index.php?content=inloggen");
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
session_start();
?>
<div class="verwerkenlogincontent">
<?php
if(!empty ($_POST["email"]) and !empty($_POST["wachtwoord"])){
include ("connect_db.php");
$query = " SELECT email, wachtwoord, gebruikersrol
FROM userinloggegevens
WHERE email = '".$_POST["email"]."'
AND wachtwoord = '".MD5($_POST["wachtwoord"])."'";
$results = mysql_query($query) or die ("de query is niet goed gelukt".mysql.error());
if( mysql_num_rows($results) > 0 ) {
$_SESSION["email"] = $_POST["email"];
$_SESSION["wachtwoord"] = MD5($_POST["wachtwoord"]);
for ( $i=0 ; $i<mysql_num_rows($results) ; $i++)
{
$gegevens = mysql_fetch_array($results);
$_SESSION["gebruikersrol"] = $gegevens["gebruikersrol"];
}
header("location: doorverwijzen.php");
//echo $_SESSION["email"]." ".$_SESSION["wachtwoord"]." ".$_SESSION["gebruikersrol"]."<br/>";
//echo "stop de POST variablen en SESSION variablen";
//echo 'mysql_num_rows ($result) = '.mysql_num_rows ($results);
}else{
echo "De opgegeven combinatie van uw Email en Wachtwoord is niet geldig.<br/> Ga jezelf <a href='index.php?content=registreren'>registreren</a> of ga terug naar de <a href='index.php?content=home'>homepage</a>.";
}
}else{
header("location: index.php?content=inloggen");
}
?>
</div>
session_start();
?>
<div class="verwerkenlogincontent">
<?php
if(!empty ($_POST["email"]) and !empty($_POST["wachtwoord"])){
include ("connect_db.php");
$query = " SELECT email, wachtwoord, gebruikersrol
FROM userinloggegevens
WHERE email = '".$_POST["email"]."'
AND wachtwoord = '".MD5($_POST["wachtwoord"])."'";
$results = mysql_query($query) or die ("de query is niet goed gelukt".mysql.error());
if( mysql_num_rows($results) > 0 ) {
$_SESSION["email"] = $_POST["email"];
$_SESSION["wachtwoord"] = MD5($_POST["wachtwoord"]);
for ( $i=0 ; $i<mysql_num_rows($results) ; $i++)
{
$gegevens = mysql_fetch_array($results);
$_SESSION["gebruikersrol"] = $gegevens["gebruikersrol"];
}
header("location: doorverwijzen.php");
//echo $_SESSION["email"]." ".$_SESSION["wachtwoord"]." ".$_SESSION["gebruikersrol"]."<br/>";
//echo "stop de POST variablen en SESSION variablen";
//echo 'mysql_num_rows ($result) = '.mysql_num_rows ($results);
}else{
echo "De opgegeven combinatie van uw Email en Wachtwoord is niet geldig.<br/> Ga jezelf <a href='index.php?content=registreren'>registreren</a> of ga terug naar de <a href='index.php?content=home'>homepage</a>.";
}
}else{
header("location: index.php?content=inloggen");
}
?>
</div>
en wat was er niet goed aan:
header("location: doorverwijzen.php");
header("location: index.php?content=inloggen");
- Je script SQL injection gevoelig.
- Waarom sla je het wachtwoord in een Sessie op?
- die is geen mooie foutafhandeling.
En ik kan nog wel even door gaan helaas.
Gewijzigd op 17/01/2011 16:31:46 door - Mark -
Je zou dus iets als dit kunnen doen:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
session_start();
$content ='';
//-php code-
$content .='<div class="verwerkenlogincontent">';
//-nog meer php-
//en dan als laatste
echo $content;
?>
session_start();
$content ='';
//-php code-
$content .='<div class="verwerkenlogincontent">';
//-nog meer php-
//en dan als laatste
echo $content;
?>
of natuurlijk gebruik maken van een template parser als smarty
Gewijzigd op 17/01/2011 16:32:30 door jasper hoi
Je gaat idd waarschijnlijk nog iets voor die <div...> hebben staan. Als je gaat naar de pagina waar de deze wordt geinclude, daar ga je waarschijnlijk je <html> tag hebben staan. Daar voor (dus ook nog voor je <!DOCTYPE...>) moet die session_start(); staan. Effectief voor ELKE output.