ERLEDIGT
JA
JA
ANTWORTEN
10
10
ZUGRIFFE
508
508
EMPFEHLEN
-
Guten Morgen Leute.
um Fotos meines Hobbies als Digitaler Bilderknipser nur bestimmten Leute über die Websete verfügbar zu machen, will ich ein Logon Skrip mit User-Datenbank und Gruppen bauen.
Also Session!
Aber da kommt auch schon das erst Problem auf. Die Session funktioniert, ich kann mit richtigem Pass und User anmelden, falsche werden abgewiesen.
SAFE MODE is on und Globals sind off. Ist ein Vserver bei Strato.
Nun verliere ich aber nach dem Anmelden die Session Vars.
Hier findet Ihr die Testseite(nicht über den Aufbau meckern, der ist noch eintönig, nur zum Testen) -> die Test-Seite
Mit benutzer und passwort test könnt ihr die Anmeldung testen.
ich will hier keine riesigen Spurcen Posten, deswegen verzeiht mir bitte den RAR LinK: Sourcen
Ich bin C/C++ Prgrammierer, mach auch C# und VB/VBA. Mit PHP hab ich bisher nur kleine Skripte gemacht, mal ein Verzeichnis lesen, Slide-Show, Mailforms, etc. Nun gehts tiefer.
Hoffe einer von Euch findet ein paar Minuten und kann mir sagen wo mein Denkfehler ist.
Wer mag kann ja mal rein schauen(Meine Bilder) was ich so knipse, aber da sind nur die Bilder wo ich keine Persönlichkeitsrechte verletze, alle anderen wie Akt und Portät muss ich vor ungewünschten Zugriffen schützen. .
Salü
BitMan
-
Also bei mir bleibt die session anscheinend....
Hast du überall session_start() ganz oben?
Hast du Cookies aktiviert?
-
Hab es nur mal kurz überflogen.. is ja auch net gerade klein
, kann es sein das du in manchen seiten das session start vergisst.. bzw ich würde das über eine checkuser.php machen in der dann sowas in der art steht...
und die bei jeder seite includen wo du "absichern" willstPHP-Code:<?php
session_start ();
if (!isset ($_SESSION["user_id"]))
{
header ("Location: formular.php");
}
?>
bsp
so in etwa würds ich machen..PHP-Code:include ("checkuser.php");
if ($_SESSION["user_bestaetigt"] == "nein")
{
echo '<div style="color:red;">Du bist kein Uploader!<a href="logout.php" >Weiter!!<br><br></div>';
die;
}
mfg SpikanerGeändert von spikaner (22.10.07 um 14:05 Uhr)
-
Hi Sufijen, Hi Spikaner,
vielleicht habe ich mein Problem nicht effektiv geschildert.
Die Session Variable bleibt bestehen. Aber nach der Anmeldung ist anstatt der Felder nur noch ein Button, der keine weitere Funktion besitzt. Wenn man darauf klickt soll der natürlich das Form neu aufbauen, was bedeutet das die index.php noch einmal geladen wird und als erstes Session ID, SessionUser und Session Part einliest um diese explizit bei jedem Aufruf der index.php, also bei jedem Klick zu prüfen.
Da ich alles über die Index PHP steuere, alle anderen *.php nur als include/require von if/else geladen wird, ist sicher nur der folgende Teil relevant:
Irgendwie verliert mein Script den User und das Passwort, nach erfolgreichen Anmeldung, wenn man den verbleibenden Button klickt, der quasi später mal genutzt wird um Seiteninhalte auf zu rufen, ...PHP-Code:$test = true;
//*** HTTP-Header-Vares einlesen
if(isset($HTTP_POST_VARS['UserBoxName'])) $UserBoxName = $HTTP_POST_VARS['UserBoxName'];
if(isset($HTTP_POST_VARS['UserBoxPass'])) $UserBoxPass = $HTTP_POST_VARS['UserBoxPass'];
//*** Session setzen
if(!isset($SessID))
{
session_start();
$SessID = session_id();
session_register("SessID",session_id());
}
if(!isset($_SESSION["SessUser"]))
{
$SessUser = "Gast";
session_register("SessUser",$SessUser);
}
else
{
$SessUser = $_SESSION["SessUser"];
}
if(!isset($_SESSION["SessUserSessPass"]))
{
$SessPass = "Passwort";
session_register("SessPass",$SessPass);
}
else
$SessPass = $_SESSION["SessUserSessPass"];
include("FUNC_DatenBank.php");
LG BitMan
-
Also hier mal ein beispiel
login.php
und die dazugehörigrige formular.phpPHP-Code:<?php
// Session starten
session_start ();
require ("config.php");
// Datenbankverbindung aufbauen
$connectionid = mysql_connect ($mysql_host, $mysql_user, $mysql_pw);
if (!mysql_select_db ($mysql_db, $connectionid))
{
die ("Keine Verbindung zur Datenbank");
}
// Db abfrage
$sql = "SELECT ".
"Id, Nickname, email, Vorname, bestaetigt, admin ".
"FROM ".
"benutzerdaten ".
"WHERE ".
"(Nickname like '".$_REQUEST["name"]."') AND ".
"(Kennwort = '".md5 ($_REQUEST["pwd"])."')";
$result = mysql_query ($sql);
if (mysql_num_rows ($result) > 0)
{
// Benutzerdaten in ein Array auslesen.
$data = mysql_fetch_array ($result);
// var_dump($result);
// var_dump($data);
// Sessionvariablen erstellen und registrieren
$_SESSION["user_id"] = $data["Id"];
$_SESSION["user_nickname"] = $data["Nickname"];
$_SESSION["user_email"] = $data["email"];
$_SESSION["user_vorname"] = $data["Vorname"];
$_SESSION["user_bestaetigt"] = $data["bestaetigt"];
$_SESSION["user_admin"] = $data["admin"];
header ("Location: upload1.php");
}
else
{
header ("Location: formular.php?fehler=1"); //anderfalls mit fehlermeldung zurück zum Loginscript.
}
?
hoffe das filft dir etwas weiterPHP-Code:<?php session_start (); ?>
<html>
<head>
<title>Login</title>
</head>
<body>
<?php
if (isset ($_REQUEST["fehler"]))
{
echo "Die Zugangsdaten waren ungültig, oder du bist noch nicht freigeschaltet worden";
}
?>
<div align="center"></br>Uploader Login</br></br></br>
</p>
<table border="1" width="160" bordercolorlight="#808080" bgcolor="#C0C0C0">
<tr>
<td><form action="login.php" method="post"> Name: <input type="text" name="name" size="20"></td>
</tr>
<tr>
<td> Kennwort: <input type="password" name="pwd" size="20"></td>
</tr>
<tr>
<td><input type="submit" value="Login"></form></td>
</tr>
</table>
</div>
</body>
</html>
mfg Spikaner
-
Danke, soweit ist das ein gutes Beispiel. Aber damit weis ich immer noch nicht warum mein Skript die Session-Variablen verliert.
-
23.10.07 10:46 #7
Woher kommt die Variable $SessID in deinem Script?
Desweiteren sind session_register() und die $HTTP_*_VARS veraltet und sollten durch $_SESSION bzw. $_POST, $_GET, $_COOKIE, $_SERVER, $_REQUEST, etc. ersetzt werden.PHP-Code://*** Session setzen
if(!isset($SessID))
{
session_start();
$SessID = session_id();
session_register("SessID",session_id());
}
Und das session_start() nicht in eine if-Bedingung, sondern einfach in die allererste Zeile deiner index.php, so dass es immer, _immer_ ausgeführt wird!
Nachtrag
PHP-Code:// Alt, bitte nicht mehr machen
$name = "Foo";
session_register("name");
// Neu, so wirds mittlerweile gemacht
$_SESSION["name"] = "Foo";
Gruß mAu
──────────────────────────
Ich auf flickr
* Unformatierten Quellcode schaue ich mir _nicht_ an!
* Sollte ich euch bei einer Frage weitergeholfen haben, würde ich mich über eine positive Bewertung freuen.
* Bitte die Netiquette beachten.
* Vergesst nicht, beantwortete Fragen als erledigt zu markieren!
-
23.10.07 10:49 #8
- Registriert seit
- Jun 2007
- Ort
- Lingen (Niedersachsen, zZ in Istanbul)
- Beiträge
- 685
İch glaube ich habe was gefunden:
Ersetze das mal durchPHP-Code://*** Session setzen
if(!isset($SessID))
{
session_start();
$SessID = session_id();
session_register("SessID",session_id());
}
PHP-Code:session_start();
//*** Session setzen
if(!isset($SessID))
{
$SessID = session_id();
$_SESSION['SessID'] = $SessID; //Neu
// session_register("SessID",session_id()); Schon alt
}
-
Hey Leute,
danke für die Hilfe. Aber irgendwie will es nicht.
Ich habe nun veraltete Syntax durch neue ersetzt und den gleichen Effekt.
Um alle anderen Fehlerquellen aus zu schließen hab ich das mal auf die Session reduziert:
Nun sollte die Seite beim ersten Auruf den User Gast mit Passwort ausspucken und nach einem Refresh dann den User Test. Aber nach dem Refresh steht immer noch der Gastuser drin. Ich denke ich übersehen nur eine Kleinigkeit, die so simple ist das sie auch Euch nicht auffält Sicher nur ein generelles Verständnis Problem.PHP-Code:session_start();
$SessId = session_id();
if(!isset($session["SessUser"]))
$SessUser = "Gast-Benutzer";
if(!isset($session["SessPass"]))
$SessPass = "Gast-Passwort";
if( $SessUser=="Gast-Benutzer" && $SessPass=="Gast-Passwort" )
{
echo "Anmelden<br>";
$session["SessUser"] = "test";
$session["SessPass"] = "test";
}
else
{
$SessUser = $session["SessUser"];
$SessPass = $session["SessPass"];
echo "Sess-User prüfen";
}
echo "Session ".$SessId."<br>";
echo "User ".$SessUser."<br>";
echo "Passwort ".$SessPass."<br>";
LG BitMan
-
23.10.07 14:41 #10
Wo ist der Unterstrich?
PHP-Code:// Nein
$session["SessPass"]
// Ja, Dollarzeichen, Unterstrich und groß bitte
$_SESSION["SessPass"]
Gruß mAu
──────────────────────────
Ich auf flickr
* Unformatierten Quellcode schaue ich mir _nicht_ an!
* Sollte ich euch bei einer Frage weitergeholfen haben, würde ich mich über eine positive Bewertung freuen.
* Bitte die Netiquette beachten.
* Vergesst nicht, beantwortete Fragen als erledigt zu markieren!
-
*autsch* ist ja schon peinlich. KLar, so wie ich das geschrieben habe wars keine Session Var. Danke.
Ähnliche Themen
-
Array in Session verliert Werte
Von boykottke im Forum PHPAntworten: 10Letzter Beitrag: 25.03.08, 12:29 -
Flash verliert Variablen während einer Rekursion,...
Von Marius Heil im Forum Flash PlattformAntworten: 12Letzter Beitrag: 30.10.07, 13:08 -
Session-variablen gehen nicht; lief auf windows-server, nicht mehr auf Ubuntu!
Von Layna im Forum PHPAntworten: 4Letzter Beitrag: 08.12.06, 18:07 -
SESSION verliert variablen auf übernächster seite
Von forsakingmax im Forum PHPAntworten: 12Letzter Beitrag: 11.05.05, 21:05 -
Tutorial nicht verstanden ;(
Von ZipZek im Forum PhotoshopAntworten: 7Letzter Beitrag: 20.08.02, 17:51





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren