Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] str_replace funktioniert nach neuer Xampp Installation nicht mehr!

Einklappen

Neue Werbung 2019

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

  • [Erledigt] str_replace funktioniert nach neuer Xampp Installation nicht mehr!

    Hallo an alle

    Ich habe schon seit längerem immer eine gleich Art der Programmierung gemacht. Ich habe vor paar Tage Xampp neu installiert weil der PC formatiert werden musste. Jetzt geht die Funktion str_replace nicht mehr. Vorher ging alles ohne Probleme und die Projekte die ich hatte im htdocs Ordner sind auch die gleichen geblieben.

    Meine Frage:
    Kann es an einer Einstellung in der php.ini liegen oder wo könnte das Problem sein?

    DANKE schon im Voraus für Eure Bemühungen.

  • nikosch
    antwortet
    Zitat von stallone Beitrag anzeigen
    das funktioniert nicht:
    $tag = str_replace("<FONT style=\"FONT-SIZE: 11px; FONT-FAMILY: verdana\">", "", $tag);
    Beim ersten Beispiel nimmt er mir "dada" weg und ersetzt es mit "".
    Beim zweitten Beispiel macht er mir nichts.

    Warum das wohl?

    Wahrscheinlich, weil
    1. "<FONT style=\"FONT-SIZE: 11px; FONT-FAMILY: verdana\">" nicht existiert
    ODER
    2. Magic Quotes auf ON steht und damit " escaped wird.

    [EDIT] Mist, zwei Seiten übersehen :S

    @agrajag: bitte sprich die User doch mit dem Namen an, den sie hier im Forum verwenden. Gut, ich kenne Zergling noch von phpfriend.de, musste aber erstmal überlegen, bis ich den alten Namen mit dem neuen verknüpft hatte. Wie muss das erst Neulingen gehen?!
    Nur so als Bitte.
    Nach der Migration (a.k.a. Assimilation von phpfriend) wird ohnehin nochmal alles anders...

    Einen Kommentar schreiben:


  • Manko10
    antwortet
    Wäre sehr nett, danke!

    Einen Kommentar schreiben:


  • agrajag
    antwortet
    Zitat von Manko10 Beitrag anzeigen
    [OT]
    @agrajag: bitte sprich die User doch mit dem Namen an, den sie hier im Forum verwenden.[/OT]
    Oops, ist mir garnicht aufgefallen - habe einfach unterbewusst "Zergling" getippt ohne groß nachzudenken.
    Danke für den Hinweis - mal schauen ob ich mein Gehirn dazu überreden kann das "Zergling" zu streichen

    Einen Kommentar schreiben:


  • Manko10
    antwortet
    [OT]
    @agrajag: bitte sprich die User doch mit dem Namen an, den sie hier im Forum verwenden. Gut, ich kenne Zergling noch von phpfriend.de, musste aber erstmal überlegen, bis ich den alten Namen mit dem neuen verknüpft hatte. Wie muss das erst Neulingen gehen?!
    Nur so als Bitte.
    [/OT]

    Einen Kommentar schreiben:


  • agrajag
    antwortet
    Zitat von stallone Beitrag anzeigen
    Ich habe lediglich die Funktion magic_quotes_gpc auf Off gestellt und es funktioniert wieder alles wie immer.
    Schön, dass jetzt wieder alles wie erwartet funktioneirt.
    Allerdings solltest du dich zusätzlich mal mit SQL-Injections beschäftigen da dein Code anfällig dafür scheint.

    In der Forensuche findest du einiges dazu. (Die Kurzform lautet: Alle Variablen/Eingaben die du in einem Datenbankquery verwendest musst du vorher prüfen/absichern. z.B. mit mysql_real_escape_string()).

    Ich bedanke mich bei allen für den prompten Einsatz. Ist nicht selbstverständlich. Also Danke nochmals und allen ein gutes gelingen.
    Gern geschen.
    Tipp für's nächste mal: mach es den Helfenden einfacher indem du an der Lösung mitarbeitest oder nachhakst/recherchierst was wie gemeint war. Wir stellen Gegenfragen (meistens ) nicht aus Schikane...

    Einen Kommentar schreiben:


  • stallone
    antwortet
    Hallo agrajag

    Du bist der beste!

    Ich habe lediglich die Funktion magic_quotes_gpc auf Off gestellt und es funktioniert wieder alles wie immer.

    Ich bedanke mich bei allen für den prompten Einsatz. Ist nicht selbstverständlich. Also Danke nochmals und allen ein gutes gelingen.

    Grüsse stallone

    PS. wer von mir eine Private Nachricht erhalten hat, kann sich gerne bei mir melden.

    Einen Kommentar schreiben:


  • agrajag
    antwortet
    Hallo stallone,

    also sehe ich das richtig, dass in deinem $text - String vor den Anführungszeichen jeweils ein Backslash steht?
    hier:
    <FONT style=\"FONT-SIZE: 11px; FONT-FAMILY: verdana\">

    Deine Ersetzung sucht aber nach:
    <FONT style="FONT-SIZE: 11px; FONT-FAMILY: verdana">

    Also ohne die Backslashes...(da die Backslashes die du bei str_replace() stehen hast nur das folgende Anführungszeichen escapen).

    (Wahrscheinlich ist also bei der neuen Installation von dir magic_quotes_gpc auf ON und bei der alten auf OFF, aber das ist wieder nur geraten da du ja nicht verraten willst woher der Inhalt von $text überhaupt kommmt...)

    Einen Kommentar schreiben:


  • stallone
    antwortet
    das omische ist jetzt folgendes:

    das geht
    $text=str_replace("'","&prime;",$text);

    das geht nicht
    $text=str_replace("<FONT style=\"FONT-SIZE: 11px; FONT-FAMILY: verdana\">", "", $text);

    Einen Kommentar schreiben:


  • stallone
    antwortet
    Before:string(10) "Startseite" After:NULL

    <form method="post" onsubmit="save_in_textarea_all();">
    <input type="hidden" name="action" value="submit">
    Before:string(10) "<FONT style=\"FONT-SIZE: 11px; FONT-FAMILY: verdana\">Startseite</FONT>"
    After:NULL<input type="submit" value="Speichern"></form>

    Einen Kommentar schreiben:


  • agrajag
    antwortet
    Zitat von stallone Beitrag anzeigen
    habe es so gemacht und es kam folgendes raus:
    string(294) "Startseite"
    Ist das die Ausgabe vor oder nach str_replace()?
    Bist du dir _sicher_, dass da nur "Startseite" drinsteht - das ist nämlich nicht so - siehe Zerglings Hinweis. Mach mal rechtklick->Quelltext-anzeigen und schau dir an, ob da nicht doch noch ein <font> steht....

    Also er ersetzt die von mir eingegebene Font Geschichte aber trägt es dann trotzdem mit der Font Geschichte in die Datenbank.

    Sieht dann so aus:
    $text=str_replace("<FONT style=\"FONT-SIZE: 11px; FONT-FAMILY: verdana\">","",$text);
    MYSQL_QUERY("UPDATE start_grau SET text='$text' LIMIT 1");
    Das ist immernoch kein vollständiges Beispiel

    Was gibt dir das aus:
    PHP-Code:
    echo 'Before:';
    var_dump($text);
    $text=str_replace("<FONT style=\"FONT-SIZE: 11px; FONT-FAMILY: verdana\">","",$text);
    echo 
    'After:';
    var_dump($text);
    MYSQL_QUERY("UPDATE start_grau SET text='$text' LIMIT 1"); 
    Jetzt ist wohl die Frage warum trägt er das nicht richtig in die Datenbank?[/quote]
    Bitte das Ergebnis (das was in Rechtklick->Quelltext anzeigen) steht hier posten.


    Die Frage woher $text (evtl. über GET/POST?) kommt hast du auch noch nicht beantwortet

    Einen Kommentar schreiben:


  • Chriz
    antwortet
    Wo sind die restlichen 284 Zeichen aus der Ausgabe von var_dump(), wo in den 10 Zeichen von "Startseite" siehst du einen <FONT> Tag, der ersetzt werden koennte, wo ist die WHERE-Bedingung deines UPDATE-Statements?

    Hoer mal wenn wir dir alles aus der Nase ziehen muessen, du uns nicht postest was var_dump() wirklich ausgibt, dann koennen wir dir nicht helfen. Du hattest deine Chance, jetzt geh ich ins Bett. Vielleicht hilft dir derweil jemand anderes ..

    Einen Kommentar schreiben:


  • stallone
    antwortet
    habe es so gemacht und es kam folgendes raus:
    string(294) "Startseite"

    Also er ersetzt die von mir eingegebene Font Geschichte aber trägt es dann trotzdem mit der Font Geschichte in die Datenbank.

    Sieht dann so aus:
    $text=str_replace("<FONT style=\"FONT-SIZE: 11px; FONT-FAMILY: verdana\">","",$text);
    MYSQL_QUERY("UPDATE start_grau SET text='$text' LIMIT 1");

    Jetzt ist wohl die Frage warum trägt er das nicht richtig in die Datenbank?

    Einen Kommentar schreiben:


  • Chriz
    antwortet
    Dann frag doch gleich nach und tu nich so als haettest du es nicht gehoert.

    var_dump() ist eine PHP-Funktion:
    PHP: var_dump - Manual

    PHP-Code:
    <?php
    var_dump
    ($var1$var2, ..);
    ?>
    Du kannst der Funktion beliebig viele Variablen uebergeben, als Antwort bekommst du sie inklusive Typbezeichnung (string/bool/int/..) ausgegeben. So siehst du was in den Variablen aktuell drinsteht. Genau das sollst du mit den Werten machen, die du str_replace() uebergibst. Vergleich dann Zeichenweise, ob der zu ersetzende Wert wirklich dort vorkommt.

    Wenn dir das nicht weiterhilft, poste die Ausgabe von var_dump() hier ins Forum.

    Einen Kommentar schreiben:


  • stallone
    antwortet
    sorry aber ich weis nicht genau was das heisst! var_dump()

    Einen Kommentar schreiben:

Lädt...
X