Helfen zu verstehen, magic_quotes_gpc()
lernte ich diesen PHP-code aus einem tutorial zum hochladen von Dateien
<form method="post" enctype="multipart/form-data">
<input name="userfile" type="file" id="userfile">
</form>
<?php
if (isset($_POST['upload']) && $_FILES['userfile']['size'] > 0) {
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];
$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);
if (!get_magic_quotes_gpc()) {
$fileName = addslashes($fileName);
}
include 'library/config.php';
include 'library/opendb.php';
$query = "INSERT INTO upload (name, size, type, content ) ".
"VALUES ('$fileName', '$fileSize', '$fileType', '$content')";
mysql_query($query) or die('Error, query failed');
include 'library/closedb.php';
jetzt verstehe ich, jede Funktion und alles, was durch die Verwendung der php-Dokumentation
AUßER
get_magic_quotes_gpc()
- WAS ist es? Was tut es?
- Ist es eseential? Wenn ja, gibt es einen Ersatz für diese?
- das PHP-Handbuch sagt "Diese Funktion VERALTET seit PHP 5.3.0. Unter Berufung auf diese Funktion dringend abgeraten.". Aufwändige bitte?
- Gibt es nicht eine Möglichkeit zum hochladen von Dateien (web -) server harDisk und links zu Ihnen..
- Dieser code ist anfällig für sql-injection-unabhängig von magic_quotes, sollten Sie ihm einen [Sicherheit] - tag, wenn Sie wollen eine bessere Antwort. Wer schrieb das nicht verstehen, php oder Sicherheit.
- auch wenn verbieten Eingang " (Zitat) Charakter in meinem input(Textfeld) dann werde ich sicher SQL-injection würde ich nicht...
Du musst angemeldet sein, um einen Kommentar abzugeben.
get_magic_quotes_gpc() ist eine Funktion, die überprüft die Konfiguration (php.ini) und gibt 0 zurück, wenn magic_quotes_gpc ausgeschaltet ist (sonst gibt es 1).
Wenn magic_quotes an sind, werden alle '(einzelne Anführungszeichen), " (double quote), \ (backslash) und NULs sind mit Backslashes automatisch. Dies ist um zu verhindern, dass alle Arten von injection-Sicherheit.
In deinem Fall der code überprüft, ob die Einstellung deaktiviert ist und fügt slashes richtig zu entkommen, die Inhalte, auf SQL-injection verhindern.
Wie Sie gesagt haben - dieses feature ist als veraltet markiert und wird sicherlich entfernt werden, in der Zukunft (in der Tat, Sie entfernt es in PHP6).
Die alternative ist die Flucht der Daten zur Laufzeit als erforderlich
mysql_real_escape_string
). Und zweitens, nie verwenden (magic_quotes_gpc
). Wenn die Funktion true zurückgibt (es ist aktiviert), laufenstripslashes
auf alle Eingaben. Dann entweder binden Sie Ihre params über eine vorbereitete Abfrage, oder verwenden Siemysql_real_escape_string/mysqli::real_escape_string
. die sich nicht aufmagic_quotes_gpc
... Es gibt einen Grund, es ist veraltet... (und Ihr code gepostet der Frage ist anfällig, weil, dass)...nach der Lektüre Ihrer post und alle Antworten und Kommentare, ich denke, diese Funktion kann helfen,