Announcement

Collapse
No announcement yet.

[MySQL] Problem bestimme Namen auszulesen mit REGEXP

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • [MySQL] Problem bestimme Namen auszulesen mit REGEXP

    PHP Code:
    SELECT FROM  `xyzWHERE  `nameREGEXP CONVERT_utf8 '".$_POST['name']."' USING latin1 COLLATE latin1_german2_ci AND  `emailREGEXP CONVERT_utf8 '".$_POST['email']."' USING latin1 COLLATE latin1_german2_ci LIMIT 0,30";// Abfrage ob dieser Eintrag existiert 
    Hi,
    hier in der obenstehenden Abfrgae ist mein Problem. Wenn ich "normale" Namen eingebe, klappt alles so, wie ich es haben will. Doch wenn ich nun einen Namen mit Umlauten habe, bspw. "ä","ö" oder "ü" geht das schon nicht mehr.

    Ich hab da immer mysql_error() eingebaut um mir einen Fehler auszugeben, allerdings wird keiner gefunden. Dafür ist das Ergebniss leer und deshalb würde ich sagen, dass das nicht gefunden wurde.

    PHP Code:
    <?php
      
    require('mysql.php');
          
    $abfrage1 "SELECT * FROM  `xyz` WHERE  `name` REGEXP CONVERT( _utf8 '".$_POST['name']."' USING latin1 ) COLLATE latin1_german2_ci AND  `email` REGEXP CONVERT( _utf8 '".$_POST['email']."' USING latin1 ) COLLATE latin1_german2_ci LIMIT 0,30";// Abfrage ob dieser Eintrag existiert
        
    $ergebnis1 mysql_query($abfrage1) or die(mysql_error());  
        
    $row1 mysql_fetch_object($ergebnis1);
        

        if(!(
    $row1->{"name"}==null && $row1->{"email"}==null)){
                
    $cookie_benutzername $row1->{"name"};
                
    $pw $row1->{"email"};        
                echo 
    '<img src="des/pos.png" width="300" height="300"><p>';
                echo 
    'Benutzername und Passwort korrekt... <a href="user.php">WEITER</a>';
            }else{ 
    // else von PW
            
    echo '<img src="des/neg.png" width="300" height="300"><p>';
            echo 
    '<span class="error">ERROR! Daten nicht vorhanden!</span>';
            }
      
    ?>
    Wenn ich dass allerdings über die Datenbank suchen lasse, wird das gefunden.

    Wo liegt der Fehler??

    Falls es interessiert: In der Tabelle ist meine Kollation "latin1_german2_ci".

    Danke für Antworten.
    PHP Code:
    <?php
    echo 'http://acs-it-worx.de/';
    echo 
    'http://www.youtube.com/user/ACSITWorx/'// mein YouTube Kanal
    echo '-----------------------------------------------------------------';
    echo 
    'http://www.autoservice-asberg.de/';
    ?>

  • #2
    Hallo,

    du wandelst vor dem Vergleich den String explizit von UTF8 nach Latin1 um. Bist du sicher das der String auch wirklich UTF8-kodiert ist? Welche Kodierung hat denn die MySQL-Client-Verbindung und das zugehörige Frontend?

    Im Übrigen halte ich den Vergleich von Login-Daten mittels REGEXP für keine gute Idee. Hast du mal überlegt was passiert wenn jemand als Name und EMail eine gültige RegEX die in jedem Fall passt (z.B. '.*') eingibt? Derjenige ist dann mit deinem Script als der erste gefundene Nutzer eingeloggt!
    Auch die direkte Einbindung von $_POST in den SQL-String ist gefährlich. Stichwort: SQL-Injection.

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment

    Working...
    X