PHP - Rediriger vers une autre page
Ma question est très simple. mais j'ai du mal avec ce trop. Le problème est qu'une fois que j'ai touché le bouton envoyer cette page doit rediriger vers une autre page. Veuillez juste me dire ce que j'ai fait de mal? Parce que j'ai tout essayé.
Code:
Update-docket.php
<?php
//error_reporting(0);
$link = mysqli_connect("localhost", "home_db", "root", "");
//Check connection
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
//Escape user inputs for security
$sql = 'SELECT * FROM prod_details';
$result = mysqli_query($link,$sql);
while ($row = mysqli_fetch_array($result))
{
$Quantity1 = $_POST['p_'.$row['id']. ''];
$id = $row['id'];
$store = $row['rstore'];
//echo $store;
foreach ($_POST as $key => $value)
{}
if(!empty($Quantity1)) {
$query="update prod_details SET rdocket='$Quantity1' WHERE id='$id'";
if(mysqli_query($link, $query)) {
header('Location: /docket-details.php');
exit();
} else {
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
}
}
docket-details.php
<form class="form-horizontal" action="update-docket.php" method="post" name="myform" autocomplete="off">
<button type='submit' name='submit' class='btn c-theme-btn c-btn-square c-btn-uppercase c-btn-bold'>Submit</button>
S'il vous plaît aider!!!
$result
? Où avez-vous définir$result
?- Semble vous utilisez la mauvaise action sur votre formulaire...est-il juste?
- Il y a quelques extra { dans le code
- vous avez "update-details.php" mais vous faites référence à "update-docket.php" dans votre formulaire d'action
- Peut-être u envoyé l'en-tête déjà. Vérifier: stackoverflow.com/a/21229246/10026429 pour plus d'info.
- vous êtes ouvert à l'injection SQL et devrait probablement essayer d'obtenir résolu 🙂
Vous devez vous connecter pour publier un commentaire.
Vous êtes
Location
ligne est incorrecte, de rediriger à l'aide de:https://secure.php.net/manual/en/function.header.php
mise à jour
Je pense que si votre déclaration n'est pas respecté. Essayez d'activer la journalisation des erreurs encore et var_dumping à l'intérieur de chaque conditionnelle de l'article pour voir où réside le vrai problème. Maintenant que vous avez mis à jour votre code pour utiliser
header
il devrait, en théorie, le travail. Mais ma conjecture est $_POST ne retourne pas ce que vous voulez/attendre.Édité!
Essayez ceci:
bien sûr, vous pouvez remplir la totalité de l'url si vous vous référez.
Important: Pas de sortie doit être effectuée avant la ligne, il va générer un en-tête. Pas un seul
echo
avant l'envoi de l'en-tête de réponse!Il devrait être quelque chose comme ça:
'
avant la/
de l'urlvous avez "update-details.php" mais vous faites référence à "update-docket.php" dans votre formulaire d'action. Si l'action du formulaire redirige vers un autre fichier.
Comme indiqué par @thisGuyHasTwoThumbs votre Emplacement en ligne est incorrecte.
Vous aussi vous voulez
exit()
car elle empêche toute exécution de code après cette ligne.https://secure.php.net/manual/en/function.header.php
https://secure.php.net/manual/en/function.exit.php
Jus pour plus de détails:
Wil look beaucoup plus propre et plus facile à lire comme:
Garde MySQL mots dans la capitale. Enrouler la colonne et noms de table dans les backticks permettra d'éviter "MySQL serverd erreur de mot"
Rendre:
La variable
$Quantity1
est ouvert pour injection SQL. Pour résoudre ce problème, vous pouvez échapper la variable si c'est une chaîne, mais vous devez utiliser déclaration préparée à l'avance.Il est également préférable de ne pas afficher quoi que ce soit avant l'en-tête() .. par exemple, ne pas echo "ERREUR: ne Peut pas en mesure d'exécuter $sql. ". mysqli_error($link);
en-tête(localisation:pagename avec l'extension)
Si le code ci-dessus ne fonctionne pas correctement et il donne erreur "en-tête ne change pas", mettez vous en dessous de la ligne sur le haut de la page et en bas de la page, respectivement
ob_start() - sur le haut de la page
ob_end_flush() - en bas de la page