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

Prüf Formular.

PHP:
move_uploaded_file($_FILES["inside-Img"]["tmp_name"], "images/".$seriennummer-$object."/".$seriennummer."-Innen.jpg");
Wenn der Code anständig formatiert wäre, würde dir auffallen dass zwischen $seriennummer und $object hier ein Minus-Operator steht, ein paar Zeilen weiter oben aber ein Punkt als Verknüpfungsoperator und noch weiter oben bei mkdir ein Minus als String. Definiere Pfad/Dateinamen genau einmal in Variablen und verwende diese dann im weiteren Code immer wieder - das ist nicht der erste Kopierfehler in deinem Code, du müsstest doch inzwischen gemerkt haben dass deine Vorgehensweise fehleranfällig ist.

Und warum schreibst du bei den "-Innen.jpg"-Bildern den letzten Teil des Namens (das i) groß, bei allen anderen Bildern aber klein?
 
Werbung:
Ein hoffnungsloser Fall!

Man hat dir gesagt, dass deine gesetzten Datentypen in der DB völlig daneben sind, aber du ignorierst das konsequent

Außerdem postest du den Quellcode unformatiert und die Fehlerzeilen passen nicht zu dem Quellcode.

Und warum du es dir selber schwer machst, weiß der Geier!

Spaltennamen:
`serialnumber`, `type`, `controller`, `build`, `inside`, `top`, `stick`, `snumber`, `topbag`

Variablennamen:
$seriennummer,$object,$user,$creator,$innenJpg,$obenJpg,$steckerJpg,$seriennummerJpg,$deckelJpg
 
Ein hoffnungsloser Fall!

Man hat dir gesagt, dass deine gesetzten Datentypen in der DB völlig daneben sind, aber du ignorierst das konsequent

Außerdem postest du den Quellcode unformatiert und die Fehlerzeilen passen nicht zu dem Quellcode.

Und warum du es dir selber schwer machst, weiß der Geier!

Spaltennamen:
`serialnumber`, `type`, `controller`, `build`, `inside`, `top`, `stick`, `snumber`, `topbag`

Variablennamen:
$seriennummer,$object,$user,$creator,$innenJpg,$obenJpg,$steckerJpg,$seriennummerJpg,$deckelJpg


Hay.

Ich habe es oben bereits mal erwähnt das ich den datentyp nochnicht nicht geendert habe, der grund wie ich gesagt habe will ich erst die fehler beheben, zum mit den fehler Zeilen stimme ich dir zu daran müsste ich denken sry.

Meintest du mit formatieren so wie es nun ist?

Hatte das bis jetzt eigentlich immer so weiss nicht was da passiert ist.

Findest du denn meinen Ansatz zuerst die fehler beheben und dann wens funktioniert alles anpassen?

Ich dachte mir dabei dass kann ich dann Schritt für schritt machen das wen ich etwas geändert habe gleich sehe was nun falsch ist?

Ich werde sobald ich zuhause bin die zeilen noch vetmekrken
 
Zuletzt bearbeitet:
Werbung:
Wenn der Code anständig formatiert wäre, würde dir auffallen dass zwischen $seriennummer und $object hier ein Minus-Operator steht, ein paar Zeilen weiter oben aber ein Punkt als Verknüpfungsoperator und noch weiter oben bei mkdir ein Minus als String. Definiere Pfad/Dateinamen genau einmal in Variablen und verwende diese dann im weiteren Code immer wieder - das ist nicht der erste Kopierfehler in deinem Code, du müsstest doch inzwischen gemerkt haben dass deine Vorgehensweise fehleranfällig ist.

Und warum schreibst du bei den "-Innen.jpg"-Bildern den letzten Teil des Namens (das i) groß, bei allen anderen Bildern aber klein?
Hay das mit dem I weiss ich selbst nicht genau.

Verstehe ich dich dan richtig das du für den pfad würdest inprinzip aus 2 variablen 1ne definieren?
Würde sicher logischer hab ich nie drübernachgedacht.

