tutorials.de Buch-Aktion 05/2012
Like Tree4Danke
  • 1 Beitrag von tombe
  • 1 Beitrag von H4ckHunt3r
  • 1 Beitrag von H4ckHunt3r
  • 1 Beitrag von H4ckHunt3r
ERLEDIGT
JA
ANTWORTEN
14
ZUGRIFFE
311
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Big-A Big-A ist offline Mitglied Bronze
    Registriert seit
    Jan 2012
    Beiträge
    45
    Hallo alle,

    wie einige nun schon mitbekommen haben, bin ich dabei eine Datenbank übers Web bearbeiten zu können mit hilfe von Formulare.
    Alles funktioniert, dank euch

    ich habe es so versucht zu verhindern:
    PHP-Code:
    //verhindert alle leerzeichen    
    $Firma str_replace(" """$Firma);
    $Nachname str_replace(" """$Nachname);
    $Vorname str_replace(" """$Vorname);
    $Strasse str_replace(" """$Strasse);
    $Hausnnummer str_replace(" """$Hausnnummer);
    $Ort str_replace(" """$Ort);$Vorname str_replace(" """$Vorname);
    $PLZ str_replace(" """$PLZ);
    $Telefonnummer str_replace(" """$Telefonnummer);
    $Fax str_replace(" """$Fax);
    $Mail str_replace(" """$Mail);
    $Datum str_replace(" """$Datum);

    //verhindert alle Sonderzeichen
    $Firma str_replace("<"">"$Firma);
    $Nachname str_replace("<"">"$Nachname);
    $Vorname str_replace("<"">"$Vorname);
    $Strasse str_replace("<"">"$Strasse);
    $Hausnnummer str_replace("<"">"$Hausnnummer);
    $Ort str_replace("<"">",$Ort);
    $PLZ str_replace("<"">"$PLZ);
    $Telefonnummer str_replace("<"">"$Telefonnummer);
    $Fax str_replace("<"">"$Fax);
    $Mail str_replace("<"">"$Mail);
    $Datum str_replace("<"">"$Datum); 
    jedoch wird mir dann das angezeigt: Notice: Undefined variable.
     

  2. #2
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Was ist wenn jemand einen Doppelnamen wie zum Beispiel "Hans Peter" hat. Dann machst du daraus "HansPeter".

    Ergibt für mich keinen Sinn.

    Wenn du verhindern willst, das jemand NUR ein oder mehrere Leerzeichen eingibt, dann nimm trim.

    Was die zweite "Überprüfung" soll ist mir auch völlig unklar und im ersten Abschnitt steht die Zeile mit dem Vornamen auch noch doppelt drin (hinter Ort).

    Bei der Fehlermeldung wird doch sicher auch angegeben um welche Variable es sich handelt!?
    Geändert von tombe (02.02.12 um 15:37 Uhr)
    Big-A bedankt sich. 
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  3. #3
    Big-A Big-A ist offline Mitglied Bronze
    Registriert seit
    Jan 2012
    Beiträge
    45
    Bei allen zeigt er mir das an. Jedoch hatte ich das Problem ja gestern auch, da lag es dann an einem Tippfehler! Diesen Tippfehler habe ich dann beseitigt und dann funktionierte auch alles ohne probleme. Und jetzt zeigt er mit es wieder an, das die Variable nicht definiert wäre, obwohl es in der selben Datei ist.

    Ok, das ist wirklich unsinnig mit den Leerzeichen, danke das du mich darauf aufmerksam gemacht hast.
    Geändert von Big-A (02.02.12 um 15:40 Uhr)
     

  4. #4
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Wo kommen die Werte der Variablen denn her, aus einem Formular? Dann sind es doch bestimmt $_POST- oder $_GET-Variablen!
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  5. #5
    Avatar von H4ckHunt3r
    H4ckHunt3r H4ckHunt3r ist offline Mitglied Silber
    Registriert seit
    Aug 2011
    Ort
    Ennepetal (NRW)
    Beiträge
    66
    Wie schon gesagt wurde macht das mit den leerzeichen filtern wenig sinn...
    falls du durch das <> das eingeben von html verhindern willst,
    solltest du auf http://de3.php.net/manual/de/function.strip-tags.php zurückgreifen.

    Und das kommentar
    PHP-Code:
    //verhindert alle Sonderzeichen 
    verstehe ich nicht.
    den du filterst ja nur '<' und '>' heraus.

    Und worauf tombe warscheinlich hinaus will,
    ist das du variablen die von ausserhalb des scriptes kommen erstmal darauf prüfen solltest ob diese gesetzt wurden bzw. einen wert enthalten.
    Eine Methode von PHP die sich dazu eignet ist http://de3.php.net/manual/de/function.isset.php

    hoffe ich konnte dir helfen
    Big-A bedankt sich. 
    Lg H4ckHunt3r
    Auf Danke klicken kostet nichts und weh tut es auch nicht ;)
    Meine Homepage | Mein Projekt | Mein Clan

  6. #6
    Big-A Big-A ist offline Mitglied Bronze
    Registriert seit
    Jan 2012
    Beiträge
    45
    @H4ckHunt3r

    ich habe erst einmal nur die beiden Zeichen eingetragen, um zu überprüfen ob es funktioniert, damit ich nicht so viel eingebe und am ende eventuell doch alles löschen muss. Aber danke für den Link bezüglich des verhindern von html-Code

    PHP-Code:
    $ID$_POST["ID"];
        
    $Firma$_POST["Firma"]; 
        
    $Nachname $_POST["Nachname"];
        
    $Vorname $_POST["Vorname"];
        
    $Strasse $_POST["Strasse"];
        
    $Hausnummer $_POST["Hausnummer"];
        
    $PLZ $_POST["PLZ"];
        
    $Ort $_POST["Ort"];
        
    $Telefonnummer $_POST["Telefonnummer"];
        
    $Fax $_POST["Fax"];
        
    $Mail $_POST["Mail"];
        
    $Datum $_POST["Datum"]; 
    liegt das eventuelle an den " "?

    und so habe ich das ganze im Formular angegeben:

    PHP-Code:
      echo "<ol>";
       echo 
    "<fieldset>";
        echo 
    "<legend>Welchen Datensatz m&ouml;chten Sie bearbeiten?</legend>";
            echo 
    "<form method='bearbeiten'>";
            echo 
    'ID: <input type="text" value="'.$row->ID.'" name="ID" /><br />';
            echo 
    'Firma: <input type="text" value="'.$row->Firma.'" name="Firma" /><br />';
            echo 
    'Nachname: <input type="text" value="'.$row->Nachname.'" name="Nachname" /><br />';
            echo 
    'Vorname: <input type="text" value="'.$row->Vorname.'" name="Vorname" /><br />';
            echo 
    'Strasse: <input type="text" value="'.$row->Strasse.'" name="Strasse" /><br />';
            echo 
    'Hausnr.: <input type="text" value="'.$row->Hausnummer.'" name="Hausnummer" /><br />';
            echo 
    'PLZ: <input type="text" value="'.$row->PLZ.'" name="PLZ" /><br />';
            echo 
    'Ort: <input type="text" value="'.$row->Ort.'" name="Ort" /><br />';
            echo 
    'Telefonnummer: <input type="text" value="'.$row->Telefonnummer.'" name="Telefonnummer" /><br />';
            echo 
    'Fax: <input type="text" value="'.$row->Fax.'" name="Fax" /><br  />';
            echo 
    'Mail: <input type="text" value="'.$row->Mail.'" name="Mail" /><br />';        
            echo 
    'Datum: <input type="text" value="'.$row->Datum.'" name="Datum" /><br />';
            echo 
    '<input type="submit" name="speichern" value="speichern">';
        echo 
    "</form>";    
      echo 
    "</ol>";
    echo 
    "</fieldset>"
     

  7. #7
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Keine Ahnung welche Werte ein solches Formular liefert:

    HTML-Code:
    <form method='bearbeiten'>
    Habe ich dir aber gestern auch schonmal geschrieben.

    NACHTRAG: Habe es eben mal so getestet. Das Formular wir mit GET versendet.
    Geändert von tombe (02.02.12 um 16:14 Uhr)
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  8. #8
    Big-A Big-A ist offline Mitglied Bronze
    Registriert seit
    Jan 2012
    Beiträge
    45
    Sorry das falsche kopiert, ich habe da
    PHP-Code:
    echo "<form method='post'>"
    stehen
     

  9. #9
    Big-A Big-A ist offline Mitglied Bronze
    Registriert seit
    Jan 2012
    Beiträge
    45
    Also muss ich anstatt $_POST, $GET verwenden?
     

  10. #10
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Ok, und wo steht der obige Code?

    Wird er vermutlich immer ausgeführt und nicht nur dann wenn das Formular abgeschickt wurde?

    Zu deiner letzten Frage: NEIN wenn du das Formular mit method="Post" abschickst, dann musst du natürlich auch die POST-Variablen verwenden!
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  11. #11
    Avatar von H4ckHunt3r
    H4ckHunt3r H4ckHunt3r ist offline Mitglied Silber
    Registriert seit
    Aug 2011
    Ort
    Ennepetal (NRW)
    Beiträge
    66
    Nein da ist $_POST schon richtig wenn da post bei method drin steht.
    Du solltest aber die werte am besten ihrer natur gemäß filtern anstatt bestimmte Zeichen zu entfernen.

    Beispiel:

    PHP-Code:
        $IDintval($_POST["ID"]); // intval() für zahlenwerte
        
    $PLZ = (preg_match('^[0-9]{5}$'$_POST["PLZ"]) ? $_POST["PLZ"] : ''); // RegEx für PLZ 
    und setze mal um den gesammten code falls du nicht etwas in der art bereits hast vom einlesen bis zum speichern,
    folgende if anweisung:
    PHP-Code:
    if($_POST['speichern'] == 'speichern')
    {
    // [Dein Code hier...]

    Um zu prüfen ob das Formular abgeschickt wurde auf den von tombe genannten Punkt
    Zitat Zitat von tombe
    Wird er vermutlich immer ausgeführt und nicht nur dann wenn das Formular abgeschickt wurde?
    einzugehen.


    ACHJA, und demnächst benutz die Edit oder auch Bearbeiten funktion des Forums... Doppelposts sind ******e ;D
    Big-A bedankt sich. 
    Lg H4ckHunt3r
    Auf Danke klicken kostet nichts und weh tut es auch nicht ;)
    Meine Homepage | Mein Projekt | Mein Clan

  12. #12
    Big-A Big-A ist offline Mitglied Bronze
    Registriert seit
    Jan 2012
    Beiträge
    45
    @H4ckHunt3r

    Danke, jetzt "funktioniert" es ohne das mir Fehler angezeigt werden.

    Jedoch werden die Zeichen nicht verhindert, sondern "geändert". Wenn ich z.B: <table> eingebe, kommt >table> raus.
    Wie kann ich denn sagen, das die nicht mal eingegeben werden dürfen!? bzw. gar nicht erst gespeichert werden
     

  13. #13
    Avatar von H4ckHunt3r
    H4ckHunt3r H4ckHunt3r ist offline Mitglied Silber
    Registriert seit
    Aug 2011
    Ort
    Ennepetal (NRW)
    Beiträge
    66
    um das komplette <table> und andere Tags zu entfernen wie von mir schon erwähnt:
    http://de2.php.net/manual/de/function.strip-tags.php

    am sonsten um auch das <table> einfach als text auszugeben:
    http://de2.php.net/manual/de/function.htmlentities.php

    oder über str_replace die '<' und '>' Zeichen durch nichts ersetzen:
    PHP-Code:
    $string str_replace('<'''$string);
    $string str_replace('>'''$string); 
    geht übrigens auch via RegEx:
    PHP-Code:
    $string preg_replace('/(<|>)/'''$string); 
    so irgendwie dürfte das dan aussehen
    Geändert von H4ckHunt3r (02.02.12 um 17:07 Uhr)
    Big-A bedankt sich. 
    Lg H4ckHunt3r
    Auf Danke klicken kostet nichts und weh tut es auch nicht ;)
    Meine Homepage | Mein Projekt | Mein Clan

  14. #14
    Big-A Big-A ist offline Mitglied Bronze
    Registriert seit
    Jan 2012
    Beiträge
    45
    Herzlichen Danke, jetzt funktioniert es!
     

  15. #15
    Fanseite Fanseite ist offline Mitglied Bronze
    Registriert seit
    Feb 2012
    Beiträge
    33
    Wenn du nur html Tag´s für eine XSS Lücke verhindern willst, dann benutz htmlspecialchars().
     

Ähnliche Themen

  1. Sonderzeichen Fehler mit Curl
    Von Beutel2008 im Forum PHP
    Antworten: 1
    Letzter Beitrag: 20.02.11, 12:04
  2. Ajax Sonderzeichen Fehler
    Von RaVenC im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 20.06.08, 12:42
  3. Eingabe Sonderzeichen verhindern!?
    Von markberg im Forum PHP
    Antworten: 5
    Letzter Beitrag: 11.06.06, 18:35
  4. Antworten: 2
    Letzter Beitrag: 14.04.06, 23:43
  5. Eingabe von Sonderzeichen verhindern
    Von Stiffler im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 03.01.04, 14:15

Stichworte