Frage

Ich verwende PHP und MySQL, um ein grundlegendes Forum zu betreiben. Wenn Benutzer den Apostroph (') oder die Links in ihren Beitrag einfügen, wird die Funktion mySQL_REAL_ESCAPE_STRING zum Text hinzugefügt. Bei der Anzeige des Beitrags funktionieren die Links nicht und alle Apostrophes haben ein vorher.

Ist das Problem, dass ich nichts mache, bevor ich den Text ausgibt, oder ist das Problem, dass ich die Daten nicht richtig reinige, bevor ich an MySQL schreibe?

War es hilfreich?

Lösung

Werden MagicQuotes eingeschaltet? Sie können schnell überprüfen, indem Sie eine PHP -Seite wie SO erstellen:

<?php var_dump(get_magic_quotes_gpc()) ?>

Wenn die Seite so etwas sagt int(1), dann ist der Täter nicht mysql_real_escape_string, aber PHP selbst. Es war eine Sicherheitsfunktion, aber nicht sehr sicher und meistens nur ärgerlich. Bevor Sie jede Variable bereinigen, müssen Sie zunächst das Slashing rückgängig machen Stripslashes.

Andere Tipps

Sie können auch magische Zitate ausschalten, indem Sie Folgendes verwenden:

if ( version_compare(PHP_VERSION, '5.3.0', '<') ) {
    set_magic_quotes_runtime(0);
}

Es wird magische Zitate ausschalten, wenn Ihr Server eine Version von weniger als 5.3.0 ausführt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top