Hallo!
Ich habe eine Webseite am lokalen Rechner programmiert und auch in dieser Umgebung mittels XAMPP (PHP5, MySQL5) getestet. Hat auch alles wunderbar funktioniert.
Nun stellte ich die Seite online und siehe da, ich bekomme nach dem einloggen ständig obenstehende Fehlermeldung.
Die PHP Version am Webserver ist 4.4.8.
Die Seite ist recht simpel: Navigationsmenü, welches Titel der einzelenen Seiten aus der Datenbank in Links umwandelt, und Content Bereich, der den Inhalt aus der Datenbank anzeigt.
Zudem kann man durch Einloggen die Seite administrieren (Seite hinzufügen, löschen, editieren...)
Hier mal der Code der Index.php:
Und noch die eingebundene functions.php teilweise:
Der Fehler liegt angeblich in dieser Zeile in der Funktion showMenu():
$sql = unserialize($_SESSION['sql']);
---> $sql->connect();
Ich habe leider keine Ahnung warum er hier meint, kein Objekt vorzufinden, und auf meinem lokalen Rechner allerdings schon...
Komisch ist auch, dass die Funktion showMenu() uneingeloggt zu funktionieren scheint, nur nachdem man sich einloggt, kommt diese Fehlermeldung.
Vielleicht hat jemand von euch ja Erfahrungen mit dieser Problematik.
Vielen Dank im Voraus!
Ich habe eine Webseite am lokalen Rechner programmiert und auch in dieser Umgebung mittels XAMPP (PHP5, MySQL5) getestet. Hat auch alles wunderbar funktioniert.
Nun stellte ich die Seite online und siehe da, ich bekomme nach dem einloggen ständig obenstehende Fehlermeldung.
Die PHP Version am Webserver ist 4.4.8.
Die Seite ist recht simpel: Navigationsmenü, welches Titel der einzelenen Seiten aus der Datenbank in Links umwandelt, und Content Bereich, der den Inhalt aus der Datenbank anzeigt.
Zudem kann man durch Einloggen die Seite administrieren (Seite hinzufügen, löschen, editieren...)
Hier mal der Code der Index.php:
PHP-Code:
<?php
session_start();
// SQLManager Class and basic functions like showContent, showMenu ...
require("functions.php");
// if you log out, end the actual session
if($_GET['action'] && $_GET['action'] == "logout") {
session_destroy();
}
// If there is no SQLManager object set in the session, create one
// The SQLManager provides basic SQL functions and can be constructed with current login information,
// that can be used throughout the development process after serializing and saving in a session.
if(!isset($_SESSION['sql'])) {
$sql = new SQLManager("xxx", "localhost", "xxx", "xxx");
$_SESSION['sql'] = serialize($sql);
}
// Login-code, checks the login-information
if($_GET['action'] && $_GET['action'] == "login" && $_POST['login'] && $_POST['pass']) {
$sql = unserialize($_SESSION['sql']);
$sql->connect();
$query = "SELECT * FROM users WHERE login = '".mysql_real_escape_string($_POST['login'])."'";
$row = $sql->getResult($query);
$login = $row->login;
$pass = $row->pass;
$name = $row->name;
$surname = $row->surname;
if(md5($_POST['pass']) == $pass) {
$_SESSION['rights'] = 1; // Grant admin-rights
$_SESSION['name'] = $name;
$_SESSION['surname'] = $surname;
} else {
echo "Login Incorrect!";
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<?php
// Reloads Page after logout to provide an updated view after logout process
if($_GET['action'] && $_GET['action'] == logout)
echo "<META HTTP-EQUIV=REFRESH CONTENT=\"0; URL=index.php\" />";
?>
<title>Untitled Document</title>
<link rel="stylesheet" type="text/css" href="layouts/layoutMain.css" />
</head>
<body>
<div id="main">
<!-- *** NAVIGATION MENU *** -->
<ul id="navbar">
<li><a href="?action=img">Bilder</a></li>
<?php showMenu(); ?>
<?php
if($_SESSION['rights'] && $_SESSION['rights'] > 0) {
echo "<li><a href=\"?action=edit&id=".$_GET['id']."\">Seite editieren</a>";
?>
<li><a href="?action=new">Neue Seite erstellen</a></li>
<?php
echo "<li><a onclick=\"javascript:return confirm('Wirklich löschen?')\"
href=\"?action=delete&id=".$_GET['id']."\">Seite löschen</a>";
} ?>
</ul>
<!-- *** LOGIN AREA *** -->
<div id="login">
<?php if(empty($_SESSION['rights']) || $_SESSION['rights'] < 1) { ?>
<!-- Login Form -->
<form method="post" action="index.php?action=login">
<table border="0">
<tr>
<td>Login:</td>
<td><input type="text" name="login" size="17" maxlength="25" /></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="pass" size="17" maxlength="25" /></td>
</tr>
<tr>
<td colspan="2" style="text-align:right;" ><input type="submit" name="sent" value="Login" /></td>
</tr>
</table>
</form>
<?php } else {
echo "Willkommen, ".$_SESSION['name']." ".$_SESSION['surname']."<br />";
echo "<a href=\"?action=logout\">Logout</a>";
}
?>
</div>
<img id="banner" src="images/banner.jpg" />
<!-- *** MAIN CONTENT *** -->
<div id="content">
<?php
if($_GET['action'] && $_GET['action'] == "edit" &&
$_SESSION['rights'] && $_SESSION['rights'] > 0) {
include("edit.php");
} elseif($_GET['action'] && $_GET['action'] == "new" &&
$_SESSION['rights'] && $_SESSION['rights'] > 0) {
include("new.php");
} elseif($_GET['action'] && $_GET['action'] == "delete" &&
$_SESSION['rights'] && $_SESSION['rights'] > 0) {
include("delete.php");
} elseif($_GET['action'] && $_GET['action'] == "img") {
include("images.php");
} else
showContent();
?>
</div>
</div>
</body>
</html>
PHP-Code:
class SQLManager
{
var $host;
var $user;
var $pass;
var $database;
var $dp;
var $rp;
var $query = "";
function SQLManager($database, $host = "localhost", $user = "root", $pass = "")
{
$this->host = $host;
$this->pass = $pass;
$this->user = $user;
$this->database = $database;
}
function connect()
{
$this->dp = mysql_connect($this->host, $this->user, $this->pass);
if(!$this->dp) die("Es konnte keine Verbindung zur Datenbank hergestellt werden!");
mysql_select_db($this->database, $this->dp);
}
function getResult($query)
{
if($this->query != $query) {
$this->rp = mysql_query($query, $this->dp);
$this->query = $query;
}
$row = mysql_fetch_object($this->rp);
return $row;
}
function execute($query)
{
$this->rp = mysql_query($query, $this->dp);
$this->query = $query;
return mysql_affected_rows($this->dp);
}
function close()
{
mysql_close($this->dp);
}
function getDP()
{
return $this->dp;
}
}
function showMenu()
{
$sql = unserialize($_SESSION['sql']);
$sql->connect();
$query = "SELECT * FROM pages ORDER BY datum ASC";
while($row = $sql->getResult($query)) {
echo "<li><a href=\"?id=".$row->pid."\">".$row->title."</a></li>";
}
$sql->close();
}
$sql = unserialize($_SESSION['sql']);
---> $sql->connect();
Ich habe leider keine Ahnung warum er hier meint, kein Objekt vorzufinden, und auf meinem lokalen Rechner allerdings schon...
Komisch ist auch, dass die Funktion showMenu() uneingeloggt zu funktionieren scheint, nur nachdem man sich einloggt, kommt diese Fehlermeldung.
Vielleicht hat jemand von euch ja Erfahrungen mit dieser Problematik.
Vielen Dank im Voraus!
Kommentar