en utilisant une variable de formulaire avec un script de téléchargement de fichier

StackOverflow https://stackoverflow.com/questions/806910

  •  03-07-2019
  •  | 
  •  

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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top