Hallo,
ich habe mal wieder ein Problem bei PHP. Und zwar wollte ich die Session-IDs nicht als Dateien auf dem Server ablegen lassen, sondern diese in der DB gespeichert haben. Ich habs dann so gemacht, wie es in einem Buch beschrieben ist (nagut fast, aber das sind Änderungen, worans eigentlich nicht liegen dürfte).
Und zwar meckert er z.B. mysql_num_rows und so an (Rückgabe der Seite seht ihr hier).
Die Quelltexte dazu:
db_function.inc.php
PHP
<?php
function Connect(){
global $mysqlcon;
$connect = 0;
if (file_exists("./config.inc.php")) include("./config.inc.php");
elseif (file_exists("./../config.inc.php")) include("./../config.inc.php");
if ($mysqlcon = @mysql_connect($sqlhost,$sqluser,$sqlpassword)){
if ($db = @mysql_select_db($sqldb,$mysqlcon)){
$connect = 2;
}
}
return $connect;
}
function DisConnect(){
global $mysqlcon;
@mysql_close($mysqlcon);
}
function AddUser($user,$pw,$mail,$rights){
global $mysqlcon;
mysql_query("INSERT INTO cp_user (user, password, email, rights) VALUES ('".$user."','".$pw."','".$mail."','".$rights."')", $mysqlcon);
}
?>
Alles anzeigen
index.php
PHP
<?php
error_reporting(E_ALL);
require("./db_function.inc.php");
function ms_open($sesspath, $sessname){
global $mysqlcon;
$time = time();
$sid = session_id();
if (isset($_POST["user"]) && isset($_POST["pw"])){
$user = $_POST["user"];
$pw = $_POST["pw"];
$RS = mysql_query("SELECT * FROM cp_data WHERE user = '$user' && password = '$pw'", $mysqlcon);
if (mysql_num_rows($RS) == 0){
$RS = mysql_query("UPDATE cp_data SET (date = '$time', sid = '$sid') WHERE user = '$user' && password = '$pw'", $mysqlcon);
}
}else{
$maxtime = $time - 15*60;
$RS = mysql_query("SELECT * FROM cp_data WHERE sid = '$sid' && date > '$maxtime'", $mysqlcon);
if (mysql_num_rows($RS) == 0){
$RS = mysql_query("UPDATE cp_data SET date = '$time' WHERE sid = '$sid'", $mysqlcon);
}
}
}
function ms_read($sid){
global $mysqlcon;
$RS = mysql_query("SELECT * FROM cp_data WHERE sid = '$sid'", $mysqlcon);
$arrRS = mysql_fetch_assoc($RS);
if (is_array($arrRS)){
session_decode($arrRS["variables"]);
}
}
function ms_write($sid, $varis){
global $mysqlcon;
$RS = mysql_query("UPDATE cp_data SET variables = '$varis' WHERE sid = '$sid'", $mysqlcon);
}
function ms_destroy($sid){
global $mysqlcon;
$RS = mysql_query("UPDATE cp_data SET date = '0' WHERE sid = '$sid'", $mysqlcon);
}
function ms_gc($sesslt){
}
function ms_close(){
}
if (Connect()==2){
if (file_exists("./install/")){
$error = "<h3>Installationsdateien gefunden!</h3>
\n".
"\t\t\tAuf dem Webserver wurden die Installationsdateien noch gefunden.
\n".
"\t\t\tBitte löschen Sie den Ordner 'install'.\n";
include("./error.php");
}else{
session_module_name("user");
session_set_save_handler('ms_open', 'ms_close',
'ms_read', 'ms_write',
'ms_destroy', 'ms_gc');
session_name('SESSION');
session_start();
echo(session_id());
include("./lib/login.php");
}
DisConnect();
}
else{
$error = "<h3>Verbindung fehlgeschlagen!</h3>
\n".
"\t\t\tDie Verbindung zur ChemPro-Datenbank ist fehlgeschlagen.
\n".
"\t\t\tBitte informieren Sie den Admin der Datenbank über das Problem.\n";
include("./error.php");
}
?>
Alles anzeigen
Sieht einer von euch den Fehler?