hilfe mysql problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • hilfe mysql problem

    also hab auf meiner seite ne registrierung.. und da will ich wenn die daten in der datenbank gespeichert werden dass die bösen zeichen wie " oder ' escaped werden, was ich mit addslashes(); immer gemacht habe.
    Naja mein problem ist jetzt, dass beim login formular wenn ich addslashes mach dass dann der name 2mal escaped wird also: statt Te\"st erhalte ich dann Test\\\"t und wenn ich nich addslashes verwende dann erkennt er den namen garnid also dann hab ich Te\"st und in der DB steht aber auch Te\"st trotzdem findet das script da keine übereinstimmung..
    mit trim hab ich auch keine erfolge.. hier mal der code:
    die login datei:
    PHP-Code:
     include("include/klasse.php");
     
    $titel "The End - Login";
     
    $header = array('{titel}'=>$titel);
     
    tpl("change/header"$header);
     
    $user addslashes($_POST['user']);
     
    $pass md5($_POST['pass']);
     
    $refer $_GET['refer'];
     if (
    $user == "" OR $_POST['pass'] == "") {
      
    $array = array('{refer}'=>$refer);
      
    tpl(login_leer$array);
     } else {
      
    $abfrage mysql_query("SELECT id FROM user WHERE name LIKE '$user'");
      
    $ergebnis mysql_num_rows($abfrage);
      if(
    $ergebnis == 0) {
       
    $array = array('{refer}'=>$refer);
       
    tpl(login_wronguser$array);
      } else {
       
    $abfrage "SELECT pass FROM `user` WHERE name LIKE '$user' LIMIT 1";
       
    $ergebnis mysql_query($abfrage);
       
    $row mysql_fetch_object($ergebnis);
       if(
    $row->pass == $pass) {
        
    $_SESSION['username'] = $user;
        
    setcookie("username"$usertime() + (60 60 24 100));
        
    setcookie("password"$passtime() + (60 60 24 100));
        
    $array = array('{username}'=>stripslashes($user),'{refer}'=>$refer);
        
    tpl(login_success$array);
       } else {
        
    $array = array('{refer}'=>$refer);
        
    tpl(login_wrongpw$array);
       }
      }
     }
     
    tpl("change/footer"$leer);
     include(
    "include/footer.php"); 
    die registrier datei:
    PHP-Code:
     include("include/klasse.php");
     
    $titel "The End - Register";
     
    $set $_GET['set'];
     
    $header = array('{titel}'=>$titel);
     
    tpl(header$header);
     
    tpl(body_1$leer);
     if(isset(
    $_SESSION['username'])) {
      
    $timestamp time();
      
    $time date("d.m.Y - H:i"$timestamp);
      
    $time $time." Uhr";
      
    $array = array('{username}'=>stripslashes($username), 
    '{refer}'=>$refer'{time}'=>$time);
      
    tpl(logged_in$array);
     } else {
      
    $array = array('{refer}'=>$refer);
      
    tpl(logged_out$array);
     }
     
    tpl(body_2$leer);
     
    $abfrage "SELECT name, url FROM `menu` ORDER BY rang ASC";
     
    $ergebnis mysql_query($abfrage);
     while(
    $row mysql_fetch_object($ergebnis)) {
      
    $menu = array('{eintrag}'=>$row->name'{url}'=>$row->url);
      
    tpl(menu$menu);
     }
     
    tpl(body_3$leer);
     if(
    $set != 1) {
      
    tpl(register_form$leer);
     } else {
      
    $username addslashes($_POST['username']);
      
    $passwort $_POST['passwort'];
      
    $passwort_repeat $_POST['passwort_repeat'];
      if(
    $username == "" OR $passwort == "" OR $passwort_repeat == "") {
       
    tpl(register_leer$leer);
      } else {
       if(
    $passwort != $passwort_repeat) {
        
    tpl(register_pass$leer);
       } else {
        
    $abfrage mysql_query("SELECT id FROM user WHERE name LIKE '$username'");
        
    $ergebnis mysql_num_rows($abfrage);
        if(
    $ergebnis != 0) {
         
    tpl(register_uservorhanden$leer);
        } else {
         
    $passwort_codiert md5($passwort);
         
    $eintrag "INSERT INTO user (name, pass)
                     VALUES ('
    $username', '$passwort_codiert')";
         
    $eintragen mysql_query($eintrag);
         if(
    $eintragen == true) {
          
    $array = array('{username}'=>stripslashes($username));
          
    tpl(register_success$array);
         } else {
          
    tpl(daten_fail$leer);
         }
        }
       }
      }
     }
     
    tpl(footer$leer);
     include(
    "include/footer.php"); 
    EDIT:
    Umbruch by TobiaZ
    Zuletzt geändert von TobiaZ; 31.01.2005, 17:42.
    1123581321

  • #2
    kann's sein, dass magic quotes bei dir aktiviert ist?

    Kommentar


    • #3
      magic_quotes_gpc | On
      magic_quotes_runtime | Off
      magi_quotes_sybase | Off

      steht in der phpinfo....
      was heist das nun jetzt genau? und wie kann ich das problem löseN?
      1123581321

      Kommentar


      • #4
        setz folgendes mal an den scriptanfang:

        ini_set("magic_quotes_gpc",FALSE); // upd. war Off ist false...

        Kommentar


        • #5
          erhalte jetzt folgende meldung:
          Warning: Die Funktion ini_set(), welche dein Script nutze, wurde aus Sicherheitsgründen deaktiviert und kann nicht genutzt werden.
          .. bin bei einem free webspace hoster
          1123581321

          Kommentar


          • #6
            ich muss weg, wenn das mit ini_set nicht ging, dann nimm stattdesse n das hier (auch an den scriptanfang):

            PHP-Code:
            if (get_magic_quotes_gpc()) {
               function 
            stripslashes_deep($value)
               {
                   
            $value is_array($value) ?
                               
            array_map('stripslashes_deep'$value) :
                               
            stripslashes($value);

                   return 
            $value;
               }

               
            $_POST array_map('stripslashes_deep'$_POST);
               
            $_GET array_map('stripslashes_deep'$_GET);
               
            $_COOKIE array_map('stripslashes_deep'$_COOKIE);

            magic quotes ist dafür gedacht, dass über post/get/cookies übergebene values automatisch quotes gesetzt werden.

            das mag für shared host anbieter vielleicht nützlich sein, stiftet aber nur verwirrung und ist total inperformant. sieh daher zu, dass du das schön selber mit addslashes absicherst, was irgendwie an dein skript übergeben wird.

            kannst magic quotes auch in der php.ini abschalten, falls dir das möglich ist.

            Kommentar


            • #7
              das problem besteht leider weiterhin, d.h. also ich folgendes
              PHP-Code:
              $username $_POST['username'];
              $username addslashes($username); 
              und dann wenn ich das in die datenbank eintrag erhalte wird in der daten bank der username ohne addslashes eingetragen...
              1123581321

              Kommentar


              • #8
                wie sieht dein Code (nur den Teil mit stripslashes/addslahes) jetzt aus?

                btw: es gibt auch mysql_real_escape_string, die speziell für DB-Operationen geschaffen ist.

                Kommentar


                • #9
                  hm ich werd noch verrückt, hab jetzt zu paid space gewechselt, wo magic quotes aus sind..
                  naja und der wenn im usernamen ein " vorkommt dann geht es nid und wenn ein ' vorkommt dann funzt es.. k.a. ich kenn mich gar nid mehr aus..
                  und egal was ich mache es werden die \ einfach nicht mit in die datenbank geschrieben.. kann mir jmd helfen?
                  1123581321

                  Kommentar


                  • #10
                    warum willst du die \ in die DB schreiben weißt du denn überhaupt was escaped heißt?

                    Kommentar


                    • #11
                      escaped is wenn die sonderzeichen die php benutzt welche in einem string sind auch zeichen eines stringes bleiben... oder hab ich das was falsches verstanden? weil es sonst zu problemen mit dem code kommt..?
                      1123581321

                      Kommentar


                      • #12
                        Original geschrieben von Enerkin
                        escaped is wenn die sonderzeichen die php benutzt welche in einem string sind auch zeichen eines stringes bleiben... oder hab ich das was falsches verstanden? weil es sonst zu problemen mit dem code kommt..?
                        Jepp, dann erkläre, warum du solche Einträge \", \\' ... im String in die DB haben willst?

                        Kommentar


                        • #13
                          hm. dann muss ich nur einmal addslashes verwenden....
                          keine ahnung, ich brauch einfach eine lösung wie ich bei username oder anderen formularen dieses zeichen ' zulasse... also für den Benutzer ohne dass mein script irgendwelche fehler wegen den ' verursacht...
                          Zuletzt geändert von Enerkin; 29.01.2005, 10:26.
                          1123581321

                          Kommentar


                          • #14
                            hilfe mysql problem

                            hi, hab folgendes problem, die escape zeichen also \ werden einfach nicht mit in die datenbank geschrieben...
                            was kann ich da machen??
                            1123581321

                            Kommentar


                            • #15
                              escapen!

                              Kommentar

                              Lädt...
                              X