• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Prüf Formular.

Hay.

Ich habe mich über den Kontext Wechsel informiert und mal probiert anzuwenden, hier mal mein Lösungsansatz:

Ich dachte mich folgendes:

Das inputfeld wird mit Infos gefüttert, anschliessend wird über Post das an mein Formular weitergeleitet und in der variabel $seriennummer gespeichert. Dann müsste es doch mit sinn machen nun die variabel nun mit dem real escape string zu maskieren. Ich hoffe ich habe nicht einen scheiss überlegt wäre mir echt peinlich.

PHP:
    $db = new mysqli('localhost','root','','protokol');
    
    if($db->connect_error):
        echo 'Verbindung Fehlgeschlagen';
    endif;
    
    if(isset($_POST['submit'])):
        $seriennummer         = $_POST['Serial-number-Text'];
        $object             = $_POST['Object'];
        $user                 = $_POST['User'];
        $creator             = $_POST['Creator'];
        $upload                = "images/".$seriennummer.$object."/";             
        
/*#85*/        $seriennummer=mysql_real_escape_string($db, $seriennummer);

nun bekomme ich allerdings diesen Fehler ausgegeben.

Fatal error: Uncaught Error: Call to undefined function mysql_real_escape_string() in C:\xampp\htdocs\taru\pages\test.php:85 Stack trace: #0 C:\xampp\htdocs\taru\index.php(11): require_once() #1 {main} thrown in C:\xampp\htdocs\taru\pages\test.php on line 85



MFG
 
Werbung:
Werbung:
$seriennummer=mysql_real_escape_string($db, $seriennummer);
Wie du ja gemerkt hast, gibt es die Funktion mysql_real_escape_string() nicht (mehr)[1]. Du verwendest mysqli, musst also natürlich auch die entsprechende Funktion dieser Erweiterung verwenden - da du aber objektorientiert arbeitest, muss es allerdings die entsprechende Methode der Klasse sein: $db->real_escape_string($var);

Aber: du brauchst die Funktion gar nicht da du prepared Statements verwendest und den Kontextwechsel damit ausreichend behandelt hast!

Was du allerdings immer noch nicht beachtest ist das potentielle Vorkommen von ../ in Variablen die in Pfaden/Dateinamen eingebaut werden …

[1] ich habe die Seite mal bearbeitet und die mysql_*-Funktionen komplett raus geworfen da die letzte Version, unter der die existiert haben, bereits seit bald zwei Jahren nicht mehr unterstützt wird.
 
Werbung:
Was du allerdings immer noch nicht beachtest ist das potentielle Vorkommen von ../ in Variablen die in Pfaden/Dateinamen eingebaut werden …

Hay ganz Kurtz das ich richtig verstehe, du meinst das nicht jemand ins input Feld zb. sowas schreibt : 123/456 ; und der Code dann / als Verzeichnis anschaut stimmt das? und das gleiche mit .. weil dann ins vorherige Verzeichnis gewechselt wird?

das hätte ich so gelöst (funktioniert sogar hehe)

PHP:
$seriennummer         = str_replace(['+', '-'], '', filter_var($_POST['Serial-number-Text'], FILTER_SANITIZE_NUMBER_INT));
$object             = str_replace(['+', '-'], '', filter_var($_POST['Object'], FILTER_SANITIZE_NUMBER_INT));
 
Zurück
Oben