en utilisant une variable de formulaire avec un script de téléchargement de fichier
Question
J'utilise ce formulaire comme un formulaire de téléchargement de fichier (dans le cadre d'un script php plus volumineux, $ pk est assaini dans la réalité):
<?php
if (isset($_GET["pk"]))
{ $pk = $_GET["pk"];}
echo '<form action="up.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<input type="hidden" name="pk" value="$pk">
<br />
<input type="submit" name="submit" value="Submit" />
</form>';
?>
J'utilise le code suivant (extrêmement réduit) pour gérer le téléchargement. Toutes les erreurs de syntaxe sont le résultat du tabificateur que j'ai utilisé.
<?php
if (isset($_GET["pk"])) {
$pk = $_GET["pk"];
}
$con = mysqli_connect("localhost","x","x", "x");
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
move_uploaded_file($_FILES["file"]["tmp_name"],
"./" . $_FILES["file"]["name"]);
echo "Stored in: " . "./" . $_FILES["file"]["name"];
$fileQuery = "INSERT INTO FILES VALUES (?, ?)";
if ($fileInsert = $con->prepare($fileQuery)) {
$fileInsert->bind_param("ss", $pk, $_FILES["file"]["name"]);
$fileInsert->execute();
$fileInsert->close();
} else {
print_r($con->error);
}
?>
Ce que j'aimerais savoir, c'est comment accéder à $ pk. Est-il déjà passé au code de traitement avec le formulaire?
La solution
Suggestion: $pk
n'est pas défini.
Essayez donc d'utiliser $_REQUEST['pk']
au lieu de _GET
De plus, les guillemets simples dans votre écho n'évalueront pas $ pk. Modifier
input type="hidden" name="pk" value="$pk"
à
input type="hidden" name="pk" value="' . $pk . '"
Cheers, T.
Autres conseils
$_POST['pk']
mais vous verrez $pk
je suppose, car vous utilisez des guillemets simples pour faire écho à la chaîne.