Einzelnen Beitrag anzeigen
  #6  
Alt 03.07.2009, 15:07:32
Benutzerbild von frerd
frerd frerd ist offline
Anfänger
 
Registriert seit: Jul 2009
Alter: 46
Beiträge: 5
AW: Booleanwerte in Sessionvariablen

Hi Woitaschik!

Habe deine Rat befolgt. Die Ausgabe lautet wie erwartet 1. Habe dann noch die Session-Variable an $a übergeben und die Abfrage if(!$a) ausgeführt mit der Ausgabe 'FALSE' bei falsch und 'TRUE' bei wahr, Ausgabe 'TRUE'.

Die Variable wird also korrekt übergeben.

Hier mein Login-Skript:

PHP-Code:
<?php
         $logintime
=time();

         
//Session-ID erzeugen (rand()<-Zufallszahl, uniqid()<-ID erzeugen, md5()<-ID verschlüsseln

         
$token1=md5(uniqid(rand(),true));
         
$token2=md5(uniqid(rand(),true));

         
$token3=md5(uniqid(rand(),true));
         
$token4=md5(uniqid(rand(),true));

         
$zufall1=$token1.'-'.$token2;
         
$zufall1=md5($zufall1);

         
$zufall2=$token3.'-'.$token4;
         
$zufall2=md5($zufall2);

         
$sessiid=md5($zufall2.$zufall1);        //eigentliche Session-ID erzeugen

         
session_id($sessiid);                   //Session-ID setzen
         
session_start();                        //Session mit Session-ID starten

         // diverse Session-Variablen setzen und belegen

         
$_SESSION['zeit']=$logintime;           //Startzeit in Session-Variable "zeit" speichern
         
$_SESSION['eingelogt']=false;         //Session-Variable "eingelogt" auf false setzen
         
$_SESSION['s_id']=session_id();         //Session-Variable "s_id" mit der Session-ID belegen
         
$s_name=session_name();
         
$s_id=session_id();

         
$benutzer=$HTTP_POST_VARS['benutzername'];      //Benutzername in Variable schreiben
         
$pass=$HTTP_POST_VARS['passwort'];              //Passwort in Variable schreiben
         
$status=0;                                      //Berechtigung auf falsch setzen
         
$hostname=$_SERVER['HTTP_HOST'];                //Hostname ermitteln
         
$pfad=dirname($_SERVER['PHP_SELF']);            //Hostpfand ermitteln
         
$userdatei='user.csv';
         
$bol=file_exists($userdatei);                   //Existiert die Datei 'user.csv'?
         
if($bol) {
                  
$datei=fopen($userdatei,"r");           //Wenn ja, dann öffnen zum lesen
                  
if($datei) {                            //Wurde die Datei geöffnet?
                             
$dateigroesse=filesize($userdatei);     //Dateigröße ermitteln
                             
while(($data=fgetcsv($datei,$dateigroesse,";"))!=false) {       //Zeile für Zeile einlesen
                                         
if($benutzer==$data[0]) {               //Stimmt der Benutzername mit einem Datensatz überein?
                                                     
$status=1;                  //Wenn ja, dann Berechtigung auf richtig setzen
                                                     
break;                      //Schleife beenden
                                         
}
                             }
                             
fclose($datei);                 //Datei schließen
                  
}
         }
         if(
$status==1) {                                //Ist die Berechtigung richtig?
                 
if($data[0]==$benutzer) {               //Nochmals Benutzername prüfen
                         
if($data[1]==$pass) {           //Stimmt Passwort mit Datensatz überein?
                                 
$_SESSION['eingelogt']=true;

                                 
$test=file_exists('logins.txt');
                                 if(
$test) {
                                         
$offen=fopen('logins.txt','r');
                                         if(
$offen) {
                                                 
$groesse=filesize('logins.txt');
                                                 
$logins=fread($offen,$groesse);
                                                 
fclose($offen);
                                         }
                                 }
                                 
$logins++;
                                 
$test=file_exists('logins.txt');
                                 if(
$test) {
                                         
$offen=fopen('logins.txt','w');
                                         if(
$offen) {
                                                 
$output=fwrite($offen,$logins);
                                                 
fclose($offen);
                                         }
                                 }

                                 include(
'sicherheit.php');                      //Session-Sicherheit erzeugen

                                 
$_SESSION['codezeit']=$zeitpunkt;
                                 
$_SESSION['code']=$code;

                                 
header('Location: http://'.$hostname.($pfad=='/'?'':$pfad).'/start.php?'.$s_name.'='.$s_id);             //Wenn ja, dann zur Homepage weiterleiten
                                 
exit;
                         }
                         else {
                                 
session_unset();
                                 
session_destroy();
                                 
header('Location: http://'.$hostname.($pfad=='/'?'':$pfad).'/main.php');              //Wenn nicht, dann zurück?
                                 
exit;
                         }
                 }
                 else {
                         
session_unset();
                         
session_destroy();
                         
header('Location: http://'.$hostname.($pfad=='/'?'':$pfad).'/main.php');                      //Wenn nicht dann zurück?
                         
exit;
                 }
         }
         else {
                 
session_unset();
                 
session_destroy();
                 
header('Location: http://'.$hostname.($pfad=='/'?'':$pfad).'/main.php');              //Wenn nicht, dann zurück?
                 
exit;
         }

?>
und das Skript testlogin.php

PHP-Code:
<?php
         session_start
();

         
$hostname=$_SERVER['HTTP_HOST'];
         
$pfad=dirname($_SERVER['PHP_SELF']);
         
$s_name=session_name();
         
$s_id=session_id();
         if(
strpos($pfad,'hp/')>0) {
                 
$pfad=substr($pfad,0,(strpos($pfad,'hp/')+2));
         }

         if(!isset(
$_SESSION['eingelogt']) || !$_SESSION['eingelogt']) {
                 
header('Location: http://'.$hostname.($pfad=='/'?'':$pfad).'/main.php');
                 exit;
         }
         else {
                 if(
$_SESSION['codezeit']<$_SESSION['zeit'] or $_SESSION['codezeit']>time()) {
                         
header('Location: http://'.$hostname.($pfad=='/'?'':$pfad).'/main.php');
                         exit;
                 }
                 else {
                         
$bol=file_exists('sicherheit.csv');
                         if(
$bol) {
                                 
$datei=fopen('sicherheit.csv','r');
                                 if(
$datei) {
                                         
$dateigroesse=filesize('sicherheit.csv');
                                         
$status=false;
                                         while((
$data=fgetcsv($datei,$dateigroesse,';'))!=false) {
                                                 if(
$_SESSION['codezeit']==$data[0]) {
                                                         if(
$_SESSION['code']==$data[1]) {
                                                                 
$status=true;
                                                                 break;
                                                         }
                                                 }
                                         }
                                         
fclose($datei);
                                 }
                         }
                 }
         }
         if(
$status==false) {
                 
header('Location: http://'.$hostname.($pfad=='/'?'':$pfad).'/main.php');
                 exit;
         }
?>
Wo liegt jetzt der Fehler?

[mod: benutze bitte die code-Tags zur quellcode-Formatierung]

.

Geändert von cortex (03.07.2009 um 15:12:54 Uhr) Grund: forenrichtlinien
Mit Zitat antworten