Das mit dem minus ist mir bewusst ich war da etwas am rum tüffteln mit dem mkdir, ich habe in einem tutorial nachgelesen aber falsch verstanden.
Weil ich abr wider off musste nicht mehr geändert.
 
Ich wollte noch kurtz etwas zu mir sagen.

Och habe absolut keine ahnung von php und mysql, ich versuche es hier zu lernen.

Ich will nicvt respektlos wirken mit meiner rechtschreibung oder weill ich nicht gleich jeden link verstehe, das ligt einerseits an meiner Legasthenie und das ich teilweise noch nicht verstehe was in den post steht und dann andere post lesen muss das ich verstehe um was es geht. Ich bitte daher um Verständnis.

Ich gebe mir mühe und ich weiss das ihr euch auch mühe gibt und dafür bin ich wirklich dankbar.


Mfg
 
Och habe absolut keine ahnung von php und mysql, ich versuche es hier zu lernen.
Ein Forum ist aber nicht dafür da, jemandem die Grundlagen zu vermitteln, denn dafür gibt es massenhaft Tutorials im Netz und die Doku ist mit ihren vielen Beispielen sehr nützlich. Und wenn man eine Funktion nicht versteht, kann man diese mit einem Testscript besser testen, als wenn man das in einem größeren Projekt einbaut und sich dann wundert, wenn nichts funktioniert.

das ligt einerseits an meiner Legasthenie
Das tut mir leid für dich, aber dann nutze eine Rechtschreibprüfung in deinem Browser.
 
Werbung:
Ein Forum ist aber nicht dafür da, jemandem die Grundlagen zu vermitteln, denn dafür gibt es massenhaft Tutorials im Netz und die Doku ist mit ihren vielen Beispielen sehr nützlich. Und wenn man eine Funktion nicht versteht, kann man diese mit einem Testscript besser testen, als wenn man das in einem größeren Projekt einbaut und sich dann wundert, wenn nichts funktioniert.


Das tut mir leid für dich, aber dann nutze eine Rechtschreibprüfung in deinem Browser.


Hay,

ich weiss darum dauert es auch immer solange bis ich mich wider melde, ich suche was versuche es zu verstehen und dann damit zu arbeiten, aber ich finde es gibt viele Kleinigkeiten die logisch wären sehe ich erst bzw verstehe ich erst wenn ihr mich darauf aufmerksam gemacht habt.

Bestes Beispiel ist der post #71 von

tk1234


ich verstehe was er gemeint hat und versucht umzusetzen, bin noch nicht fertig aber wollte das kurtz teilen weil ich auch die Zeilen nummeriert habe.

MFG:


PHP:
<?php
/*#72*/    $db = new mysqli('localhost','root','','protokol');
/*#73*/   
/*#74*/    if($db->connect_error):
/*#75*/        echo 'Verbindung Fehlgeschlagen';
/*#76*/    endif;
/*#77*/   
/*#78*/    if(isset($_POST['submit'])):
/*#79*/        $seriennummer         = $_POST['Serial-number-Text'];
/*#80*/        $object             = $_POST['Object'];
/*#81*/        $user                 = $_POST['User'];
/*#82*/        $creator             = $_POST['Creator'];
/*#83*/
//verzeichnis generieren
/*#85*/        mkdir("images/$seriennummer-$object");
/*#86*/
/*#87*/        $innenJpg            = "images/".$seriennummer.$object."/".$seriennummer."-Innen.jpg";
/*#88*/        $obenJpg            = "images/".$seriennummer.$object."/".$seriennummer."-oben.jpg";
/*#89*/        $steckerJpg            = "images/".$seriennummer.$object."/".$seriennummer."-stecker.jpg";
/*#90*/        $seriennummerJpg    = "images/".$seriennummer.$object."/".$seriennummer."-seriennummer.jpg";
/*#91*/        $deckelJpg            = "images/".$seriennummer.$object."/".$seriennummer."-deckel.jpg";
/*#92*/
//Bilder Upload
/*#94*/    move_uploaded_file($_FILES["inside-Img"]["tmp_name"], "$innenJpg");
/*#95*/        move_uploaded_file($_FILES["top-Img"]["tmp_name"], "$obenJpg");
/*#96*/        move_uploaded_file($_FILES["plug-legend-img"]["tmp_name"], "$steckerJpg");
/*#97*/        move_uploaded_file($_FILES["Serial-number-Img"]["tmp_name"], "$seriennummerJpg");
/*#98*/        move_uploaded_file($_FILES["Top-Bag-img"]["tmp_name"], "$deckelJpg");
    //Absenden
