Lieber Besucher, herzlich willkommen bei: WebmasterWork. Falls dies dein erster Besuch auf dieser Seite ist, lese dir bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.
Problem mit meinem PHP Login Script
Hi leute,
also, ich habe ein Problem mit meinem login system von mir geschrieben.
Das ist meine sessionhelpers.inc.php
Wenn ich dann die login.php, logout.php aufrufe kommt folgender Error:
Könnt ihr mir helfen??
MfG
sword
also, ich habe ein Problem mit meinem login system von mir geschrieben.
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?php
session_start();
include_once('sessionhelpers.inc.php');
if ( isset($_POST['login']) ) {
$userid = check_user($_POST['username'], $_POST['userpass']);
if ( $userid ) {
login($userid);
} else {
echo '<p>Ihre Anmeldedaten waren nicht korrekt!</p>';
}
}
if ( !logged_in() ) {
echo <<<END
<form method="post" action="login.php">
<label>Benutzername:</label> <input name="username" type="text"><br />
<label>Passwort:</label> <input name="userpass" type="password" id="userpass"><br />
<input name="login" type="submit" id="login" value="Einloggen">
</form>
END;
} else {
echo '<p><a href="soll-geschuetzt-werden.php">Testseite</a></p>';
echo '<p><a href="logout.php">Ausloggen</a></p>';
}
?>
|
Das ist meine sessionhelpers.inc.php
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
<?php
/**
* @return void
*/
function connect () {
$con = mysql_connect('localhost', 'wh30149sql1', '*******') or exit(mysql_error());
mysql_select_db('wh30149sql1', $con) or exit(mysql_error());
}
/**
* @param string $name
* @param string $pass
* @return boolean
*/
function check_user ( $name, $pass ) {
// magic quotes anpassen
if ( get_magic_quotes_gpc() ) {
$name = stripslashes($name);
$pass = stripslashes($pass);
}
// escapen von \\, \x00, \n, \r, \, ', " und \x1a
$name = mysql_real_escape_string($name);
// escapen von Backticks (`)
$name = preg_replace(/x60/, '\\\x60', $name);
// escapen von % und _
$name = str_replace('%', '\%', $name);
$name = str_replace('_', '\_', $name);
$sql = 'SELECT UserId FROM users WHERE UserName = \'' . $name . '\' AND UserPass=\'' . md5($pass) . '\'';
if ( !$result = mysql_query($sql) ) {
exit(mysql_error());
}
if ( mysql_num_rows($result) == 1 ) {
$user = mysql_fetch_assoc($result);
return ( $user['UserId'] );
} else {
return ( false );
}
}
/**
* @param int $userid
* @return void
*/
function login ( $userid ) {
$sql = 'UPDATE users SET UserSession = \'' . session_id() . '\' WHERE UserId = ' . ((int)$userid);
if ( !mysql_query($sql) ) {
exit(mysql_error());
}
}
/**
* @return boolean
*/
function logged_in () {
$sql = 'SELECT UserId FROM users WHERE UserSession = \'' . session_id() . '\'';
if ( !$result = mysql_query($sql) ) {
exit(mysql_error());
}
return (mysql_num_rows($result) == 1);
}
/**
* @return void
*/
function logout () {
$sql = 'UPDATE users SET UserSession = NULL WHERE UserSession = \'' . session_id() . '\'';
if ( mysql_query($sql) ) {
exit(mysql_error());
}
}
connect();
?>
|
Wenn ich dann die login.php, logout.php aufrufe kommt folgender Error:
Zitat
Warning: session_start():
open(/home/customer/temp/wh30149//sess_5c1c5a5a80ff3c8fdd5d47e02f6a5cf5,
O_RDWR) failed: Permission denied (13) in
/home/customer/webs/wh30149/test/login.php on line 3
Parse error: syntax error, unexpected '/', expecting ')' in
/home/customer/webs/wh30149/test/sessionhelpers.inc.php on line 27
Warning: Unknown:
open(/home/customer/temp/wh30149//sess_5c1c5a5a80ff3c8fdd5d47e02f6a5cf5,
O_RDWR) failed: Permission denied (13) in Unknown on line 0
Warning: Unknown: Failed to write session data (files). Please verify
that the current setting of session.save_path is correct
(/home/customer/temp/wh30149/) in Unknown on line 0
Könnt ihr mir helfen??
MfG
sword
Ou man ... eine Signatur ?!?!? ... Ich muss was sinvolles schreiben ....
54556844253846425435484351463547314584344183485436454341843365325464
54556844253846425435484351463547314584344183485436454341843365325464
Der Session - Pfad sieht komisch aus:
(ich meine konkret '//' in der Mitte des Pfads)
scheint so für mich so, als sei da etwas falsch konfiguriert oder wird irgendwo falsch gesetzt.
|
|
Quellcode |
1 |
/home/customer/temp/wh30149//sess_5c1c5a5a80ff3c8fdd5d47e02f6a5cf5 |
(ich meine konkret '//' in der Mitte des Pfads)
scheint so für mich so, als sei da etwas falsch konfiguriert oder wird irgendwo falsch gesetzt.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »ospx« (25. März 2012, 21:46)
Kontrolliere mal ob es diesen Pfad überhaupt gibt (/home/customer/temp/wh30149//sess_5c1c5a5a80ff3c8fdd5d47e02f6a5cf5) und entferne das zweite /. Sollte zwar nicht ausschlaggebend sein, aber sieht nicht schön aus 
Wenn der Pfad korrekt ist und du bekommst die Meldung nach wie vor, dann hat das Script offenbar keine Schreibrechte um das Session-File anzulegen.

Wenn der Pfad korrekt ist und du bekommst die Meldung nach wie vor, dann hat das Script offenbar keine Schreibrechte um das Session-File anzulegen.
I hacked 127.0.0.1
I'm sooooooooo good! ;)
I'm sooooooooo good! ;)
kommentier doch erstmal dieses $name = preg_replace um überhaupt zu sehen ob es desswegen der fehler kommt
Mein kleines Projekt
-Cruel Online-
-Cruel Online-
Also so?
$name = preg_replace(/x60/, '\\\x60', '$name');
Nein so steht es ja schon in deinem Quelltext.
So:
$name = preg_replace('/x60/', '\\\x60', '$name');
Du musst das Suchmuster entweder in Anführungszeichen setzen ' ' o. " " oder einen String einsetzen also davor $muster = '/x60/'; und dann kannst du
$name = preg_replace($muster, '\\\x60', '$name'); schreiben. Dann solltest du aber der Übersichtlichkeit den Ersatz auch als Variable reinbringen.
Also so?
$name = preg_replace(/x60/, '\\\x60', '$name');
Nein so steht es ja schon in deinem Quelltext.
So:
$name = preg_replace('/x60/', '\\\x60', $name);
Du musst das Suchmuster entweder in Anführungszeichen setzen ' ' o. " " oder einen String einsetzen also davor $muster = '/x60/'; und dann kannst du
$name = preg_replace($muster, '\\\x60', $name); schreiben. Dann solltest du aber der Übersichtlichkeit den Ersatz auch als Variable reinbringen.
Edit: Habe gerade noch nen Fehler gesehen => hinten setzt du die Variable $name in anführungszeichen. Die müssen weg.
Strings müssen mit Anführungszeichen begonnen und beendet werden, bei Variablen darf man das nicht. (sonst werden diese als Strings vom parser interpretiert).
Ähnliche Themen
-
PHP »-
Login script???
(31. Oktober 2009, 10:46)
-
PHP »-
Problem bei Sessions
(25. November 2007, 18:31)
-
PHP »-
PHP login script
(28. Juni 2003, 10:58)
-
PHP »-
SESSION?? mal wieder
(4. Dezember 2002, 19:06)


