webentwicklung-frage-antwort-db.com.de

header-Position funktioniert nicht in meinem PHP-Code

ich habe diesen Code. Warum funktioniert mein Header-Speicherort nicht? Es ist eine Form zum Aktualisieren, Bearbeiten und Löschen einiger Seiten in meinem Steuerungsfeld ... und ich habe eine index.php-Datei im selben Ordner wie form.php. ..y help please? () Ich habe versucht, die Kopfzeile nach dem Bearbeiten und Löschen zu setzen ... und trotzdem auf die Formularseite nicht den Index zu gehen ...

<?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>

gelöst: mit @ Mihai Iorga-Code fügte ich ob_start () hinzu;

12
michael

Das liegt daran, dass Sie eine Ausgabe haben:

?>
<?php

führt zu einer leeren Zeilenausgabe.

header () muss aufgerufen werden, bevor eine tatsächliche Ausgabe gesendet wird, entweder durch normale HTML-Tags, leere Zeilen in einer Datei oder von PHP

Kombinieren Sie alle Ihre PHP -Codes und stellen Sie sicher, dass am Anfang der Datei keine Leerzeichen stehen.

auch nach header('location: index.php'); add exit();, falls Sie weitere Skripte haben.

Verschieben Sie Ihren Umleitungsheader auch nach der letzten if.

24
Mihai Iorga

Versuchen Sie, ob_start(); am Anfang des Codes hinzuzufügen, d. H. Vor der include-Anweisung.

32
air4x

Leerzeichen entfernen

Richtig: Header ("Location: home.php"); oder Header ("Standort: home.php");

Falsch: header ("Location: home.php");

Entfernen Sie Leerzeichen zwischen Location und: -> header ("Location ( remove space ): home.php");

6
JavaFWS

Die Funktion ob_start () aktiviert die Ausgabepufferung. Während die Ausgabepufferung aktiv ist, wird keine Ausgabe (außer Kopfzeilen) vom Skript gesendet, sondern die Ausgabe wird in einem internen Puffer gespeichert. Der Browser erhält also keine Ausgabe und der Header funktioniert. Außerdem sollten wir sicherstellen, dass header () oben im Code verwendet wird.

5
Suyash Jain

verwenden Sie einfach ob_start();, bevor die Include-Funktion hilft

5
subindas pm

Ich benutze folgenden Code und es funktioniert gut für mich.

if(!isset($_SESSION['user'])) {
       ob_start();
       header("Location: https://sitename.com/login.php");
       exit();
} else { 

// my further code 

}
2
Hemi

Ich habe einige Zeit gebraucht, um das herauszufinden: Meine PHP-Datei wurde in UTF-8 kodiert. Und die Stückliste verhinderte, dass der Header-Standort ordnungsgemäß funktioniert. In Notepad ++ habe ich die Dateikodierung auf "UTF-8 ohne Stückliste" gesetzt und das Problem war verschwunden.

1
morcibacsi

Ich hatte dieselbe Anwendung auf meinem localhost und auf einem gemeinsam genutzten Server. Auf meinem localhost funktionierten die reddirects gut, während dies auf diesem gemeinsam genutzten Server nicht der Fall war. Ich habe die phpinfo überprüft und festgestellt, was dies verursacht hat:

 enter image description here

Auf meinem localhost hatte ich folgendes:

 enter image description here

Also bat ich den Systemadministrator, diesen Wert zu erhöhen, und nachdem er das getan hatte, funktionierte alles gut.

0
paulalexandru

Es sollte Location nicht location sein:

header('Location: index.php');
0
Mahdi
ob_start(); 

sollte in der Zeile 1 selbst eingefügt werden . wie im Beispiel unten

<?php
ob_start(); // needs to be added here
?>
<!DOCTYPE html>
<html lang="en">
// your code goes here
</html>
<?php
if(isset($_POST['submit']))
{ 
//code to save data in db goes here
}
header('location:index.php?msg=sav'); 
?>

das Hinzufügen unter html funktioniert auch nicht. Wie unten

<!DOCTYPE html>
<html lang="en">
// your code goes here
</html>
<?php
ob_start(); // it doesnt work even if you add here
if(isset($_POST['submit']))
{ 
//code to save data in db goes here
}
header('location:index.php?msg=sav'); 
?>
0
Sashi

In meinem Fall habe ich eine neue Konfigurationsdatei mit der Funktion 'ob_start ()' erstellt und diese meiner .gitignore-Datei hinzugefügt.

0
Pankaj Agrawal

Erstelle config.php und gib den Code ein, der funktionieren wird

0
john