janingar Skrevet 27. april 2006 Skrevet 27. april 2006 (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 27. april 2006 av janingar
hockey500 Skrevet 27. april 2006 Skrevet 27. april 2006 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> .........
Ernie Skrevet 27. april 2006 Skrevet 27. april 2006 Eventuelt bruke output-buffering (ob_start og ob_end_flush)
janingar Skrevet 27. april 2006 Forfatter Skrevet 27. april 2006 det fungerte ja Endelig har jeg min egen gjestebok som fungerer perfekt. Tusen takk for hjelpen
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå