Hallo Zusammen,
ich stelle gerade meine Vereinsseite mit ein paar PHP Skripten und MySQL Anbindung von PHP 4 auf PHP 7 um. Hierbei habe ich hauptsächlich mysql_query & Co auf mysqli umgestellt.
Das ganze teste ich auf einem XAMPP for Windows 7.2.0. Nach dem hier alles funktioniert hat, habe ich die Seite zu 1und1 hochgeladen um dort fest zustellen, dass das Loginskript nicht mehr funktioniert.
Merkwürdig ist, dass ich hier auch nur mysqli umgestellt habe und das skript lokal auf XAMPP funktioniert. Gehe ich in der PHP Version bei 1und1 wieder auf PHP 5 zurück funktioniert mein Login. Wenn ich mit einer Bestehenden Session wieder von PHP 5 auf 7 umstelle bin ich eingeloggt. Sprich die Session ansich funktioniert, aber das erstellen der Session scheinbar nicht.
Versuche ich mich ohne Session Cookie einzulogen Meldet mein Skript "Erfolgreich Eingelogt!" und im FF sehen ich ein Session Cookie. Meine Seite verhält sich aber immer noch als wäre ich nicht eingeloggt.
Hier mal mein login Skript:
Seite die einen Login benötigen bzw. Zusatzfunktionen durch den Login bieten starten mit:
auth funktion sieht wie folgt aus (Die Datenbank Verbindung wird zuvor erstellt ... $connection = mysqli_connect(SERVER, DB_LOGIN, DB_PW, DB_NAME))
Wenn ich mir in der auth() $_SESSION['pw'] und $_SESSION['login'] ausgeben lasse sind diese bei mir lokal gefüllt. Auf dem 1und1 Host nicht.
Lange Rede kurzer Sinn. Kann mir jemand sagen, warum meine Session nicht richtig angelegt wird bzw. warum meine auth() Funktion diese auf einmal nicht mehr kennt (global $_SESSION; in auth() aufnehmen ändert auch nix)?
ich stelle gerade meine Vereinsseite mit ein paar PHP Skripten und MySQL Anbindung von PHP 4 auf PHP 7 um. Hierbei habe ich hauptsächlich mysql_query & Co auf mysqli umgestellt.
Das ganze teste ich auf einem XAMPP for Windows 7.2.0. Nach dem hier alles funktioniert hat, habe ich die Seite zu 1und1 hochgeladen um dort fest zustellen, dass das Loginskript nicht mehr funktioniert.
Merkwürdig ist, dass ich hier auch nur mysqli umgestellt habe und das skript lokal auf XAMPP funktioniert. Gehe ich in der PHP Version bei 1und1 wieder auf PHP 5 zurück funktioniert mein Login. Wenn ich mit einer Bestehenden Session wieder von PHP 5 auf 7 umstelle bin ich eingeloggt. Sprich die Session ansich funktioniert, aber das erstellen der Session scheinbar nicht.
Versuche ich mich ohne Session Cookie einzulogen Meldet mein Skript "Erfolgreich Eingelogt!" und im FF sehen ich ein Session Cookie. Meine Seite verhält sich aber immer noch als wäre ich nicht eingeloggt.
Hier mal mein login Skript:
PHP-Code:
<?php
session_start();
ini_set("default_charset", "iso-8859-1");
require_once("funktionen.php");
extract($_POST);
//Manueller Login
if(isset($login_button))
{
$_SESSION['login']=$login;
$_SESSION['pw']=md5($pw);
if(isset($remind_pw))
{
$_SESSION['remind_login']="yes";
}
echo "<b>Erfolgreich Eingelogt!</b><br> <a href='verwaltung2.php'>Verwaltung</a>";
}
if(isset($register_button))
{
$return=newuser($email,$pw_register,$pw_repeat);
if(is_numeric($return))
{ echo"Dein Account wurde erstellt. Du musst dich noch einlogen"; }
else
{ echo $return; }
$logout = true; //Zuletzt eingeloggter Nutzer wird ausgeloggt
}
if(isset($_GET['logout']) && $_GET['logout'])
{
// Löschen aller Session-Variablen.
$_SESSION = array();
// löschen des Session-Cookie.
if (isset($_COOKIE[session_name()]))
setcookie(session_name(), '', time()-42000);
// Zum Schluß, löschen der Session.
session_destroy();
echo " Sie wurden ausgeloggt";
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title>Login</title>
<link rel="stylesheet" type="text/css" href="../tauchen.css">
</head>
<body>
<?php
//echo $_SESSION['login']."-->".$_SESSION['pw'];
//echo "<pre>";
//print_r($_SESSION);
//print_r($_POST);
//print_r($_GET);
//echo "</pre>";
?>
<h1>Login</h1>
<form name="login" action="<?=$_SERVER['PHP_SELF']?>" method="POST">
<table>
<tr>
<td>Login:</td>
<td><input type="text" name="login" value="<?php if(isset($_POST['login'])) echo $_POST['login']?>"></td>
</tr>
<tr>
<td>Passwort:</td>
<td><input type="password" name="pw"></td>
</tr>
<tr>
<td><input type="submit" value="abschicken" name="login_button"></td>
<td></td>
</tr>
</table>
</form>
</body>
</html>
PHP-Code:
<?php
ini_set("default_charset", "iso-8859-1");
require_once("funktionen.php");
auth(1);
PHP-Code:
function auth($benoetigtes_recht = 2)
{
global $connection;
$id=0;
//Password und Login werden mit hilfe von Sessions weiter gegeben.
session_start();
$loginID=0;
$login_error=false; //für Fehlermeldungen
if(isset($_SESSION['pw']) || isset($_SESSION['login']))
{
$login_error=true;
$query="SELECT id, anrede, vorname, name, email, rechte
FROM nutzer WHERE email='".$_SESSION['login']."' AND pw='".$_SESSION['pw']."'";
$data=$connection->query($query) or die("auth(): <br>$query<br>".$connection->error);
if($row = $data->fetch_array(MYSQLI_BOTH))
extract($row);
}
if($id!=0)//User gefunden
{
//Wenn ein Rest beim Modulo rechnen bleibt, darf der entsprechende bereich nicht aufgerufen werden
if($rechte % $benoetigtes_recht > 0){
header("location:verwaltung2.php");
}
return array("id" => $id, "recht" => $rechte, "anrede" => $anrede, "vorname" => $vorname, "name" => $name, "email" => $email);
}
else
{
$_SESSION = array(); //löschen aller Session Variablen
header("location:login.php?login_error=true");
return false;
}
}
Lange Rede kurzer Sinn. Kann mir jemand sagen, warum meine Session nicht richtig angelegt wird bzw. warum meine auth() Funktion diese auf einmal nicht mehr kennt (global $_SESSION; in auth() aufnehmen ändert auch nix)?
Kommentar