Datenverfälschung bei Formularen

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

  • Datenverfälschung bei Formularen

    Hi!

    ich hab folgendes Problem, das sicher leicht lösbar wäre, wenn ich wüsste wonach ich suchen muss.

    Wenn ich im Textfeld im formular einen Text eingebe und mit normalen enter formatiere, bekomme ich lauter \\\r und \\\n statt den zeilenumbrüchen.

    sieht wie man sich vorstellen kann sehr bekackt aus.

    Is das nur ein problem beim Format oder wie umgehe ich das am besten?

    lg und dank im voraus
    liquid

  • #2
    http://www.php-faq.de/q/q-magic-quotes.html
    mfg

    Kommentar


    • #3
      dh wenn ich ein stripslashes() vor die entsprechenden variablen setze, müsste das problem gelöst sein?

      Wenn ja: danke, das wollte ich wissen ^^

      greez
      liquid

      Kommentar


      • #4
        hab das jetz getestet... trotz stripslashes krieg ich vor Anführungszeichen immer noch nen slash und Zeilenumbrüche werden nach wie vor ned gespeichert...

        was für tricks bezüglich formatierung in formulartexten gibts denn?

        ich kann den eingebenden ja ned zumuten das alles html zu formatieren....

        greez
        liquid

        Kommentar


        • #5
          Hi,

          benutz die Funktionen nl2br().

          Grüße,
          gen

          Kommentar


          • #6
            trotz stripslashes krieg ich vor Anführungszeichen immer noch nen slash und Zeilenumbrüche werden nach wie vor ned gespeichert...
            was gibst du ein und was kommt raus?
            Die sache mit den nicht gespeicherten Umbrüchen möchtest du bitte erst mal beweisen, bevor wir da weiter Forschen. Nur weil sie im Browser(!) nicht angezeigt werden, bedeutet das natürlich nicht, dass sie nicht ausgegeben werden.

            Kommentar


            • #7
              Hi!

              Wenn ich zb:
              BIOGRAPHY
              I was born in ...
              eingebe
              bekomme ich ein
              BIOGRAPHY:\r\nI was born in ...
              wenn ich die daten in nem datenblatt ausgebe.

              Im endeffekt gibt es zu jeder gespeicherten Person ein Datenblatt, das auf einer überblicksseite je nach person aufgerufen wird. Daher werden die ganzen Daten in der DB gespeichert.. Nur das ich da keine Formatierung hinbekomme, sondern jeder zeilenumbruch und alles das einen text-klotz vermeiden könnte in noch hässlichere /s umgewandelt wird...

              wäre also interessant zu wissen ws ich tun kann um das zu vermeiden...

              danke im voraus.

              greez
              liquid

              Kommentar


              • #8
                Wie hast du dir den zweiten text ausgeben lassen?

                Kommentar


                • #9
                  ganz normal mit echo.
                  war das ev. das problem?

                  Kommentar


                  • #10
                    eigentlich sollten da keine \r im klartext drin stehen. Zeig mal bitte code.

                    Kommentar


                    • #11
                      ahm.. ok..
                      ich nehm hier mal einfach den vorgang von datensatz ändern (wo der fehler ua. auch auftritt) her.

                      1. datensätze aus der db holen

                      PHP-Code:
                      Conn();  $SEL="SELECT * FROM partecipants WHERE pid = " $pid "";  
                      echo 
                      $sel;  $RS=mysql_query($SEL);  
                      $nrows=mysql_num_rows($RS);  $assoc mysql_fetch_assoc($RS);  //Variablenzuweisung aus 
                      Datenbankabfrage  $new_nname mysql_real_escape_string($assoc['famname']);  
                      $new_vname mysql_real_escape_string($assoc['name']);  
                      $new_sname mysql_real_escape_string($assoc['searchname']);  
                      $new_land mysql_real_escape_string($assoc['land']);  
                      $new_bio mysql_real_escape_string($assoc['biotxt']);  
                      $new_work mysql_real_escape_string($assoc['worktxt']);  
                      $new_residence mysql_real_escape_string($assoc['residence']);  
                      $new_bdate mysql_real_escape_string($assoc['birthdate']); 
                      dann im formular als standard-werte speichern

                      PHP-Code:
                      <form name="new_part" method="post" action="back_edit2.php?pid=<? echo $pid; ?>">    
                      <table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
                            <tr>
                              <td width="150" valign="top">Vorname: </td>
                              <td width="350"><input name="name" type="text" value="<? echo $new_vname; ?>" size="50"></td>
                            </tr>
                            <tr>
                              <td width="150" valign="top">Nachname: </td>
                              <td><input name="famname" type="text" value="<?php echo $new_nname?>" size="50"></td>
                            </tr>
                            <tr> 
                              <td valign="top"><p>Suchname: <br>        (h&auml;ndisch einzugeben)</p></td>.....
                      hier können dann änderungen vorgenommen werden und es wird zur überprüfung an seite 2 geschickt:

                      die fängt es ab mit:
                      PHP-Code:
                      Conn();  
                      $new_vname mysql_real_escape_string($_POST['name']);  
                      $new_nname mysql_real_escape_string($_POST['famname']);  
                      $new_sname mysql_real_escape_string($_POST['searchname']);  
                      $new_land mysql_real_escape_string($_POST['land']);  
                      $new_residence mysql_real_escape_string($_POST['residence']);  
                      $new_bdate mysql_real_escape_string($_POST['bdate']);  
                      $new_bio mysql_real_escape_string($_POST['bio']);  
                      $new_work mysql_real_escape_string($_POST['work']);  
                      $pid mysql_real_escape_string($_GET['pid']);  Disconn(); 
                      und leitets je nach wahl als hidden-form-type auf nochmal ändern oder speichern um.

                      die speicher-seite holt sich die infos wieder
                      PHP-Code:
                      $new_vname $_POST['name'];  
                      $new_nname $_POST['famname'];  
                      $new_sname $_POST['searchname'];  
                      $new_land $_POST['land'];  
                      $new_residence $_POST['residence'];  
                      $new_bdate $_POST['bdate'];  
                      $new_bio $_POST['bio'];  
                      $new_work $_POST['work'];  
                      $pid $_GET['pid']; 
                      und speichert sie dann normal in die db
                      aber da is der fehler ja schon aufgetaucht.

                      hab mir schon gedacht es könnte daran liegen das ich das real escape string am anfang drinnen hab. aber wenn ichs verschachtel kommt nur noch mehr chaos dabei raus, und ich brauchs schon vorher damit mir die tabellen ned auseinandergerissen werden...

                      hoffe das war ausreichend info...

                      danke & greez
                      liquid

                      Kommentar


                      • #12
                        What?

                        du holst die werte aus der DB, fügst slashes mittes mysql_real_eacape_string() hinzu, gibst diesen wert als standard fürs Formular vor.

                        sendest die ab und auf der folgeseite knallst du dann abermals slashes ran?

                        Und jetzt sprich bitte noch mal von einem "Fehler". Works as designed.

                        Kommentar


                        • #13
                          oh.. verstehe..
                          wenn dus so sagst is es logisch...
                          frag mich bitte ned was ich mir dabei gedacht hab..

                          greez
                          liquid

                          Kommentar


                          • #14
                            wahrscheinlich nicht viel.

                            Greez

                            Kommentar

                            Lädt...
                            X