Permalänk
Medlem

Lite hjälp med PHP koden här.

När jag skriver in passwordet för loginen så får jag följande fel, jag är en nybörjare och kan inte se direkt vad som är fel.

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /usr/home/****.com/htdocs/otherside/Otherside/writer/login.php:5) in /usr/home/****.com/htdocs/otherside/Otherside/writer/login.php on line 21

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /usr/home/****.com/htdocs/otherside/Otherside/writer/login.php:5) in /usr/home/****.com/htdocs/otherside/Otherside/writer/login.php on line 21

Warning: Cannot modify header information - headers already sent by (output started at /usr/home/****.com/htdocs/otherside/Otherside/writer/login.php:5) in /usr/home/****.com/htdocs/otherside/Otherside/writer/login.php on line 31

Istället för sista felmeddelandet så får jag ibland:

Warning: Cannot modify header information - headers already sent by (output started at /usr/home/****.com/htdocs/otherside/Otherside/writer/login.php:5) in /usr/home/****.com/htdocs/otherside/Otherside/writer/login.php on line 28

*På rad 28 i login.php står: header("Location: admin_sidan.php");

i login.php på rad 21 står följande:
session_start();

(på rad 22 följer)
$sql = "SELECT password FROM admin WHERE password=PASSWORD('".$_POST['password']."')";

osv...

På rad 31 i sin tur står följande:
header("Location: error_login.php");

Kan också informera att jag har chmoddat mina kataloger och filer med full åtkomst samt skrivit in rätt password i databasen ;o

Någon som är torr bakom öronen och kan ge ett svar på varför jag får ett sådant här felmeddelande?

Jag själv, nybörjare som jag är tror det är något fel i samband med att han inte kan kasta mig till dne sidan scriptet ska göra.. men varför skulle den inte kunna det när den har fulla rättigheter?

Permalänk
Medlem

Jag är också rätt grön, men det verkar som att du har problem med din(a) databas(er).

Permalänk
Medlem

session_start måste köras innan någon annan output.
Alltså högst upp i filen ungefär.

Ett alternativ är att köra ob_start och sånt som cache:ar outputen innan den skickas men kör bara med det om du verkligen måste.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Locke
session_start måste köras innan någon annan output.
Alltså högst upp i filen ungefär.

Ett alternativ är att köra ob_start och sånt som cache:ar outputen innan den skickas men kör bara med det om du verkligen måste.

Ska bara påpeka att scriptet fungerar på samma webhotell men en annan sida så att säga
(Jag har 2 sidor, varav på den ena funkar det, och den andra inte) ;D

Permalänk
Medlem

På rad 5 i login.php så skrivs något ut till webbläsaren, innan session_start() kallas. Ta bort det, eller ja, lägg det efter session_start(). Eller helst, lägg session_start() så långt upp i filen det bara går. Posta gärna filen.

EDIT: fel av mig

Inte alls rad 5, jag var för snabb, rad 28 ska det vara, men det kan lika gärna vara raden innan vad det beträffar fel-rapporteringen i vissa versioner av php. Som sagt, posta gärna filen mellan [code] och [/code]-taggar.

Visa signatur

Brass knuckles and a 2x4

Permalänk

Som många har sagt innan, måste du ha session_start(); längst upp i filen.

Sen kan du inte skicka en ny header efter att du redan har skickat en (ang. felt på rad 28).
Om du nu måste skicka vidare den inloggade personen så blir du nog tvungen att använda javascript eller skriva en php funktion för det.

Och som jonasc skrev, posta gärna koden, då blir det lättare för oss att hjälpa dig.

Visa signatur

Permalänk
Medlem

<?php ob_start(); //_____________________________// // Script gjord utav : lidas // // Script: Nyhets Script 1.0 // // Editera på ni :D // //_____________________________// include ('settings.php'); // includerar settings.php ?><font bgcolor="#1C2834"> <form action="login.php?login=ja" method="post"> <p><font size="-2" face="Georgia, Times New Roman, Times, serif">Writer password </font> <input type="password" name="password"> <input type="submit" value="login"> <? if (isset($_GET['login'])=="ja") { session_start(); $sql = "SELECT password FROM admin WHERE password=PASSWORD('".$_POST['password']."')"; // Tittar i tabellen efter Andvändarnamnet och Lösenordet du skrev in. $result = @mysql_query($sql) or exit(mysql_error()); $num = mysql_numrows($result); if ($num != 0) { $_SESSION['user'] = $_POST['password']; // Gav du rätt Användarnamn och Lösenord får du en "session". header("Location: admin_sidan.php"); // Du skickas iväg till angiven sida, i vårat fall: efter.php exit; } else { header("Location: error_login.php"); // Skrev du fel så skickas du till denna sida exit; } } ob_end_flush(); ?>

Permalänk

Ändrade lite i din kod:
(Tror att det borde funka, även om jag tycker din kod vid mysql delen är lite annorlunda för att vara ett inloggningsscript):
Och om det bara finns en användare så finns det mycket lättare sätt.

<?php session_start(); // Du måste starta sessionen innan du skriver ut något annat include ('settings.php'); // includerar settings.php ?> <doctype osv.> <html> <head> </head> <body> <font bgcolor="#1C2834"> <form action="login.php?login=ja" method="post"> <p><font size="-2" face="Georgia, Times New Roman, Times, serif">Writer password </font> <input type="password" name="password"> <input type="submit" name="login" value="login"> // denna måste ju ha ett namn... <?php if (isset($_POST['login'])) { // ...annars funkar ju inte denna samt att du inte ska använda "$_GET" du använder ju post ;) samt att varför kolla så den är satt och är lika med 'ja' det är ju bara onödigt, antingen eller... $sql = "SELECT password FROM admin WHERE password=PASSWORD('".$_POST['password']."')"; // Tittar i tabellen efter Andvändarnamnet och Lösenordet du skrev in. $result = @mysql_query($sql) or exit(mysql_error()); $num = mysql_numrows($result); if ($num != 0) { $_SESSION['user'] = $_POST['password']; // Gav du rätt Användarnamn och Lösenord får du en "session". <-- Varning! osäkert.. du borde köra sha1 eller md5 isället... // Får inte användas här, då en header redan har skickats! header // ("Location: admin_sidan.php"); // Du skickas iväg till angiven sida, i vårat fall: efter.php // Så jag använder denna lilla kodbit (javascript): echo "<script type=\"text/javascript\">\n <!--\n setTimeout('window.location=\"admin_sidan.php\"',1);\n -->\n </script>\n<a href=\"admin_sidan.php\">Länk vidare om användaren stängt av javascript</a>"; exit; } else { // Får inte användas här, då en header redan har skickats! header("Location: error_login.php"); // Skrev du fel så skickas du till denna sida // Så jag använder denna lilla kodbit (javascript): echo "<script type=\"text/javascript\">\n <!--\n setTimeout('window.location=\"error_login.php\"',1);\n -->\n </script>\n<a href=\"error_login.php\">Länk vidare om användaren stängt av javascript</a>"; exit; } } ?> </body> </html>

Edit: oj oj oj, glöde ta bort fyra stycken "

Visa signatur