Hallo,
und danke mal an alle! :-)
Ich versuche jetzt mal den kompletten Code hier zu Posten oder besser den speziellen Teil um den es sich hier dreht.
Ich vermute das es was mit dem Befehl "session_set_save_handler" zu tun hat.
Ok. der Code setzt sich aus 4 Dateien zusammen.
Prinzipiell geht es um das Thema Login
Logge dich ein und deine Session wird gespeichert
Start mit index.php was die Scripte
checkLogin.php und class.Login.php aufruft/benutzt
Schickt der User das Formuar ab, wird in der Funktion checkLoginData() geprüft, ob es sich um den richtig Benutzer handelt.
-> Die Funktion ses_write würde ich gerne in der Klasse "classLogin.php" einbauen. Momentan ist diese im Script "checkLogin.php".
Jetzt der Code
Index.php
<?php
require_once "../../common.php";
require_once "classes/class.Login.php";
System\HTML::printHead();
System\HTML::printBody();
System\HTML::printHeadline("Login-Test");
$LOGIN = new Scripts\Login();
echo "<br />";
echo "Eine richtige Kombination ist folgende:<br />";
echo "Login: <b>lkwpeter</b><br />";
echo "Passwort: <b>2FhJ1#d</b>";
echo "<br /><br />";
$LOGIN->printLoginForm("checkLogin.php");
System\HTML::printFoot();
?>
CheckLogin.php
<?php
require_once "../../common.php";
require_once "classes/class.Login.php";
require_once "../session/mySession.php";
$LOGIN = new Scripts\Login();
$loginOK = $LOGIN->checkLoginData();
System\HTML::printHead();
System\HTML::printBody();
System\HTML::printHeadline("Login-Test");
if($loginOK==true){
echo "<span style='color:green;'>\n";
echo "Sie sind als";
echo " <b><u>".$_POST['login']."</u></b> ";
echo "authentifiziert worden.</span>\n";
echo "<br>";
ses_write('1234', 'data') ;
}
else
{
echo "<span style='color:red;'>";
echo "Falsche Kombination angegeben.</span><br />\n";
echo "<a href='index.php'>Zum Login-Formular</a>";
}
System\HTML::printFoot();
?>
Class Login.php
<?php
namespace Scripts;
class Login
{
public function printLoginForm($checkScript = null){
?>
<fieldset style="padding:2px;width:180px;border:1px solid steelblue;">
<legend>Login</legend>
<form id="noSpaces" action="<?php echo $checkScript ?>" method="post">
Login:<br />
<input type="text" class="standardField" name="login" size="30" maxLength="100"><br />
Passwort:<br />
<input type="password" class="standardField" name="password" size="30" maxLength="100"><br />
<input type="submit" onFocus="blur();" class="standardSubmit" name="doLogin" value="Anmelden">
<input type="reset" onFocus="blur();" class="standardSubmit" name="reset" value="Löschen">
</form>
</fieldset>
<?php
}
public function checkLoginData(){
$firstChar = substr($_POST['login'],0,1);
$sql = "SELECT login,password FROM user WHERE login LIKE '".$firstChar."%'";
$result = $GLOBALS['DB']->query($sql);
$login = trim(substr($_POST['login'],0,100));
$password = trim(substr($_POST['password'],0,100));
foreach($result as $combi){
if(($login == $combi['login']) && (md5($password) == $combi['password'])){
echo '<br>' ; echo 'Session ID in DB schreiben - Funktion ses_write<br> <br>' ;
', 'data') ;
return true;
}
}
mysession.php
<?php
require_once "../../common.php";
ini_set('session.gc_maxlifetime', 3600);
ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 100);
function ses_open($path, $name) {
return TRUE;
}
function ses_close() {
return TRUE;
}
function ses_read($ses_id) {
$sql = "SELECT ses_value FROM Sessions
WHERE ses_id = $ses_id";
$result = @mysql_query($sql);
if (!$result)
return '';
if (!mysql_num_rows($result))
return '';
$row = mysql_fetch_assoc($result);
return $row["ses_value"];
}
function ses_write($ses_id, $data) {
$sql = "Replace INTO Sessions (ses_id, ses_time, ses_value) VALUES ('1235000', '111234', '123')";
echo '--------------- <br> print global außerhalb if: '; echo '<br>' ;
if (isset($GLOBALS['DB'])) {
echo '--------------- <br>Variable DB neu ist gesetzt! <br>' ;
echo 'print global innerhalb if: '; echo '<br>' ;
}
$result = $GLOBALS['DB']->query($sql);
return $result ;
}
function ses_destroy($ses_id) {
$sql = "DELETE FROM Sessions WHERE ses_id = $ses_id";
return (bool)@mysql_query($sql);
}
function ses_gc($life) {
$ses_life = time()-$life;
$sql = "DELETE FROM Sessions
WHERE ses_time < ".$ses_life." ";
return (bool)@mysql_query($sql);
}
session_set_save_handler ('ses_open',
'ses_close',
'ses_read',
'ses_write',
'ses_destroy',
'ses_gc');
echo '<br> Session gestartet <br>' ;
session_start();
?>