webForumDet fria alternativet

Logga ut ger CGI Error

1 svar · 207 visningar · startad av Insider

InsiderMedlem sedan jan. 2000978 inlägg
#1

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&auml;lkommen</title>
<link href="stil.css" rel="stylesheet" type="text/css">
</head>
<body>
<font size="3"><b>
V&auml;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>&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;<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)

InsiderMedlem sedan jan. 2000978 inlägg
#2

Jag har märkt att det fungerar rent tekniskt att logga ut, förutom att man får det konstiga felmeddelandet. För när man skriver in adressen till den skyddade sidan hamnar man vid inloggningsformuläret, precis som det är tänkt.
Det måste vara nåt enkelt fel........?

145 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)