Ich habe den folgenden Code einen Eintrag in der Datenbank zu erstellen: $element_names_array = explode(',', $request->input('element_names')); foreach ($element_names_array as $element) { $data[$element] = $request->input($element); } $model = '\\App\\' . $request->input('connected_model'); return call_user_func_array($model . '::create', $data);
Erstellen eines Modells :: create dynamisch mit call_user_func_array gibt einen Fehler auf Laravel 5.2
Ein Array erstellt wird und auf die call_user_func_array Funktion übergeben, die Trigger Die Methode Model::create()
übergibt das Array als Argument.
Aber aus irgendeinem Grund, direkt nach der call_user_func_array()
wird der Array-Typ in String-Typ konvertiert.
Ich erhalte diesen Fehler und Fehlerprotokoll:
Type error: Argument 1 passed to Illuminate\Database\Eloquent\Model::create() must be of the type array, string given
Fehlerprotokoll
in Model.php line 570 at Model::create('R200500002', 'MALSKDJSNAM123123') at call_user_func_array('\App\RepairOrder::create', array('ro_number' => 'R200500002', 'vin_number' => 'MALSKDJSNAM123123')) in GdmsBotTask.php line 26
Wie Sie feststellen können, ein Array an die call_user_func_array geben wird ... aber Es wird in eine Zeichenfolge konvertiert. Was ist los?
Dieser Code wird nur von einem einzigen Benutzer verwendet ... Das ist auch ein BOT-Skript. Keine Bange. Aber bitte weisen Sie auf die Sicherheitslücke hin ... – notANerdDev
@notANerdDev Nun, Sie erstellen Code aus Benutzereingaben, so dass eine böswillige Person eine Post-Anfrage erstellen kann, die einen neuen Datensatz für jedes Modell in Ihrem Code erstellt, zB Benutzer , Rabatte, Transaktionen usw. (Ich habe keine Ahnung, was Ihre Datenbank enthält, also habe ich einige gruselig klingende ausgewählt!) – Steve
Oh ya !! Lol ... ich sehe das ... ich wusste das irgendwie ... aber wieder ... es ist ein Bot, der die App benutzt ... also ... keine Sorge. – notANerdDev