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



2 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato

<?
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
[/qoute]
Der er sendt output i filen "c:\\apache\\htdocs\\test2\\users.php" og det må der ikke blive sendt før end at "start_session()" er skrevet hvis man vil bruge sessions.

Altså skal start_session() smækkes ind før al output (tekst der kan ses på skærmen)

P.S hvis din kode ser sådan her ud (linie nr er lige med) så funker det heller ikke:

<pre>
1.
2. <?php
3. session_start();
4. ?>
</pre>

Grunden til det er at linie "1" sender output altså skulle "<?php" være på linie 1.

Håber at det var et grundigt svar nok.
Hvad betyder de fejl? Og hvordan kan de rettes?
Håber virkelig der er en der kan hjælpe !!
Heidi Kristensen

Mvh
Kaare




$uid = $HTTP_SESSION_VARS["uid"];


hmm... På tredje linje skriver du at $uid skal være det samme som HTTP_SESSION_VARS["uid"]. Jeg tror dette er årsagen til problemet. Prøv istedet at skrive
<pre>
if(isset($HTTP_SESSION_VARS["uid"])) {
$uid = $HTTP_SESSION_VARS["uid"];
}
</pre>
Dette gør, at det kun er hvis $HTTP_SESSION_VARS["uid"] eksistere, at $uid får værdien af det.

Hvis det ikke hjælper, kan du så ikke skrive hvilken version af php du bruger.[Redigeret d. 30/07-02 09:42:31 af Jesper Mikkelsen]



t