Sonderzeichen + PHP

  1. Premox

    Premox Thread Starter MacUser Mitglied

    Mitglied seit:
    07.03.2005
    Beiträge:
    39
    Zustimmungen:
    0
    Hallo,

    habe ein Problem mit PHP. Und zwar hab ich ein Script geschrieben, das eine Usereingabe auswertet. Jetzt hat ein User einen Text in dem ein einfaches Anführungszeichen (') und ein Dollar-Zeichen vorkommt. Wenn ich den String also mit " starte, wird der Text nach dem Dollarzeichen nicht angezeigt. Wenn ich ihn mit ' starte, gibts ne Fehlermeldung, da der String ja am zweiten, im Text enthaltenen ' aufhört.

    Gibts eine Funktion, um das zu umgehen?

    Danke im voraus!
     
    Premox, 20.11.2005
    #1
  2. moses_78

    moses_78 MacUser Mitglied

    Mitglied seit:
    08.04.2005
    Beiträge:
    1.264
    Zustimmungen:
    22
    versuchs mal so:
    PHP:
     echo "Hallo ".$variable.", schön dich zu sehen";
    die schreibweise echo "sjfhhsdj $kk"; oder echo 'dfdfd $fff'; ist afaik eh
    unsauber, da php je nach version diesen befehl unterschiedlich interpretiert ;)

    edit: ach ja, und wenn du einfach so dollarzeichen in einen string einbauen
    willst, solltest du ihn mit einem backslash escapen.
     
    moses_78, 20.11.2005
    #2
  3. Premox

    Premox Thread Starter MacUser Mitglied

    Mitglied seit:
    07.03.2005
    Beiträge:
    39
    Zustimmungen:
    0
    Hab mich vllt unklar ausgedrückt:

    Der User kopiert eine Tabelle und fügt diese in ein Textfeld ein, dort wird sie mit explode() auseinandergenommen und in eine DB eingetragen. Wenn jetzt in der Tabelle, was durchaus möglich ist, ein ' oder $ vorkommt, gibts nen Fehler bzw wird die Tabelle nicht vollständing. Ich kann da nichts ändern, das muss alles automatisch passieren, also das escapen von ' und $. Leider kenn ich da keine Funktion zu.
     
    Premox, 20.11.2005
    #3
  4. Jakob

    Jakob MacUser Mitglied

    Mitglied seit:
    05.01.2004
    Beiträge:
    1.067
    Zustimmungen:
    21
    Hi,

    die Funktion nennt sich htmlspecialchars().

    Der Unterschied zwischen echo "text" und echo 'text' ist, dass Text in einfachen Anführungszeichen nur Text (keine Variablen, \n usw.) enthalten darf, mit doppelten Anführungszeichen schon. Deshalb sind einfache ein Stück schneller, da PHP den Inhalt nicht noch mal auf Variablen hin durchsuchen muss.

    Wie Moses schon sagte, ist die beste Form: echo 'text'.$variable.'text'; (einfache Anführungszeichen, dann hast Du auch kein Prob mit $-Zeichen mehr.)
     
    Jakob, 20.11.2005
    #4
  5. dms

    dms

    htmlspecialchars() würde das Problem mit den ' zwar lösen, möglicherweise jedoch neue schaffen. Mit SQL gibts dann zwar keine Probleme, jedoch werden ja absolut alle HTML-Sonderzeichen umgewandelt, was vielleicht garnicht gewünscht ist.

    Die, meiner Meinung nach, bessere Lösung ist folgendes:

    magic_quotes_gpc in der php.ini auf true setzen. Das escaped automatisch alle Quotes( ' und ").

    Falls man an die php.ini nicht ran kommt oder mag, gibts folgende Möglichkeit:

    $_POST['variable'] = (get_magic_quotes_gpc()) ? $_POST['variable'] : addslashes($_POST['variable']);

    Kannst Du auch in einer Schleife durchlaufen und alle übermittelten Werte in einem Rutsch bearbeiten.

    Eine Lösung für die Möchtegern-Variablen haben moses_78 und Jakob ja schon vorgeschlagen. Ich kann das Problem allerdings nicht ganz nachvollziehen. Vom Nutzer übermittelte Texte sollten von PHP eigentlich nicht geparst werden. Evtl. gibts da eine mir unbekannte php.ini-Einstellung die das aktiviert.
    Wenn das Problem anders nicht zu lösen ist könntest Du versuchen den String nochmal durch die Funktion quotemeta() zu jagen. Von der Theorie her dürfte es jedoch nicht viel bringen, da der String schon nicht mehr das $ enthält...teste einfach mal. :)
     
    dms, 20.11.2005
    #5
  6. Jakob

    Jakob MacUser Mitglied

    Mitglied seit:
    05.01.2004
    Beiträge:
    1.067
    Zustimmungen:
    21
    Ich sehe gerade, dass es ja um den DB-Eintrag geht und nicht um die Ausgabe mit PHP.

    Dann ist dms' Lösung klar besser. Man sollte ja keine umgewandelten Zeichen in die DB schreiben. Meine Lösung war für die Ausgabe, und ist vielleicht dann immer noch nützlich.
     
    Jakob, 20.11.2005
    #6
  7. Premox

    Premox Thread Starter MacUser Mitglied

    Mitglied seit:
    07.03.2005
    Beiträge:
    39
    Zustimmungen:
    0
    Danke für die Tipps, habe im PHP-Manual gelesen, das durch Post, Get oder Cookie weitergegebene Daten automatisch escaped werden. Bitte schließen
     
    Premox, 21.11.2005
    #7
  8. dms

    dms

    Aber eben nur wenn die Maqic Quotes in der php.ini "Ja" sagen. Wäre der Wert bei Dir auf true, hättest Du ja das Problem nicht gehabt, oder sehe ich da fwas falsch?
     
    dms, 21.11.2005
    #8
Die Seite wird geladen...
Ähnliche Themen - Sonderzeichen PHP
  1. frogger
    Antworten:
    8
    Aufrufe:
    645
    frogger
    22.02.2013
  2. solidFlex
    Antworten:
    3
    Aufrufe:
    1.528
    wegus
    09.06.2009
  3. Timosaurier
    Antworten:
    4
    Aufrufe:
    548
    Jakob
    24.03.2008
  4. selcuksinan
    Antworten:
    3
    Aufrufe:
    2.564
    Jakob
    26.07.2007
  5. timbajr
    Antworten:
    12
    Aufrufe:
    1.506
    timbajr
    06.12.2006