/*#100*/    $absenden = $db->prepare("INSERT INTO `kontrolliert`(`serialnumber`, `type`, `controller`, `build`, `inside`, `top`, `stick`, `snumber`, `topbag`, `date`) Values (?,?,?,?,?,?,?,?,?,NOW())");
/*#101*/    $absenden->bind_param('iisssssss',$seriennummer,$object,$user,$creator,$innenJpg,$obenJpg,$steckerJpg,$seriennummerJpg,$deckelJpg);
    

/*#104*/    $absenden->execute();
        
    endif;

Ich hoffe das ist gut so
 
Du musst auch richtig hinsehen!

"images/$seriennummer-$object");
"images/".$seriennummer.$object."/".$seriennummer."-Innen.jpg";

Fällt dir da nichts auf?
 
Ich hoffe das ist gut so
Nein. Du verwendest jetzt zwar die Variablen mit Pfad/Dateiname der Bilder, den Pfad schreibst du aber immer noch jedesmal einzeln hin. Definiere vor mkdir eine Variable mit dem Pfad und verwende die dann an jeder Stelle an der du den Pfad brauchst. Und Anführungszeichen um eine einzelne Variable (bei dir als zweiter Parameter von move_uploaded_file) waren schon immer Unsinn, keine Ahnung wo der Blödsinn her kommt …

Dein Sicherheitsproblem hast du allerdings immer noch nicht gelöst - probier einfach mal aus was passiert wenn du am Anfang der Seriennummer ein "../" mit eingibst …

PS: stimmt, der Unterschied in den Pfaden ist ja immer noch da, das würde sich erledigen wenn man den Pfad in eine Variable steckt.
 
Werbung:
Nein. Du verwendest jetzt zwar die Variablen mit Pfad/Dateiname der Bilder, den Pfad schreibst du aber immer noch jedesmal einzeln hin. Definiere vor mkdir eine Variable mit dem Pfad und verwende die dann an jeder Stelle an der du den Pfad brauchst. Und Anführungszeichen um eine einzelne Variable (bei dir als zweiter Parameter von move_uploaded_file) waren schon immer Unsinn, keine Ahnung wo der Blödsinn her kommt …

Dein Sicherheitsproblem hast du allerdings immer noch nicht gelöst - probier einfach mal aus was passiert wenn du am Anfang der Seriennummer ein "../" mit eingibst …

PS: stimmt, der Unterschied in den Pfaden ist ja immer noch da, das würde sich erledigen wenn man den Pfad in eine Variable steckt.

Achso ja das vereinfacht es nochmals deutlich dast stimmt werde ich mirgen so ändern danke.

Das sicherheits problem hab ich noch nicht anschauen können bin noch am kontext wechsrl lesen
 
Hay.

Ich habe nun mal folgendes gemacht:


