YourWBB


yourWBB » yourWBB Misc * » Das Proggen » MySQL und PHP » Login-Problem bei meinem script » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag 4.770 Views | | Thema zu Favoriten hinzufügen

Neues Thema erstellen Antwort erstellen

Zum Ende der Seite springen Login-Problem bei meinem script
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Maniac_81 Maniac_81 ist männlich
PHP Profi


images/avatars/avatar-5230.gif

Dabei seit: 27.06.06
Beiträge: 2.087
Fähigkeiten: WBB3 Anfänger; WBB2 Profi
Herkunft: localhost/
Forenversion: 2.3; Lite 2.0

 Login-Problem bei meinem script Antworten Zitieren Editieren Melden       UP

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("&auml;""&Auml;""&ouml;""&Ouml;""&uuml;""&Uuml;""&szlig;");
        $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 Maniac_81 ist offline E-Mail WWW Finden Als Freund hinzufügen Füge Maniac_81 in deine Kontaktliste ein MSN Passport-Profil von Maniac_81 anzeigen
Agi Agi ist männlich
TEAM - PHP Freak

images/avatars/avatar-5240.gif

Dabei seit: 22.11.04
Beiträge: 2.628
Fähigkeiten: WBB3 Profi
Forenversion: 3.1

Antworten Zitieren Editieren Melden       UP

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 Agi ist offline Finden Als Freund hinzufügen
Maniac_81 Maniac_81 ist männlich
PHP Profi


images/avatars/avatar-5230.gif

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 Thema begonnen von Maniac_81
Antworten Zitieren Editieren Melden       UP

dann bekomm ich ne fehlermeldung:

Zitat:

Warning: preg_replace() [function.preg-replace]: Delimiter must not be alphanumeric or backslash in C:\xampp\htdocs\dart\functions.php on line 51


hab auch schon ereg_replace und strg_replace versucht, bekomm zwar keine fehlermeldung, aber funktioniert nicht.

ich glaube das es wirklich was mit dem charset zu tun hat, weil der browser das formular ja weiterschickt und dort die umlaute ja schon umgewandelt werden.

die ausgabe per:

echo $name = ers($name);

ergibt im browser:

Bären

sollte aber doch B&auml;ren sein.

__________________
zufrieden mit meinem Support? dann hier bitte bewerten!

Sie haben 3 gelbe Bananen gewählt!

ÄPFEL! 3!!!

05.08.08 13:44 Maniac_81 ist offline E-Mail WWW Finden Als Freund hinzufügen Füge Maniac_81 in deine Kontaktliste ein MSN Passport-Profil von Maniac_81 anzeigen
dèjavue dèjavue ist männlich
Mitglied


images/avatars/avatar-4670.jpg

Dabei seit: 09.03.06
Beiträge: 645
Fähigkeiten: WBB3 Fortgeschritten
Herkunft: Dresden
Forenversion: 2.2

Antworten Zitieren Editieren Melden       UP

Evtl musst du auch im Formular deklarieren mit welchen zeichensatz es operieren soll (ohne diesen führt es bei einigen Browsern zu missverständnissen Augenzwinkern )

http://de.selfhtml.org/html/formulare/de...m#zeichensaetze
05.08.08 13:53 dèjavue ist offline E-Mail Finden Als Freund hinzufügen Füge dèjavue in deine Kontaktliste ein
Maniac_81 Maniac_81 ist männlich
PHP Profi


images/avatars/avatar-5230.gif

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 Thema begonnen von Maniac_81
Antworten Zitieren Editieren Melden       UP

hab ich auch schon versucht, erfolglos.

warum wird mir im quelltext bei der ausgabe es mit umlaut angezeigt? also Bären....

__________________
zufrieden mit meinem Support? dann hier bitte bewerten!

Sie haben 3 gelbe Bananen gewählt!

ÄPFEL! 3!!!

05.08.08 13:58 Maniac_81 ist offline E-Mail WWW Finden Als Freund hinzufügen Füge Maniac_81 in deine Kontaktliste ein MSN Passport-Profil von Maniac_81 anzeigen
[kamui]
~


images/avatars/avatar-4963.gif

Dabei seit: 27.04.05
Beiträge: 2.992

Antworten Zitieren Editieren Melden       UP

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 [kamui] ist offline Finden Als Freund hinzufügen
Maniac_81 Maniac_81 ist männlich
PHP Profi


images/avatars/avatar-5230.gif

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 Thema begonnen von Maniac_81
Antworten Zitieren Editieren Melden       UP

ok, hab ich nun geändert. trotzdem erfolglos.

was ich nun versucht habe ist folgendes:
php:
1:
2:
$name utf8_decode($name);
$name ers($name);

jetzt bekomm ich zumindest im quelltext schon mal "B&auml;ren" aangezeigt und im Browser "Bären".
nur geht der Login immernoch nicht.

__________________
zufrieden mit meinem Support? dann hier bitte bewerten!

Sie haben 3 gelbe Bananen gewählt!

ÄPFEL! 3!!!

05.08.08 14:41 Maniac_81 ist offline E-Mail WWW Finden Als Freund hinzufügen Füge Maniac_81 in deine Kontaktliste ein MSN Passport-Profil von Maniac_81 anzeigen
qivis qivis ist männlich
Mitglied


