Hejsan!
Har ett litet problem med sessions.
Detta felmeddelande får jag upp när jag försöker köra koden...har läst ganska mycket på nätet om denna typ av felmeddelande, men inte fått någon ordning på det. Det jag har förstått är att man ska ändra i php.ini filen till korrekt sökväg, etc. Och det har jag gjort, men jag får ändå upp detta felmeddelande...! Någon som har något tips?
Tacksam för snabbt svar. =)
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at c:\inetpub\wwwroot\php\login\auth.php:2) in c:\inetpub\wwwroot\php\login\auth.php on line 5
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at c:\inetpub\wwwroot\php\login\auth.php:2) in c:\inetpub\wwwroot\php\login\auth.php on line 5
Warning: Cannot modify header information - headers already sent by (output started at c:\inetpub\wwwroot\php\login\auth.php:2) in c:\inetpub\wwwroot\php\login\auth.php on line 30
Före session_start() får du inte skicka något till webbläsaren.
Alltså ingen HTML-kod, ingen echo eller print. Även tomrader och mellanslag utanför PHP-taggarna skickar iväg något till webbläsaren.
Om du inkluderar en fil före session_start() så måste du vara väldigt noggrann med att inte ha några tomtecken efter den avslutande PHP-taggen (och naturligtvis inte heller före den inledande).
Därför är det oftast bäst att lägga session_start() allra överst på sidan.
aha. nu blev det lite mindre felmeddelanden iaf. =)
när jag skriver in rätt anv.namn och rätt lösenord får jag nu detta meddelande:
Notice: Undefined index: nickname in c:\inetpub\wwwroot\php\login\auth.php on line 11
Warning: Cannot modify header information - headers already sent by (output started at c:\inetpub\wwwroot\php\login\auth.php:11) in c:\inetpub\wwwroot\php\login\auth.php on line 12
scriptet som jag använder har jag tagit från phpsidan.nu så det borde funka som det är tycker man...men jag får iaf det där felmeddelandet när jag skriver in rätt namn och pwd... =(
På rad 11 så försöker du göra något med en array-variabel. Denna variabel finns inte. Är det en $_POST eller $_SESSION eller något annat?
Om det är en $_POST-variabel, har du motsvarande fält i ditt formulär?
Ditt header-felmeddelande är ett följdfel av utskriften av notisen. För header() gäller samma sak som för session_start() när det gäller att inte skicka något till webbläsaren.
<?
session_start();
include("data.php"); // Inkluderar data.php som innehåller databasinställningarna
$db_connect = mysql_connect($Host,$User, $Pass);
mysql_select_db($Db, $db_connect);
$sql = "SELECT * FROM $Table WHERE username='".$_POST['username']."' AND Password='".$_POST['password']."'"; // Tittar i Tabellen efter Andvändarnamnet och Lösenordet du skrev in.
$result = @mysql_query($sql,$db_connect) or die("Failed Result");
$num = mysql_numrows($result);
if ($num != 0)
{
$_SESSION['user'] = $_POST['nickname']; // Gav du rätt Användarnamn och Lösenord får du en "session".
header("Location: efter.php"); // Du skickas iväg till angiven sida, i vårat fall: efter.php
exit;
}else {
header("Location: login.php"); // Skrev du fel så skickas du till denna sida
exit;
}
?>
Har du något fält med namn 'nickname' i ditt formulär ?
Hur ser ditt formulär ut?
Detta ser ut som en inloggning, och då skriver man oftast bara användarnamn och lösenord.
Om det är en inloggning så kanske det skulle vara så här istället:
<?
session_start();
include("data.php"); // Inkluderar data.php som innehåller databasinställningarna
$db_connect = mysql_connect($Host,$User, $Pass);
mysql_select_db($Db, $db_connect);
$sql = "SELECT * FROM $Table WHERE username='".$_POST['username']."'
AND Password='".$_POST['password']."'"; // Tittar i Tabellen efter Andvändarnamnet och Lösenordet du skrev in.
$result = @mysql_query($sql,$db_connect) or die("Failed Result");
$num = mysql_num_rows($result);
if ($num != 0)
{
$_SESSION['user'] = $_POST['username']; // Gav du rätt Användarnamn och Lösenord får du en "session".
header("Location: efter.php"); // Du skickas iväg till angiven sida, i vårat fall: efter.php
exit;
}else {
header("Location: login.php"); // Skrev du fel så skickas du till denna sida
exit;
}
?>
alltså jag har ändrat till username för så borde det ju vara eftersom att det är en _POST...men då kommer jag tillbaka till första sidan även om jag skriver in rätt lösenord etc... ?! sen det där header-felet lyckas jag inte få bort...har kollat efter mellanslag etc....
jag är helt ny på det här med sessioner...hur kontrollerar man om sessionen hänger kvar när man surfar på flera sidor?
och varför måste den hänga kvar?
Det är det som är hela idén med sessioner. Du sparar ett värde som hänger med dig personligt över flera sidor.
Tänk dig om du var tvungen att logga in på webForum varje gång du skulle läsa en tråd eller skriva ett svar.
Är din cookie satt så kan du gå till en helt annan sida och sedan tillbaka, och du är fortfarande inloggad.