Warning: session_start()

Status
Niet open voor verdere reacties.

nl18663

Gebruiker
Lid geworden
19 dec 2007
Berichten
156
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/verjaardag/putinsql.php:33) in /var/www/verjaardag/var.php on line 2

weet iemand wat ik hier mee moet?
ik heb verschillende dingen geprobeert maar ik blijf deze error krijgen.
 
session_start(); hoort voor elke output gedeclareerd te worden.

Het beste is om hem meteen na de PHP-tags te gebruiken
PHP:
<?php
session_start();
// rest van je PHP-code
?>
Wanneer je een bestand include dan is het verstandiger om hem te gebruiken in de pagina waarin je de include aanroept.
pagina1.php
PHP:
<?php
echo $_SESSION['login'];
?>
pagina2.php
PHP:
<?php
session_start();
include("pagina1.php");
?>
 
dus als ik het goed begrijp als ik een structuur heb met bestanden die worden aangeroepen hoef ik maar in de bovenste te zeggen session_start();
en dan wordt het in alle bestanden mee genomen...
bla1.php <-- bla2.php <-- bla3.php <-- bla4.php.... in bla4.php staat iets van session['naam'];
en in bla1.php staat
PHP:
<?php
session_start(); 
require_once('bla2.php');
 
Klopt, had je ook kunnen testen
 
had ik ook gedaan, maar het werkt niet, daarom wou ik bevestiging...

PHP:
 login.php 
<?php
session_start(); 
include_once ("dbconnection.php"); 
$tbl_name="gebruikers";  

$myusername=$_POST['loginnaam'];  
$mypassword=$_POST['wachtwoord'];  

//SQL user zoeken  
$sql="SELECT Unaam,mail_adr,aangemaakt,toegang_nivo  
       FROM $tbl_name 
       WHERE gebr_naam='$myusername' and wachtw='$mypassword'";  
$query = mysql_query($sql) or die(mysql_error()); 
$result=mysql_fetch_array($query);  
$count=mysql_num_rows($query);  

$toegang_nivo=$result['toegang_nivo'];  
$Unaam=$result['Unaam'];  
$mail_adr=$result['mail_adr'];  
$aangemaakt=$result['aangemaakt'];  


if($count==1){  
// Register $myusername, $mypassword and redirect to file "login_success.php"  

$_SESSION['myusername'] = $myusername; 
$_SESSION['mypassword'] = $mypassword; 
$_SESSION['toegang_nivo'] = $toegang_nivo; 
$_SESSION['Unaam'] = $Unaam; 
$_SESSION['mail_adr'] = $mail_adr; 
$_SESSION['aangemaakt'] = $aangemaakt; 

header("location:frames.php");  
}  
else {  
echo "Wrong Username or Password";  
} 
?>

PHP:
login_success.php 
<?php
session_start();
include_once ("toegang/toegang_levelall.php");
require_once('texten.php'); ?>

<html>

<head>

<title><?php echo "$ktitle" ;?></title>

</head>

<body>
<table align="center" width="50%">
  <tr>
    <tr>
        <td>
        <div align="center">
        <?php echo "$kbody";?>
        </div>
                </td>
                <td>
        <?php echo $logo; ?>
        </td>
  </tr>
  <tr>
        <td>
        <div align="center">
        <?php echo "$nieuweklant";?>
        </div>
        </td>
  </tr>
  <tr>
        <td>
        <div align="center">
        <?php echo "$wijzigenklant";?>
        </div>
        </td>
   </tr>
  </td>
<tr>
   </td>
</tr>
</table>
</body>

</html>

PHP:
toegang_levelall.php
<?php
require_once('required.php');
$toegang = FALSE;
if (eregi ('[1-3]',$toegang_nivo)){
        $toegang = TRUE;
}

if ($toegang == FALSE){
echo "</br></br></br></br></br></br></br><div align='center'>U bent niet gemachtigt om deze Pagina te bezoeken!</div>";
exit();
}
?>

PHP:
 toegang/required.php 
<?php
require_once('/var/www/verjaardag/dbconnection.php');
require_once('/var/www/verjaardag/var.php');
?>

PHP:
var.php 
<?php
$myusername = $_SESSION['myusername']; 
$mypassword = $_SESSION['mypassword']; 
$toegang_nivo = $_SESSION['toegang_nivo']; 
$Unaam = $_SESSION['Unaam']; 
$mail_adr = $_SESSION['mail_adr']; 
$aangemaakt = $_SESSION['aangemaakt']; 


?>



wat doe ik fout?
 
Laatst bewerkt:
Echt logisch zit je script niet in elkaar.

Je include het ene bestand in het andere terwijl je eigenlijk makkelijk maar 1 of 2x iets hoeft te includen.

Volgens mij moet je hiermee de boel wel aan de praat kunnen krijgen...
toegang_levelall.php
PHP:
<?php
$toegang = FALSE; 
if (eregi ('[1-3]',$_SESSION['toegang_nivo'])){ 
        $toegang = TRUE; 
} 

if ($toegang == FALSE){ 
echo "</br></br></br></br></br></br></br><div align='center'>U bent niet gemachtigt om deze Pagina te bezoeken!</div>"; 
exit(); 
} 
?>
login_success.php
PHP:
<?php
session_start();
include_once ("dbconnection.php");
include_once ("toegang/toegang_levelall.php");
require_once('texten.php');
$myusername = $_SESSION['myusername'];  
$mypassword = $_SESSION['mypassword'];  
$toegang_nivo = $_SESSION['toegang_nivo'];  
$Unaam = $_SESSION['Unaam'];  
$mail_adr = $_SESSION['mail_adr'];  
$aangemaakt = $_SESSION['aangemaakt'];  
?> 

<html> 

<head> 

<title><?php echo "$ktitle" ;?></title> 

</head> 

<body> 
<table align="center" width="50%"> 
  <tr> 
    <tr> 
        <td> 
        <div align="center"> 
        <?php echo "$kbody";?> 
        </div> 
                </td> 
                <td> 
        <?php echo $logo; ?> 
        </td> 
  </tr> 
  <tr> 
        <td> 
        <div align="center"> 
        <?php echo "$nieuweklant";?> 
        </div> 
        </td> 
  </tr> 
  <tr> 
        <td> 
        <div align="center"> 
        <?php echo "$wijzigenklant";?> 
        </div> 
        </td> 
   </tr> 
  </td> 
<tr> 
   </td> 
</tr> 
</table> 
</body> 

</html>
required.php en var.php kun je dan weggooien
 
wat de clou van het veraal is, ik spreek deze bestanden in elke pagina aan, dat scheelt klopwerk vooral met var.php omdat ik elke keer de zelfde gegevens wil weten van de user.
de toegang_level...php gebruik ik om de pagina's in aanmerking te kunnen laten komen voor een bepaald level van toegang, 1 user 2 super user, 3 admin.
dat is de rede waarom ik het zo heb gemaakt, wat ik heb gepost is ook maar een zeer klein deel van mijn programma...
 
Je moet alleen nooit al die dingen in een sessie opslaan, zeker het wachtwoord niet. Alleen het id van de user en de usergroup is genoeg.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan