Fejl i php opsætningen?

Tags:    php

Jeg har VIRKELIG brug for noget hjælp her...
Jeg er ret ny indenfor php... og fik sat Apache serveren + MySQL og PHP op for et par dage siden....

En af mine venner og jeg udarbejdede sammen følgende kode:

<?
Include("sql.inc");
session_start();
$uid = $HTTP_SESSION_VARS["uid"];


if ($mode == "dologin" && $password && $username) {
$query = mysql_query("SELECT id, password, accesslevel, active FROM users WHERE username='$username'");
$r = mysql_fetch_array($query);
if ($r["password"] == $password) {

session_register("uid");
$uid = $r["id"];
$HTTP_SESSION_VARS["access"] = $access;
$HTTP_SESSION_VARS["uid"] = $uid;

Header("Location: users.php?mode=logged");
}
}
?>
<html>
<body bgcolor="#FFFFFF" text="#000000">
<?
if ($mode == "login") {
echo "<form name=\\"form1\\" method=\\"post\\" action=\\"users.php?mode=dologin\\">
<p>user
<input type=\\"text\\" name=\\"username\\">
</p>
<p>password
<input type=\\"password\\" name=\\"password\\">
</p>
<p>
<input type=\\"submit\\" name=\\"Submit\\" value=\\"Submit\\">
</p>
</form>";
} else if ($mode == "logged" && $uid) {
echo "<center>Du er nu logget ind</center>";
}
?>

</body>
</html>

Når jeg så opretter forbindelse til Apache serveren, går ind på siden i min browser kommer følgende fejl for oven:

Warning: Cannot send session cookie - headers already sent by (output started at c:\\apache\\htdocs\\test2\\users.php:1) in c:\\apache\\htdocs\\test2\\users.php on line 3

Warning: Cannot send session cache limiter - headers already sent (output started at c:\\apache\\htdocs\\test2\\users.php:1) in c:\\apache\\htdocs\\test2\\users.php on line 3


Hvad betyder de fejl? Og hvordan kan de rettes?
Håber virkelig der er en der kan hjælpe !!
Heidi Kristensen



3 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
>Når jeg så opretter forbindelse til Apache serveren, går ind på siden i min browser kommer følgende fejl for oven:

>Warning: Cannot send session cookie - headers already sent by (output started at c:\\apache\\htdocs\\test2\\users.php:1) in >c:\\apache\\htdocs\\test2\\users.php on line 3

"Headers kan kun sendes FØR enhver HTML output, og det inkluderer enhver 'mellemrum' og 'tab' o.lign. i toppen af filen. Så for eksempel hvis der er en blank linie eller et enkelt mellemrums-tegn før scriptets opem tag (<?) , så har der været outputtet HTML og et kald til header() eller en coockie reporterer denne fejl." ( fra Hugh Williams et al. 'Web Database Applications').

Det ser ud til at du kunne have lavet denne fejl.
mvh Gunner






Jeg gad nok vide hvad der er i sql.inc. Noget output til browseren eller kun mysql_connect og mysql_select_db ?

Er det det første skal du nok overveje at fjerne det... - Eller leve med fejlmeddelelserne og det faktum at scriptet ikke virker efter hensigten... =)

--blah!

Jeg har VIRKELIG brug for noget hjælp her...
Jeg er ret ny indenfor php... og fik sat Apache serveren + MySQL og PHP op for et par dage siden....

En af mine venner og jeg udarbejdede sammen følgende kode:

<?
Include("sql.inc");
session_start();
$uid = $HTTP_SESSION_VARS["uid"];


if ($mode == "dologin" && $password && $username) {
$query = mysql_query("SELECT id, password, accesslevel, active FROM users WHERE username='$username'");
$r = mysql_fetch_array($query);
if ($r["password"] == $password) {

session_register("uid");
$uid = $r["id"];
$HTTP_SESSION_VARS["access"] = $access;
$HTTP_SESSION_VARS["uid"] = $uid;

Header("Location: users.php?mode=logged");
}
}
?>
<html>
<body bgcolor="#FFFFFF" text="#000000">
<?
if ($mode == "login") {
echo "<form name=\\"form1\\" method=\\"post\\" action=\\"users.php?mode=dologin\\">
<p>user
<input type=\\"text\\" name=\\"username\\">
</p>
<p>password
<input type=\\"password\\" name=\\"password\\">
</p>
<p>
<input type=\\"submit\\" name=\\"Submit\\" value=\\"Submit\\">
</p>
</form>";
} else if ($mode == "logged" && $uid) {
echo "<center>Du er nu logget ind</center>";
}
?>

</body>
</html>

Når jeg så opretter forbindelse til Apache serveren, går ind på siden i min browser kommer følgende fejl for oven:

Warning: Cannot send session cookie - headers already sent by (output started at c:\\apache\\htdocs\\test2\\users.php:1) in c:\\apache\\htdocs\\test2\\users.php on line 3

Warning: Cannot send session cache limiter - headers already sent (output started at c:\\apache\\htdocs\\test2\\users.php:1) in c:\\apache\\htdocs\\test2\\users.php on line 3


Hvad betyder de fejl? Og hvordan kan de rettes?
Håber virkelig der er en der kan hjælpe !!
Heidi Kristensen





Når jeg så opretter forbindelse til Apache serveren, går ind på siden i min browser kommer følgende fejl for oven:

Warning: Cannot send session cookie - headers already sent by (output started at c:\\apache\\htdocs\\test2\\users.php:1) in c:\\apache\\htdocs\\test2\\users.php on line 3

Warning: Cannot send session cache limiter - headers already sent (output started at c:\\apache\\htdocs\\test2\\users.php:1) in c:\\apache\\htdocs\\test2\\users.php on line 3


Hvad betyder de fejl? Og hvordan kan de rettes?
Håber virkelig der er en der kan hjælpe !!
Heidi Kristensen


headers already sent by, output started at ...
betyder at du allerede har sendt TEKST til klienten (om det så er html kode eller ej er ligemeget), efter du har sendt tekst kan du ikke længere ændre i headers (da de er afsluttet).

dvs. Alt med headers skal være over din første echo/print linje



t