Login-Problem bei meinem script |
Maniac_81
PHP Profi
Dabei seit: 27.06.06
Beiträge: 2.087
Fähigkeiten: WBB3 Anfänger; WBB2 Profi Herkunft: localhost/ Forenversion: 2.3; Lite 2.0
|
|
Hi, ich hoffe ich kann hier denkanstöße oder lösungsvorschläge bekommen. folgendes problem:
ich habe in der datenbank die userdaten gespeichert. umlaute sind in der DB so gespeichert (zb: ä , ö , &sizlig...)
jetzt hab ich das problem wenn sein user einloggen möchte mit einem Umlaut im namen, der login nicht mehr funktioniert.
ich habe mir dazu auch eine function geschrieben, welche mir die umlaute in die codes umwandelt und diese dann so in der DB abfrägt. nur leider gehts nicht. Liegt wohl am "charset-UTF-8" ??
hab aber auch schon sämtliche andere versucht und nichts hat geholfen.
hier mal mein formular welches die daten an eine andere datei sendet:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
|
if (!logged_in())
{
echo "<div class=\"login\">
<form method=\"post\" action=\"login.php\">
<table>
<tr>
<td>Team: </td><td><input id=\"input\" name=\"username\" type=\"text\" /></td>
</tr>
<tr>
<td>Passwort: </td><td><input id=\"input\" name=\"userpass\" type=\"password\" id=\"userpass\" /></td>
</tr>
<tr>
<td colspan=\"2\" align=\"right\"><input class=\"submit\" name=\"login\" type=\"submit\" id=\"login\" value=\"\" /></td>
</tr>
</table>
</form>
</div>";
} |
|
hier die login.php:
php: |
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:
|
//function zum umwandeln der umlaute
function ers($text)
{
$umlaute = array("ä", "Ä", "ö", "Ö", "ü", "Ü", "ß");
$ersetzen = array("ä", "Ä", "ö", "Ö", "ü", "Ü", "ß");
$text = str_replace($umlaute, $ersetzen, $text);
return $text;
}
if (isset($_POST['login']))
{
$name = mysql_real_escape_string($_POST['username']);
//auskommentiert zum testen
$name = utf8_decode($name);
$name = ers($name);
$pass = $_POST['userpass'];
$userid = check_user($name, $pass);
if ($userid != false)
{
login($userid);
header("Location: index.php?section=news");
}
else
{
header("Location: index.php?section=home&login=1");
} |
|
die function check_user() prüft nur ob dieser user vorhanden, also ist eigentlich relevant.
Ich hoffe mir kann schnell jemand helfen, das belastet mich jetzt schon einige wochen und ich hab nichts gefunden was mir weiterhelfen könnte. Irgendwo ist einfach wieder ein anfängerfehler von mir *g*
__________________ zufrieden mit meinem Support? dann hier bitte bewerten!
Sie haben 3 gelbe Bananen gewählt!
ÄPFEL! 3!!!
|
|
05.08.08 13:28 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
Agi
TEAM - PHP Freak
Dabei seit: 22.11.04
Beiträge: 2.628
Fähigkeiten: WBB3 Profi Forenversion: 3.1
|
|
Probiers mal so:
$umlaute mit dem hier ersetzen:
php: |
1:
|
$umlaute = array("ä", "Ä", "ö", "Ö", "ü", "Ü", "ß"); |
|
Eventuell liegt es an den / die da drinnen sind, weil ich hab sowas ähnliches auch mal gemacht und ich habe diese Schrägstriche nicht verwendet.
__________________
|
|
05.08.08 13:42 |
Finden
Als Freund hinzufügen
|
|
[kamui]
~
Dabei seit: 27.04.05
Beiträge: 2.992
|
|
Benutz mal lieber anstatt preg_replace str_replace. preg_replace benutzt man normalerweise, wenn man RegExp hat.
Wenn du str_replace benutzt brauchst du auch keine /.
|
|
05.08.08 14:33 |
Finden
Als Freund hinzufügen
|
|
qivis
Mitglied
Dabei seit: 30.07.07
Beiträge: 72
Fähigkeiten: WBB3 Fortgeschritten Herkunft: HB Forenversion: 3.0
|
|
Hm, ich bin sicher kein Experte, aber hab gestern noch was dazu gelesen.
Da stand, dass man auf keinen backslashes nehmen soll um die Zeichenketten zu trennen, weil der eben zur Maskierung reserviert ist
also würd ichs mal probieren mit / statt \ bei $umlaute
Sorry, wenns Murcks ist (;
|
|
05.08.08 15:41 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
[kamui]
~
Dabei seit: 27.04.05
Beiträge: 2.992
|
|
Also wenn ich das Script wie folgt teste:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
|
function ers($text)
{
$umlaute = array("ä", "Ä", "ö", "Ö", "ü", "Ü", "ß");
$ersetzen = array("ä", "Ä", "ö", "Ö", "ü", "Ü", "ß");
$text = str_replace($umlaute, $ersetzen, $text);
return $text;
}
$name = "Hölger";
echo $name." - ".htmlspecialchars(ers($name)); |
|
Gibt er mir "Hölger - Hölger" aus, an der Funktion des Umwandelns sollte es also nicht liegen.
Übrigens übernimmst du das Passwort direkt aus dem Post, ohne mysql_real_escape_string - gefährlich gefährlich
Deine check_user-Funktion funktioniert bei allen Usern, die keine Umlaute im Namen haben?
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von [kamui]: 06.08.08 12:33.
|
|
06.08.08 12:28 |
Finden
Als Freund hinzufügen
|
|
[kamui]
~
Dabei seit: 27.04.05
Beiträge: 2.992
|
|
Hm, dann liegt das wohl an Server-Einstellungen (da kann ich dir nicht weiterhelfen) ...
Im PHPForum bekommst du sicherlich kompetente Hilfe, die etwas nützt ^.^
|
|
06.08.08 14:13 |
Finden
Als Freund hinzufügen
|
|
Maniac_81
PHP Profi
Dabei seit: 27.06.06
Beiträge: 2.087
Fähigkeiten: WBB3 Anfänger; WBB2 Profi Herkunft: localhost/ Forenversion: 2.3; Lite 2.0
Themenstarter
|
|
hmm, hier sind doch auch alles spezialisten *gg*
habe mir die funktion noch erweitert um zuvor in utf8 zu wandeln.
php: |
1:
2:
3:
4:
5:
6:
7:
|
function ers($text)
{
$umlaute = array("ä", "Ä", "ö", "Ö", "ü", "Ü", "ß");
$ersetzen = array("ä", "Ä", "ö", "Ö", "ü", "Ü", "ß");
$text = utf8_decode($text);
$text = str_replace($umlaute, $ersetzen, $text); |
|
funktioniert auch soweit wie ich möchte, nur eben geht der login nicht.
__________________ zufrieden mit meinem Support? dann hier bitte bewerten!
Sie haben 3 gelbe Bananen gewählt!
ÄPFEL! 3!!!
|
|
06.08.08 14:17 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
[kamui]
~
Dabei seit: 27.04.05
Beiträge: 2.992
|
|
Ja, wir sind schon alles Spezi's, aber bisher hat es dir wenig geholfen
Also in $text sind nun die Umlaute korrekt umgewandelt?
|
|
06.08.08 14:26 |
Finden
Als Freund hinzufügen
|
|
|