2016-09-21 6 views
-2

Ich fragte mich, ob jemand mir mit einem kleinen Problem helfen könnte - ich übergebe $_POST durch eine neue Registerkarte mit Javascript aus einem Eingabefeld beim Klicken auf die Tabellenzeile, wird die Funktion akzeptieren $_POST['shift'] als B. Wie auch immer, meine Shifts sind in einem Array und deshalb wollte ich sie als Ints darstellen. Mein Versuch, den Wert von $_POST zu überprüfen, kommt zu kurz, es füllt das Eingabefeld der nächsten Seiten nicht mit dem richtigen intval - es ist standardmäßig auf 0 gesetzt. Ich habe meinen Indexcheck, die Funktion und den var dump eingeschlossen. Jede Hilfe wäre willkommen, vielleicht bin ich nur dumm.

if (isset($_POST['shift'])) { 
    $ShiftSelected = intval($_POST['shift']); 
} elseif ($_POST['shift'] == 'B') { 
    $ShiftSelected = 1; 
} else { 
    $ShiftSelected = 0; 
} 

$(function() { 
    $(".table-row").click(function() { 
    $("#form").attr('action', '?action=HS'); 
    $("#selectDate").val($(this).data("date")); 
    $("#selectShift").val($(this).data("shift")); 
    $("#form").submit(); 
    }); 
}); 

array(4) { 
    ["workcenter"]=> string(1) "0" 
    ["Week"]=> string(2) "38" 
    ["date"]=> string(10) "16-09-2016" 
    ["shift"]=>string(1) "B" 
} 
+0

Sie wahrscheinlich könnten versuchen, 'chr mit()' und 'ord()' in PHP - in Ihrem Fall würden Sie wollen mehr wahrscheinlich 'ord verwenden ('B')' eine ganze Zahl zu erhalten Wert – RamRaider

+0

erwähnenswert, Ihre 'elseif ($ _ POST ['shift'] == 'B') {...}' ist unerreichbar –

+0

Es war eindeutig unerreichbar, zu früh am Morgen. Habe das intval entfernt, da es sich um eine Inhouse-Anwendung handelt, um Informationen für Crews anzuzeigen. Die Injektion ist nicht wirklich ein Problem. Für was es wert ist, werde ich in der Antwort bearbeiten. –

Antwort

0
$ShiftSelected = 0; 

if (isset($_POST['shift'])) { 
    if ($_POST['shift'] == 'B') { 
     $ShiftSelected = 1; 
    } elseif ($_POST['shift'] == 'A') { 
     $ShiftSelected = 0; 
    } 
}