Gå til innhold

Session-feil ved pålogging i eplebook. [LØST]


Anbefalte innlegg

Skrevet (endret)

Hei!

 

Har søkt litt rundt, men fant ikke noe svar på problemet mitt. Så derfor spør jeg her :)

 

Jeg har nettopp fått satt opp Eplebook v. 1.1. som Loomy har laget. Det fungerer stort sett som det skal nå, men har problemer når jeg skal prøve å logge på som admin. På admin-siden (du finner den her) dukker det opp to feilmeldinger.

 

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at D:\www\janmer\fotball\gjestebok\admin.php:9) in D:\www\janmer\fotball\gjestebok\admin.php on line 36

 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at D:\www\janmer\fotball\gjestebok\admin.php:9) in D:\www\janmer\fotball\gjestebok\admin.php on line 36

 

Linje 36 ser sånn ut:

 

session_start();

Jeg får logget meg inn som admin, men med en gang jeg prøver å gjøre noe blir jeg kastet ut. Antar det er fordi den ikke klarer å lagge inn cookien som husker innloggingen.

 

Er det noen som vet hvordan jeg løser det? Har ikke så mye greie på PHP, men prøver da å lære meg det :)

 

Eller legger jeg ved resten av koden, i tilfellet den skulle komme til nytte.

 

<html>
<head>
<title>gjestebok - admin </title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>

<?php
//***********************//
//     EpleBook v1.0     //
//-----------------------//
//      ADMIN AREA       //
//***********************//

/*  This file is part of Eplebook.

   Eplebook is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   Eplebook is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with Foobar; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

include("config.php");
echo $topmenu; // Displays the top menu (see config file)
@$action = $_GET['action'];
session_start();
if(empty($action) || !isset($action)) {
if(@$_SESSION['permission'] == 1) {
 $action = "read";
}
else {
 $action = "login";
}
}

if($action == "login") {
?>
<p>Type your password below to log in:</p>
<form method="post" action="?action=read">
Password: <input type="password" name="password">
<input type="submit" value="Log in">
</form>
<?php
}
elseif($action == "read") {
// Check login
$password = md5($_POST['password']);
if($password == $adminPass || $_SESSION['permission'] == 1) {
 $_SESSION['permission'] = 1;
}
else {
 $_SESSION['permission'] = 0;
 echo "<p>You are NOT logged in</p>";
 exit;
}

// Paging
echo "<div class=\"paging\">";
$offset = $_GET['offset'];
if (empty($offset)) {
   	$offset = 0;
}
if ($offset != 0) { // Skip PREV link if offset is 0
   	$prevoffset = $offset - $limit;
   	echo "<a href=\"admin.php?action=read&offset=$prevoffset\">PREV</a>   \n";
}
$pages=intval($numrows / $limit);
if ($numrows % $limit) {
 $pages++;
}
for ($i=1;$i<=$pages;$i++) {
   	$newoffset = $limit * ($i-1);
   	echo "<a href=\"admin.php?action=read&offset=$newoffset\">$i</a>   \n";
}
if (($offset / $limit) != $pages-1 && $pages != 1) {
   	// Not last page so give NEXT link
   	$newoffset = $offset + $limit;
   	echo "<a href=\"admin.php?action=read&offset=$newoffset\">NEXT</a><p>\n";
}
echo '</div>';
// End of paging

// LIST ENTRYS
$query = mysql_query("SELECT * FROM $sqlTable ORDER BY id DESC");
echo "<p style=\"text-align:center;\">There are " . mysql_num_rows($query) . " entrys in the guestbook<p>";
while ($row = mysql_fetch_object($query)) { ?>
 <div class="gbook">
 <h3>Written by <?php echo $row->name;
 if(!empty($row->email)) {
 	echo " ($row->email)"; }
 echo " ($row->ip) @ $row->date</h3>
 <p>" . nl2br(url2link(stripslashes($row->comment))) ?></p>
 <p><a href="?action=delete&id=<?php echo $row->id ?>">Delete</a> |
 <a href="?action=edit&id=<?php echo $row->id ?>">Edit</a></p>
 </div>
 <?php
}
}
elseif($action == "delete") {
// Check login
$password = md5($_POST['password']);
if($password == $adminPass || $_SESSION['permission'] == 1) {
 $_SESSION['permission'] = 1;
}
else {
 $_SESSION['permission'] = 0;
 echo "<p>You are NOT logged in</p>";
 exit;
}
$id = $_GET['id'];
$query = "DELETE FROM $sqlTable WHERE id = $id LIMIT 1";
 if(mysql_query($query)) {
 echo "<h3>Entry deleted!</h3>";
}
else {
 echo "<h3>Entry could not be deleted:</h3>" . mysql_error();
}
}
elseif($action == "edit") {
// Check login
$password = md5($_POST['password']);
if($password == $adminPass || $_SESSION['permission'] == 1) {
 $_SESSION['permission'] = 1;
}
else {
 $_SESSION['permission'] = 0;
 echo "<p>You are NOT logged in</p>";
 exit;
}
$id = $_GET['id'];
$query = mysql_query("SELECT * FROM $sqlTable WHERE id = $id");
$row = mysql_fetch_object($query);
echo '
<form method="post" action="?action=save_changes&id=' . $id . '">
<p>Name:<br /><input type="text" name="name" maxlength="30" size="30" value="' . $row->name . '" /></p>
<p>E-mail (optional):<br /><input type="text" name="email" maxlength="30" size="30" value="' . $row->email . '" /></p>
<p>Your comment:<br /><textarea name="comment" cols="60" rows="8">' . stripslashes($row->comment) . '</textarea></p>
<input type="submit" value="Save changes" />
</form>';
}
elseif($action == "save_changes") {
$id  	= $_GET['id'];
$name  = secureEntry($_POST['name']);
$email  = secureEntry($_POST['email']);
$comment	= strip_tags(mysql_escape_string(htmlspecialchars($_POST['comment'])));
$query = "UPDATE $sqlTable SET name = '$name',email = '$email',comment = '$comment' WHERE id = '$id' LIMIT 1";
if(mysql_query($query)) {
 echo "<h3>Changes saved!</h3>";
}
else {
 echo "<h3>Changes could not be saved:</h3>" . mysql_error();
}
}
mysql_close();
?>

</body>
</html>

Endret av janingar
Videoannonse
Annonse
Skrevet

feilmeldingen din betyr at output er sendt til klienten før du setter session_start();

 

session_start(); må være det helt første i dokumentet, men i din kode settes session_start(); inne i <body>, altså er ouput allerede sendt.

 

du må gjøre det sånn:

<?php
session_start();
?>
<html>
<head>
.........

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...