1. MYSQL Seriennummer und Typ auf varchar mit max., 7 Zeichen- ( habe gelesen das man für einen Pfad am besten varchar nimmt mit max 65535 zeichen was meint ihr dazu?
2. vor mkdir eine variable für den pfad.

PHP:
<?php
/*#72*/    $db = new mysqli('localhost','root','','protokol');
/*#73*/    
/*#74*/    if($db->connect_error):
/*#75*/        echo 'Verbindung Fehlgeschlagen';
/*#76*/    endif;
/*#77*/    
/*#78*/    if(isset($_POST['submit'])):
/*#79*/        $seriennummer         = $_POST['Serial-number-Text'];
/*#80*/        $object             = $_POST['Object'];
/*#81*/        $user                 = $_POST['User'];
/*#82*/        $creator             = $_POST['Creator'];
            $upload                = "images/".$seriennummer.$object."/";             
/*#83*/
//verzeichnis generieren
/*#85*/        mkdir($upload);

/*#86*/
/*#87*/        $innenJpg            = $upload.$seriennummer."-Innen.jpg";
/*#88*/        $obenJpg            = $upload.$seriennummer."-oben.jpg";
/*#89*/        $steckerJpg            = $upload.$seriennummer."-stecker.jpg";
/*#90*/        $seriennummerJpg    = $upload.$seriennummer."-seriennummer.jpg";
/*#91*/        $deckelJpg            = $upload.$seriennummer."-deckel.jpg";
/*#92*/
//Bilder Upload
/*#94*/        move_uploaded_file($_FILES["inside-Img"]        ["tmp_name"], $innenJpg);
/*#95*/        move_uploaded_file($_FILES["top-Img"]            ["tmp_name"], $obenJpg);
/*#96*/        move_uploaded_file($_FILES["plug-legend-img"]    ["tmp_name"], $steckerJpg);
/*#97*/        move_uploaded_file($_FILES["Serial-number-Img"]    ["tmp_name"], $seriennummerJpg);
/*#98*/        move_uploaded_file($_FILES["Top-Bag-img"]        ["tmp_name"], $deckelJpg);
    //Absenden
/*#100*/    $absenden = $db->prepare("INSERT INTO `kontrolliert`(`serialnumber`, `type`, `controller`, `build`, `inside`, `top`, `stick`, `snumber`, `topbag`, `date`) Values (?,?,?,?,?,?,?,?,?,NOW())");
/*#101*/    $absenden->bind_param('iisssssss',$seriennummer,$object,$user,$creator,$innenJpg,$obenJpg,$steckerJpg,$seriennummerJpg,$deckelJpg); 
    

/*#104*/    $absenden->execute();

Dadurch hat sich auch meine error liste deutlich verkürtzt danke!


3. Habe ich gelesen wie das mit dem Kontext Wechsel gemeint ist, nun bin ich mir aber nicht sicher ob ich es richtig verstehe, ich muss alles was über Post reinkommt maskieren das keine eingegeben Zeichen den code beinflussen können stimmt das so?



MFG
 
Zuletzt bearbeitet:
vor mkdir eine variable für den pfad.
PHP:
mkdir("images/$seriennummer-$object");

Und warum nutzt du die Variable an dieser Stelle nicht? Und auf das Minus-Zeichen bist du auch schon hingewiesen worden.
Du strapazierst die Geduld der Helfer, wenn du nicht mitdenkst und Hinweise ignorierst.
 
Werbung:
PHP:
mkdir("images/$seriennummer-$object");

Und warum nutzt du die Variable an dieser Stelle nicht? Und auf das Minus-Zeichen bist du auch schon hingewiesen worden.
Du strapazierst die Geduld der Helfer, wenn du nicht mitdenkst und Hinweise ignorierst.

hatte es in diesem moment gemerkt und bearbeitet du warst nur etwas zu schnell
 
Und Anführungszeichen um eine einzelne Variable (bei dir als zweiter Parameter von move_uploaded_file) waren schon immer Unsinn, keine Ahnung wo der Blödsinn her kommt …
Auch das hast du ignoriert!
PHP:
/*#85*/        mkdir("$upload");

/*#86*/
/*#87*/        $innenJpg            = $upload.$seriennummer."-Innen.jpg";
/*#88*/        $obenJpg            = $upload.$seriennummer."-oben.jpg";
/*#89*/        $steckerJpg            = $upload.$seriennummer."-stecker.jpg";
/*#90*/        $seriennummerJpg    = $upload.$seriennummer."-seriennummer.jpg";
/*#91*/        $deckelJpg            = $upload.$seriennummer."-deckel.jpg";
/*#92*/
//Bilder Upload
/*#94*/        move_uploaded_file($_FILES["inside-Img"]["tmp_name"], "$innenJpg");
/*#95*/        move_uploaded_file($_FILES["top-Img"]["tmp_name"], "$obenJpg");
/*#96*/        move_uploaded_file($_FILES["plug-legend-img"]["tmp_name"], "$steckerJpg");
/*#97*/        move_uploaded_file($_FILES["Serial-number-Img"]["tmp_name"], "$seriennummerJpg");
/*#98*/        move_uploaded_file($_FILES["Top-Bag-img"]["tmp_name"], "$deckelJpg");
 
Werbung:
Auch das hast du ignoriert!
PHP:
/*#85*/        mkdir("$upload");

/*#86*/
/*#87*/        $innenJpg            = $upload.$seriennummer."-Innen.jpg";
/*#88*/        $obenJpg            = $upload.$seriennummer."-oben.jpg";
/*#89*/        $steckerJpg            = $upload.$seriennummer."-stecker.jpg";
/*#90*/        $seriennummerJpg    = $upload.$seriennummer."-seriennummer.jpg";
/*#91*/        $deckelJpg            = $upload.$seriennummer."-deckel.jpg";
/*#92*/
//Bilder Upload
/*#94*/        move_uploaded_file($_FILES["inside-Img"]["tmp_name"], "$innenJpg");
/*#95*/        move_uploaded_file($_FILES["top-Img"]["tmp_name"], "$obenJpg");
/*#96*/        move_uploaded_file($_FILES["plug-legend-img"]["tmp_name"], "$steckerJpg");
/*#97*/        move_uploaded_file($_FILES["Serial-number-Img"]["tmp_name"], "$seriennummerJpg");
/*#98*/        move_uploaded_file($_FILES["Top-Bag-img"]["tmp_name"], "$deckelJpg");[/
[/QUOTE]

Hay, wie gesagt arbeite ich daran ich habe mir eine to do liste gemacht was ich alles verbessern muss und welche fragen mir aufgekommen sind.

Ich habe daher bewusst vorhin punkte die ich bereits abgearbeitet habe aufgelistet.
 
Dann führe bitte alle Korrekturen durch, bevor du den Quellcode postest. Ansonsten sehen wir immer wieder die gleichen Macken, das macht keinen Sinn!
 
mkdir("$upload");
Die Anführungszeichen an dieser Stelle sind und bleiben Unsinn, das habe ich schon mal geschrieben!
3. Habe ich gelesen wie das mit dem Kontext Wechsel gemeint ist, nun bin ich mir aber nicht sicher ob ich es richtig verstehe, ich muss alles was über Post reinkommt maskieren das keine eingegeben Zeichen den code beinflussen können stimmt das so?
Nein, so ganz stimmt das nicht. Ja, du musst Daten die von außen kommen mit besonderer Vorsicht behandeln, in deinem Code musst du unbedingt noch "../" rausfiltern sonst kann man die Dateien sonst wo hin schreiben (sofern PHP da Schreibrechte hat).
Generell musst du aber immer wenn sich der Kontext von Daten ändert diese entsprechend behandeln: z.B. wenn du Daten in den HTML-Code ausgibst, musst du diese mit htmlspecialchars() behandeln damit z.B. <a> keinen Link erzeugt. Die Beispiele für verschiedene Kontextwechsel sind im zweiten Teil des von mir verlinkten Artikels auch ausführlich beschrieben.
 
Werbung:
Die Anführungszeichen an dieser Stelle sind und bleiben Unsinn, das habe ich schon mal geschrieben!

Nein, so ganz stimmt das nicht. Ja, du musst Daten die von außen kommen mit besonderer Vorsicht behandeln, in deinem Code musst du unbedingt noch "../" rausfiltern sonst kann man die Dateien sonst wo hin schreiben (sofern PHP da Schreibrechte hat).
Generell musst du aber immer wenn sich der Kontext von Daten ändert diese entsprechend behandeln: z.B. wenn du Daten in den HTML-Code ausgibst, musst du diese mit htmlspecialchars() behandeln damit z.B. <a> keinen Link erzeugt. Die Beispiele für verschiedene Kontextwechsel sind im zweiten Teil des von mir verlinkten Artikels auch ausführlich beschrieben.


ööö die Anführungszeichen sind mittlerweile längst weg seit Post #85

achso dann muss ich nochmals lessem damke
 
Zurück
Oben