l'en-tête de localisation ne fonctionne pas dans mon code php
j'ai ce code,pourquoi mon en-tête de localisation ne fonctionne pas?
son une forme de mise à jour et la modification et la suppression de quelques pages dans mon panneau de configuration...et j'ai une index.php fichier dans le même dossier de la forme.php...toute aide, s'il vous plaît?()j'ai essayé de mettre la tête à la suite de la modification et la suppression...et encore d'aller sur le formulaire de la page de l'index...
<?php
include "../../includes/site_includes.php";
//send
if ((isset($_POST["send"])) && ($_POST["send"] == 1)) {
$pageid = $_POST["page_id"];
$pagetitle = $_POST["page_title"];
$nameinmenu = $_POST["page_menu_name"];
$nameinurl = $_POST["page_name_url"];
$link = $_POST["page_link"];
$picture = $_POST["page_pic"];
$desc = $_POST["page_desc"];
$content = $_POST["page_content"];
}
if ((isset($_POST["act"])) && ($_POST["act"] == "add")) {
$sql = insertpage();
if ($result = $mysqli->prepare($sql)) {
$result->bind_param("sssssss", $pagetitle, $nameinmenu, $nameinurl, $link, $picture, $desc, $content);
$result->execute();
$result->store_result();
$rows = $result->num_rows;
}
}
////edit
if ((isset($_GET["act"])) && ($_GET["act"] == "edit")) {
$sql = getfrompages();
if ($result = $mysqli->prepare($sql)) {
$rekza = $_GET["id"];
$result->bind_param("i", $rekza);
$result->execute();
$result->store_result();
$rowsZ = $result->num_rows;
}
if ($rowsZ > 0) {
$row = fetch($result);
$pageid = $row[0]["page_id"];
$pagetitle = $row[0]["page_title"];
$nameinmenu = $row[0]["page_menu_name"];
$nameinurl = $row[0]["page_name_url"];
$link = $row[0]["page_link"];
$picture = $row[0]["page_pic"];
$desc = $row[0]["page_desc"];
$content = $row[0]["page_content"];
}
}
if ((isset($_GET["act"])) && ($_GET["act"] == "delete")) {
$thedelid = $_GET["id"];
$sql2 = delpage();
if ($result2 = $mysqli->prepare($sql2)) {
$result2->bind_param("i", $thedelid);
$result2->execute();
$result2->store_result();
$rowsZ2 = $result2->num_rows;
}
}
header('location: index.php');
exit();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> pages add </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
</head>
<body>
<form method="post" action="">
<table>
<tr>
<td style="font-weight:bold;">title</td>
<td><input type="text" name="page_title" value="<?=$pagetitle?>" /></td>
</tr>
<tr>
<td style="font-weight:bold;">name in menu</td>
<td><input type="text" name="page_menu_name" value="<?=$nameinmenu?>" /></td>
</tr>
<tr>
<td style="font-weight:bold;">name in url</td>
<td><input type="text" name="page_name_url" value="<?=$nameinurl?>" /></td>
</tr>
<tr>
<td style="font-weight:bold;">link</td>
<td><input type="text" name="page_link" value="<?=$link?>" /></td>
</tr>
<tr>
<td style="font-weight:bold;">picture</td>
<td><input type="text" name="page_pic" value="<?=$picture?>" /></td>
</tr>
<tr>
<td style="font-weight:bold;">description</td>
<td><textarea name="page_desc"><?=$desc?></textarea></td>
</tr>
<tr>
<td style="font-weight:bold;">content</td>
<td><textarea name="page_content"><?=$content?></textarea></td>
</tr>
<tr>
<td colspan="2">
<input type="hidden" name="send" value="1" />
<input type="hidden" name="act" value="<?=$_GET["act"]?>" />
<input type="hidden" name="page_id" value="<?=$pageid?>" />
<input type="submit" value="add" /></td>
</tr>
</table>
</form>
</body>
</html>
résolu:
avec @ Mihai Iorga code que j'ai ajouté ob_start();
Êtes-vous certain que c'est même l'obtention de tout exécuté? L'état pourrait même ne pas être vrai.
Définir le "pas de travail". Le code est-il même être exécuté? Fournir un minimum de cas de test qui reproduit le problème.
L'en-tête() l'appel est dans un if() bloc, il pourrait même ne pas être travail en premier lieu.
pas de travail, je veux dire...avec les rediriger vers index.php ... toujours dans la même url
stackoverflow.com/questions/8028957/headers-already-sent-by-php
Définir le "pas de travail". Le code est-il même être exécuté? Fournir un minimum de cas de test qui reproduit le problème.
L'en-tête() l'appel est dans un if() bloc, il pourrait même ne pas être travail en premier lieu.
pas de travail, je veux dire...avec les rediriger vers index.php ... toujours dans la même url
stackoverflow.com/questions/8028957/headers-already-sent-by-php
OriginalL'auteur michael | 2012-09-21
Vous devez vous connecter pour publier un commentaire.
C'est parce que vous avez une sortie:
résultats dans la ligne blanche à la sortie.
header() doit être appelée avant toute sortie est envoyé, soit par des balises HTML, des lignes vides dans un fichier, ou à partir de PHP
Regrouper tous vos codes PHP et assurez-vous que vous n'avez pas d'espace au début du fichier.
aussi après
header('location: index.php');
ajouterexit();
si vous avez d'autres scripts ci-dessous.Également déplacer votre rediriger la tête à la suite de la dernière
if
.Où vous cassez votre code PHP avec
?><?php
il en résulte une ligne vide. Combiner tous les icij'ai édité mon code...toujours le même problème :S
Le saut de ligne dans le
?>\n<?php
est avalé par l'analyseur PHP, mais il y a un espace au début du bloc de code...Peut-être que vous ne saisissez pas la dernière
if
.. déplacez votre tête comme iciOriginalL'auteur Mihai Iorga
Essayez d'ajouter
ob_start();
en haut du code, c'est à dire avant lainclude
déclaration.Cette réponse va résoudre le problème
OriginalL'auteur air4x
Supprimer De L'Espace De
Correct : header("location: home.php"); ou header("Location:home.php");
Incorrect : header("location :home.php");
Supprimer l'espace entre le Lieu et l' : --> header("location(supprimer de l'espace de): home.php");
OriginalL'auteur JavaFWS
La fonction ob_start() tournez le tampon de sortie. Alors que le tampon de sortie est active pas de sortie est envoyé à partir du script (autres que les en-têtes), au lieu de la sortie est stockée dans une mémoire tampon interne. Si le navigateur ne recevrez pas de sortie et de la tête de travail.Aussi, nous devons nous assurer que l'en-tête() est utilisé sur la partie supérieure de la code.
OriginalL'auteur Suyash Jain
suffit d'utiliser
ob_start();
avant de l'inclure la fonction aideraOriginalL'auteur subindas pm
Je utiliser le code suivant et il fonctionne très bien pour moi.
OriginalL'auteur Hemi
Il m'a fallu un certain temps pour comprendre cela: Mon fichier php a été encodé en UTF-8. Et la NOMENCLATURE empêché d'en-tête de localisation pour fonctionner correctement. Dans Notepad++ j'ai mis le fichier de l'encodage "UTF-8 sans BOM" et le problème avait disparu.
OriginalL'auteur morcibacsi
Il devrait être
Location
paslocation
:heureux d'entendre cela! 🙂
OriginalL'auteur Mahdi
J'avais même application sur mon localhost et sur un serveur partagé. Sur mon localhost le reddirects a bien fonctionné alors que sur ce serveur partagé n'a pas. J'ai vérifié le phpinfo et j'ai vu ce qui a provoqué cette:
Alors que sur mon localhost, j'ai eu ceci:
J'ai donc demandé à l'administrateur système pour augmenter la valeur et après il l'a fait, tout a bien fonctionné.
OriginalL'auteur paulalexandru
Dans mon cas, j'ai créée un nouveau fichier de configuration avec la fonction " ob_start()' et a ajouté ça à mes .gitignore fichier.
OriginalL'auteur Pankaj Agrawal