Patrick Canterino: Form-Mailer codiert Anführungszeichen

Hallo Forum!

Ich schreibe zur Zeit einen kleinen Form-Mailer in PHP. Er funktioniert ganz gut.
Mich stört allerdings, dass in der fertigen Mail vor Anführungszeichen und Apostrophs ein Backslash steht.
Weiß zufällig jemand, wie man das umgehen kann?

Viele Grüße

Patrick Canterino

  1. hi patrick,
    bin zwar selber anfänger in php,
    aber soviel ich weis hat das was mit den strings zu tun.
    ist irgendwie so ähnlich wie in perl.
    genaueres weis ich aber auch nicht.

    mfg
    sven

    tipp: schau mal unter dem partner projekt self php nach, da steht bestimmt der grund drin.

    1. Hallo Sven,

      bin zwar selber anfänger in php,
      aber soviel ich weis hat das was mit den strings zu tun.

      Das ist mir auch klar.

      Viele Grüße

      Patrick Canterino

  2. Moin!

    Ich schreibe zur Zeit einen kleinen Form-Mailer in PHP. Er funktioniert ganz gut.
    Mich stört allerdings, dass in der fertigen Mail vor Anführungszeichen und Apostrophs ein Backslash steht.
    Weiß zufällig jemand, wie man das umgehen kann?

    Gratulation, du hast soeben ein Feature von PHP entdeckt, was es relativ unmöglich macht, durch geschickten Code PHP-angebundene Datenbanken zu löschen.

    Die Funktion stripslashes() ist dein Freund.

    - Sven Rautenberg

    1. Hallo Sven,

      Gratulation, du hast soeben ein Feature von PHP entdeckt, was es relativ unmöglich macht, durch geschickten Code PHP-angebundene Datenbanken zu löschen.

      Häh?

      Die Funktion stripslashes() ist dein Freund.

      Danke! Es funktioniert!

      Viele Grüße

      Patrick Canterino

      1. Hoi,

        Gratulation, du hast soeben ein Feature von PHP entdeckt, was es relativ
        unmöglich macht, durch geschickten Code PHP-angebundene Datenbanken zu
        löschen.

        Häh?

        Nun, stell dir vor, du uebergibst bei einer Datenbank-Suche den Parameter where.
        Mit dem Parameter moechtest du die Where-Bedinung einschraenken:

        mysql_query('SELECT felder FROM tabelle WHERE feld = "'.$where.'"') or die(mysql_error());

        Jetzt gebe ich als Suchbegriff den folgenden Parameter ein:

        abc"; DROB DATABASE datenbankname; DELETE FROM tabelle WHERE feld = "abc

        So wird zuerst die Query ausgefuehrt, die durch das 'where' eingeschraenkt wird.
        Dann wuerde sie durch das ; beendet, so dass die *eigentliche* Query so
        aussieht:

        SELECT felder FROM tabelle WHERE feld = "abc"; DROB DATABASE datenbankname; DELETE FROM tabelle WHERE feld = "abc"

        Mit anderen Worten: die Datenbank mit dem Namen 'datenbankname' wuerde
        geloescht, sofern du sie loeschen *darfst*. Wenn nicht, wuerden alle Datensaetze
        geloescht aus der Tabelle 'tabelle'.

        Das ganze wird durch ein PHP-Feature (naja) names 'Magic Quotes' verhindert:
        die Anfuehrungs-Striche werden gequotet. So stuende jetzt mit 'Magic Quotes'
        auf on die folgende Query da:

        SELECT felder FROM tabelle WHERE feld = "abc"; DROB DATABASE datenbankname; DELETE FROM tabelle WHERE feld = "abc"

        Das sieht doch schon viel freundlicher aus? :-)

        Gruesse,
         CK