images/avatars/avatar-4974.jpg

Dabei seit: 30.07.07
Beiträge: 72
Fähigkeiten: WBB3 Fortgeschritten
Herkunft: HB
Forenversion: 3.0

Antworten Zitieren Editieren Melden       UP

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 qivis ist offline E-Mail WWW Finden Als Freund hinzufügen Füge qivis in deine Kontaktliste ein MSN Passport-Profil von qivis anzeigen
Maniac_81 Maniac_81 ist männlich
PHP Profi


images/avatars/avatar-5230.gif

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 Thema begonnen von Maniac_81
Antworten Zitieren Editieren Melden       UP

Zitat:
Original von qivis
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 (;


das hatte ich ja schon auf anraten gemacht und die function str_replace benutzt.

doch das problem besteht immernoch. ein code-update hab ich oben gemacht.


problem ist immernoch das jetzt zwar der umlaut richtig übergeben wird, aber dennoch der login nicht funktioniert.

__________________
zufrieden mit meinem Support? dann hier bitte bewerten!

Sie haben 3 gelbe Bananen gewählt!

ÄPFEL! 3!!!

06.08.08 08:55 Maniac_81 ist offline E-Mail WWW Finden Als Freund hinzufügen Füge Maniac_81 in deine Kontaktliste ein MSN Passport-Profil von Maniac_81 anzeigen
[kamui]
~


images/avatars/avatar-4963.gif

Dabei seit: 27.04.05
Beiträge: 2.992

Antworten Zitieren Editieren Melden       UP

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("&auml;""&Auml;""&ouml;""&Ouml;""&uuml;""&Uuml;""&szlig;");
        $text str_replace($umlaute$ersetzen$text);
        
        return $text;
    }
$name "Hölger";
echo $name." - ".htmlspecialchars(ers($name));


Gibt er mir "Hölger - H&ouml;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 Augenzwinkern

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 [kamui] ist offline Finden Als Freund hinzufügen
Maniac_81 Maniac_81 ist männlich
PHP Profi


images/avatars/avatar-5230.gif

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 Thema begonnen von Maniac_81
Antworten Zitieren Editieren Melden       UP

wie ich geschrieben habe, es wird richtig ausgegeben und umgewandelt aber nur wenn ich "utf8_decode" verwende. dennoch funktioniert der login nicht.
bei allen anderen usern ohne umlaute geht es einwandfrei.

wenn ich

php:
1:
htmlspecialchars(ers($name));


versuche wird:

Bären

ausgegeben.

__________________
zufrieden mit meinem Support? dann hier bitte bewerten!

Sie haben 3 gelbe Bananen gewählt!

ÄPFEL! 3!!!

06.08.08 13:07 Maniac_81 ist offline E-Mail WWW Finden Als Freund hinzufügen Füge Maniac_81 in deine Kontaktliste ein MSN Passport-Profil von Maniac_81 anzeigen
[kamui]
~


images/avatars/avatar-4963.gif

Dabei seit: 27.04.05
Beiträge: 2.992

Antworten Zitieren Editieren Melden       UP

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 [kamui] ist offline Finden Als Freund hinzufügen
Maniac_81 Maniac_81 ist männlich
PHP Profi


images/avatars/avatar-5230.gif

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 Thema begonnen von Maniac_81
Antworten Zitieren Editieren Melden       UP

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("&auml;""&Auml;""&ouml;""&Ouml;""&uuml;""&Uuml;""&szlig;");
        $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 Maniac_81 ist offline E-Mail WWW Finden Als Freund hinzufügen Füge Maniac_81 in deine Kontaktliste ein MSN Passport-Profil von Maniac_81 anzeigen
[kamui]
~


images/avatars/avatar-4963.gif

Dabei seit: 27.04.05
Beiträge: 2.992

Antworten Zitieren Editieren Melden       UP

Ja, wir sind schon alles Spezi's, aber bisher hat es dir wenig geholfen Augenzwinkern

Also in $text sind nun die Umlaute korrekt umgewandelt?
06.08.08 14:26 [kamui] ist offline Finden Als Freund hinzufügen
Maniac_81 Maniac_81 ist männlich
PHP Profi


images/avatars/avatar-5230.gif

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 Thema begonnen von Maniac_81
Antworten Zitieren Editieren Melden       UP

richtig, habs auch eben getestet und etwas in die DB geschrieben. also wandelt alles korekt um.

was ich allerdings nicht beachtet hatte das die passwörter anderst gespeichert wurden als wenn ich es jetzt im browser eingebe. jetzt funktioniert es zumindest schon mal, muss ich eben alle passwörter neu generieren.

__________________
zufrieden mit meinem Support? dann hier bitte bewerten!

Sie haben 3 gelbe Bananen gewählt!

ÄPFEL! 3!!!

06.08.08 14:33 Maniac_81 ist offline E-Mail WWW Finden Als Freund hinzufügen Füge Maniac_81 in deine Kontaktliste ein MSN Passport-Profil von Maniac_81 anzeigen
Baumstruktur | Brettstruktur
Gehe zu:

Neues Thema erstellen Antwort erstellen

yourWBB » yourWBB Misc * » Das Proggen » MySQL und PHP » Login-Problem bei meinem script