Moin,
folgendes Problem:
habe vor einem Jahr ein Login Script geschrieben, das bis vor einigen Tagen fehlerfrei funktioniert hat.
Hier erstmal die Bescheibung des Script:
Das gesamte Script wird über eine index.php (mit selbstgestrickten Template System, das ich übernehmen mußte) gesteuert.
Grober Aufbau:
Hier das File mit dem Login:
Mag zwar nicht hübsch sein, aber hat funktioniert....
aber seit ca. einer Woche haben User mit Mac Problem sich einzuloggen.
Der Fehler tritt nur mit MAC's auf, egal ob FF oder Safari
Es scheint so als ob das Problem bei
is_logged_in()
liegt, das liefert nämlich "false" zurück, es wird nämlich immer:
ausgeführt....
Wie gesagt, mit DOSen ist alles Tutti.
Hat einer ne Idee, woran das liegen kann?
Der Effekt ist wie gesagt letzte Woche schon mal für ein paar Stunden aufgetreten, war dann wieder in Ordnung, jetzt isser wieder da....
An den Server Einstellungen ist nix geändert worden....
folgendes Problem:
habe vor einem Jahr ein Login Script geschrieben, das bis vor einigen Tagen fehlerfrei funktioniert hat.
Hier erstmal die Bescheibung des Script:
Das gesamte Script wird über eine index.php (mit selbstgestrickten Template System, das ich übernehmen mußte) gesteuert.
Grober Aufbau:
PHP Code:
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Datum aus Vergangenheit
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT", false); // immer geändert
header("Cache-Control: no-store, no-cache, must-revalidate", false); // HTTP/1.1
header("Cache-Control: max-age=0, post-check=0, pre-check=0", false);
header("Pragma: no-cache", false); // HTTP/1.0
session_start();
error_reporting(E_ALL);
include_once("admin/config.php");
include_once("admin/template_parser.php");
include_once("admin/functions.php");
// Weiteres fürs template
// dann:
switch($page['action']) {
// die lange Switch Case Cascade
// $page['action'] kann sowohl mit $_POST oder $_GET gefüttert werden
case 'loginForm' : // hier geht zur Login Seite
$page['errorstring'] = "";
output($c_templatedir."login.form.html",$page);
break;
case 'login' :
// mit login wird die DB abgefragt. Je nach Status wird der User auf eine Andere Seite geleitet
$page['errorstring'] = "";
if(login($page)){// login wird gleich beschrieben
// ACHTUNG: header stimmt so natürlich nicht, aber das Forum BBcode
// schreibt mir ständig einen href rein, deswegen Blabla
switch ($_SESSION['daten']['status']){
case 0 : $page['action'] ="mainInputUser";
header("Location":Blabla true, 302);
break;
case 1 : $page['action'] ="mainInputUser";
header("Location:"Blabla ?action=pleiter, true, 302);
break;
case 2 : $page['action'] ="adminViewSelect";
header("Location:"Blabla."?action=admin", true, 302);
break;
case 3 : $page['action'] ="SuperVisiorViewSelect";
header("Location:"Blabla?action=SuperVisior, true, 302);
break;
}
}else{
$page['page_title'] = 'Fehler Seite';
$page['action'] ="error";
output($c_templatedir."error.html",$page);
}
break;
// zum Bleistift hierhin, Startseite für einfache Mitglieder:
case 'main' :
if (!is_logged_in()){// prüft, ob ein Login erfolgreich war
// hier scheint auch das Problem zu liegen..
$page['action'] ="login";
$page['page_title'] = 'Login Page';
$page['errorstring'] = "Sie wurden zum Login umgeleitet";
output($c_templatedir."login.form.html",$page);
break;
}else{
$page['username'] = $_SESSION['daten']['loginname'];
$page['userstatus'] = "Mitarbeiter";
$page['action'] ="main";
$page['errorstring']=" ";
output($c_templatedir."main.html",$page);
}
break;
//// irgendeine Aktion:
case 'foobar' :
if (!is_logged_in()){
$page['action'] ="login";
$page['page_title'] = 'Login Page';
$page['errorstring'] = "Sie wurden zum Login umgeleitet";
output($c_templatedir."login.form.html",$page);
break;
}else{
if(foobar($parameter)){
$page['action'] ="tuWat";
$page['page_title'] = 'Übersicht';
$page['errorstring'] = "";
output($c_templatedir."form.show.entry.html",$page);
}else{
$page['page_title'] = 'Fehler Seite';
$page['action'] ="error";
output($c_templatedir."error.html",$page);
}
}
break;
PHP Code:
function login(&$page){
include_once("mysql_class.inc.php");
if (trim($_POST['name'] == "") || trim($_POST['passwort'] == "")){
$page['errorstring'] = "<h3>Bitte Name und/oder Passwort eingeben!</h3>";
return false;
}
$_POST['name'] = stripslashes(strip_tags(htmlspecialchars($_POST['name'],ENT_QUOTES)));
$_POST['passwort'] = stripslashes(strip_tags(htmlspecialchars($_POST['passwort'],ENT_QUOTES)));
$db = new mysqlDB();
$db->conect();
$sql = "SELECT * from user ";
$sql .= "WHERE ";
$sql .= "(BINARY loginname = '".$_POST['name']."') ";
$sql .= "and ";
$sql .= "(BINARY passwort = '".$_POST['passwort']."');";
$result = mysql_query($sql);
$data = mysql_fetch_array ($result, MYSQL_ASSOC);
if (mysql_num_rows ($result) > 0) {
// Ein Datensatz wurde gefunden.
$page['errorstring'] = "Login erfolgreich";
$_SESSION['daten'] = $data;
$_SESSION['logedin'] = "true";
$page['username'] = $_SESSION['daten']['loginname'];
} else {
$_SESSION['logedin'] = "false";
$page['errorstring'] = "<h3>Falscher Loginname und/oder Passwort</h3>";
$db->destroy();
return false;
}
$db->destroy();
return true;
}
// Test, ob Login erfolgte
function is_logged_in(){
if(isset($_SESSION['logedin'])){
if ($_SESSION['logedin'] != true){
return false;
} else {
return true;
}
}
}
aber seit ca. einer Woche haben User mit Mac Problem sich einzuloggen.
Der Fehler tritt nur mit MAC's auf, egal ob FF oder Safari
Es scheint so als ob das Problem bei
is_logged_in()
liegt, das liefert nämlich "false" zurück, es wird nämlich immer:
PHP Code:
case 'foobar' :
if (!is_logged_in()){
$page['action'] ="login";
$page['page_title'] = 'Login Page';
$page['errorstring'] = "Sie wurden zum Login umgeleitet";
output($c_templatedir."login.form.html",$page);
Wie gesagt, mit DOSen ist alles Tutti.
Hat einer ne Idee, woran das liegen kann?
Der Effekt ist wie gesagt letzte Woche schon mal für ein paar Stunden aufgetreten, war dann wieder in Ordnung, jetzt isser wieder da....
An den Server Einstellungen ist nix geändert worden....
Comment