Jag har installerat PHP och Apache alldeles nyligen och skapat ett par sidor med en inloggningsfunktion med en Access-bas.
Dett fungerade jättebra på min dator, men när jag lade upp sidorna på mitt hotell (loopia.se) så får jag ett konstigt fel när jag vill logga ut:
CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:
...å sen står det inge mer.
Login sida: (ny_login.php)
<?php
session_start(); // Alltid överst på sidan
$dirren = realpath("..\..\."); //Här ändrar webForum till ...... Men denna sökväg stämmer!
$dirren = $dirren."\db\db.mdb";
$conn = new COM("ADODB.Connection") or die("Cannot start ADO"); // Databasanslutningen
$conn->Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=$dirren");
// Inloggning
if (isset($_POST['submit'])){
$sql = "SELECT id FROM sikker
WHERE user='{$_POST['user']}'
AND passw='{$_POST['passwd']}'";
$rs = $conn->Execute($sql); // Recordset
// Hittades inte användarnamn och lösenord
// skicka till formulär med felmeddelande
if ($rs->EOF){
$rs->Close();
$conn->Close();
$rs->Release();
$conn->Release();
$rs = null;
$conn = null;
header("Location: ny_login.php?badlogin=");
exit;
}
// Sätt sessionen med unikt index
$id_falt = $rs->Fields(0);
$_SESSION['sess_id'] = $id_falt->value;
$_SESSION['sess_user'] = $_POST['user'];
// Lägg in logindata
$ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
$tid = date("l dS of F Y H:i:s");
$sql_login = "INSERT INTO logins (ip, tidpunkt, anv) VALUES ('{$ip}','{$tid}','{$_POST['user']}')";
$conn->Execute($sql_login);
$rs->Close();
$conn->Close();
$rs->Release();
$conn->Release();
$rs = null;
$conn = null;
header("Location: welcome.php");
exit;
}
// Utloggning
if (isset($_GET['logout'])){
session_start();
session_unset();
session_destroy();
header("Location: ny_login.php");
exit;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<title>Index</title>
<link href="stil.css" rel="stylesheet" type="text/css">
</head>
<body>
<?php
// Om inte inloggad visa formulär, annars logga ut-länk
if (!isset($_SESSION['sess_user'])){
echo "<h3>Logga in</h3>\n";
// Visa felmeddelande vid felaktig inloggning
if (isset($_GET['badlogin'])){
echo "Fel användarnamn eller lösenord!<br>\n";
echo "Försök igen!\n";
}
?>
<form action="ny_login.php" method="post">
Användarnamn:<br>
<input type="text" name="user"><br>
Lösenord:<br>
<input type="password" name="passwd"><br><br>
<input type="submit" name="submit" value="Logga in">
</form>
<?php
} else {
echo "<a href=\"ny_login.php?logout=\">Logga ut</a>\n";
}
//$rs->Close();
$conn->Close();
//$rs->Release();
$conn->Release();
//$rs = null;
$conn = null;
?>
</body>
</html>
Hit kommer man när man loggar in: (welcome.php)
<?php
session_start(); // Alltid överst på sidan
$dirren = realpath("..\..\.");
$dirren = $dirren."\db\db.mdb";
// Kolla om inloggad = sessionen satt
if (!isset($_SESSION['sess_user'])){
header("Location: ny_login.php");
exit;
}
$conn = new COM("ADODB.Connection") or die("Cannot start ADO"); // Databasanslutningen
$conn->Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=$dirren");
$sql = "SELECT * FROM turne";
$rs = $conn->Execute($sql); // Recordset
$dag = $rs->Fields("id");
$datum = $rs->Fields("datum");
$plats = $rs->Fields("plats");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<title>Välkommen</title>
<link href="stil.css" rel="stylesheet" type="text/css">
</head>
<body>
<font size="3"><b>
Välkommen <i><?=$_SESSION['sess_user'] ?></i> -
<a href="ny_login.php?logout=">Logga ut</a>
</b></font>
<p>
På denna sida ...
<hr size="4"><br><br>
<table border="0" cellpadding="5" cellspacing="5">
<tr>
<td bgcolor="white">
<?php
$rad = 1;
while (!$rs->EOF)
{
echo "<li><b><font size='2'><a href='update.php?dag=".$dag->value."'>Dag: ".$dag->value."</a></font></b> || ".$datum->value." || ".$plats->value;
?>
<br><br> - <a href="bilder.php?dag=<?= $dag->value ?>">Ladda upp bilder</a><br><br><br>
<?
$rad++;
$rs->MoveNext();
if ($rad == 9){
echo "</td><td bgcolor='white'>";
}
}
$rs->Close();
$conn->Close();
$rs->Release();
$conn->Release();
$rs = null;
$conn = null;
?>
</td>
</tr>
</table>
</p>
<font size="3"><b>
<a href="ny_login.php?logout=">Logga ut</a>
</b></font>
</body>
</html>
Hotellet kör IIS server å PHP 4.3.1
Jag kör Apache å PHP 4.3.2
Databasen är Access. (mySQL kostar extra)