błąd headów w php?

błąd headów w php?
P0
  • Rejestracja:ponad 13 lat
  • Ostatnio:8 miesięcy
  • Postów:133
0

cześć wszystkim
robię stronę i mam zgrzyt z trzema błędami. Kompletnie nie wiem o co chodzi. Wiem, że błąd dotyczy headów i przesyłania w nich informacji, ale nie rozumiem co robię źle. Proszę o pomoc. Błąd który występuje:

Warning: Cannot modify header information - headers already sent by (output started at /wp-content/themes/instrukcje/standar_show/layout_header.php:9) in /wp-content/themes/instrukcje/standar_show/read_template.php on line 55

index -> strona w której wybieram element z comboboxa i klikam na przycisk żeby aktywować comboboxa. Tu pojawia się komunikat, który podałem wyżej

Kopiuj
<?php
session_start();


if(!($_SESSION['log'])){
header("Location: /wp-content/themes/instrukcje/standar_show/index.php?error=4");
exit;
}

?>
<?php
include_once 'config/core.php';
 
include_once 'config/database.php';
include_once 'objects/instruction.php';
include_once 'objects/category.php';
 
$database = new Database();
$db = $database->getConnection();
 
$instruction = new Instruction($db);
$category = new Category($db);
 
$page_title = "Read Instruction";
include_once "layout_header.php";
 
$stmt = $instruction->readAll($from_record_num, $records_per_page);
 
$page_url = "index.php?";
 
$total_rows=$instruction->countAll();
 
include_once "read_template.php";
 
include_once "layout_footer.php";
?>

layout_header

Kopiuj

<!DOCTYPE html>
<html lang="en">
<head>
 
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
 
**<title><?php echo $page_title;?></title>**PIERWSZY BŁĄD
 
    <!-- Latest compiled and minified Bootstrap CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" />
  
    <!-- our custom CSS -->
    <link rel="stylesheet" href="libs/css/custom.css" />
  
</head>
<body>
 
    <!-- container -->
    <div class="container">
 
        <?php
        // show page header
        echo "<div class='page-header'>
                <h1>{$page_title}</h1>
            </div>";
        ?>

read_template

Kopiuj

<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootbox.js/4.4.0/bootbox.min.js"></script>
<?php

echo "<div class='right-button-margin'>";
    echo "<a href='../standar.php' class='btn btn-primary pull-right'>";
    echo "<span class='glyphicon glyphicon'></span> Back Menu	";
    echo "</a>";
echo "</div>";

if($total_rows>0){
	        echo "<div class='page-header'>
                <h4>Last 5 instructions</h4>
            </div>";
 echo "<div>";
    echo "<table class='table table-hover table-responsive table-bordered'>";
        echo "<tr>";
            echo "<th>Name</th>";
            echo "<th>Date</th>";
			echo "<th>Actions</th>";
        echo "</tr>";
 
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
 
            extract($row);
            echo "<tr>";
			echo "<td>{$name}</td>";
			echo "<td>{$modified}</td>";
		
                echo "<td>";
 
                    echo "<a href='read_one.php?id={$id}' class='btn btn-primary left-margin'>";
                        echo "<span class='glyphicon glyphicon-list'></span> Read";
                    echo "</a>";
                echo "</td>";
            echo "</tr>";

			}
		echo "</table>";
	echo "</div>";	

 }
// tell the user there are no users
else{
    echo "<div class='alert alert-danger'>No instructions found.</div>";
}
?>	
<?php
if($_POST){
	
	if(isset($_POST['cat_id_select'])){
	$_SESSION['cat_id_select'] = $_POST['cat_id_select'];	
	$_POST['cat_id_select'] = null;	
	**header('Location: /wp-content/themes/instrukcje/standar_show/showAll_category.php');**DRUGI BŁĄD
	}
	
	if(isset($_POST['subcat_id_select'])){
	$_SESSION['subcat_id_select'] = $_POST['subcat_id_select'];	
	$_POST['subcat_id_select'] = null;	
	**header('Location: /wp-content/themes/instrukcje/standar_show/showAll_subcategory.php')**;TRZECI BŁĄD
	}
}


	        echo "<div class='page-header'>
                <h4>Category/subcategory filter</h4>
            </div>";
?>
<div>
    <table class='table table-hover table-responsive table-bordered'>
 	<form method="post">
            <tr>
                <td>
				<select id="category-select" name="cat_id_select" class="clear-right">
					<option value="0" >Select a category</option>
					<option value="1">Szkolenia</option>

				</select>
				</td>
            	<td> 
                <button type="submit" class="btn btn-primary">Show All Category</button>
            	</td>
            	</tr>
		</form>
		<form method="post">
		<tr>
			<td>
				<select id="subcategory-select" name="subcat_id_select" class="clear-right">
				<option value="0">Select a subcategory</option>
        	<optgroup label="Programy">
        		<option value="1">profilaktyczny</option>
 
				</select>
			</td>
			<td>
				<button type="submit" class="btn btn-primary">Show All Subcategory</button>
			</td>
			
		</tr>
		</form>
</table>
</div>

edytowany 1x, ostatnio: przonak007
UP
  • Rejestracja:ponad 6 lat
  • Ostatnio:prawie 5 lat
  • Postów:28
0

Nie mam pojęcia co chcesz w ten sposób zrobić...

Ale przenieś tą instrukcje na góre kodu tak by została wywołana zanim zostaną wysłane nagłówki. Takie rzeczy robi się raczej w theme.php albo tworzy plugin. Nie w środku widoku... :(

PD
  • Rejestracja:około 10 lat
  • Ostatnio:15 dni
  • Postów:178
0

Błąd występuje bo przed header'em wysyłasz dane.
header powinien zostać umieszczony przed jakimikolwiek danymi wyjściowymi.

BŁĘDNIE

Kopiuj
Hello World!
<?php
header("Location: http://example.com/");
?>

POPRAWNIE

Kopiuj
<?php
header("Location: http://example.com/");
?>
Hello World!

Nie pomagam naPW.!.
P0
  • Rejestracja:ponad 13 lat
  • Ostatnio:8 miesięcy
  • Postów:133
0

przerzuciłem heady, ale ciągle pokazuje się ten sam problem.

layout_header

Kopiuj
 <?php
        // show page header
        echo "<div class='page-header'>
                <h1>{$page_title}</h1>
            </div>";
        ?>
<!DOCTYPE html>
<html lang="en">
	
<head>
 
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
 

    <!-- Latest compiled and minified Bootstrap CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" />
  
    <!-- our custom CSS -->
    <link rel="stylesheet" href="libs/css/custom.css" />
  
</head>
<body>
 
    <!-- container -->
    <div class="container">
		
  <title><?php echo $page_title;?></title>

read_template

Kopiuj
<?php
if($_POST){
	
	if(isset($_POST['cat_id_select'])){
	$_SESSION['cat_id_select'] = $_POST['cat_id_select'];	
	$_POST['cat_id_select'] = null;	
	header('Location: /wp-content/themes/instrukcje/standar_show/showAll_category.php');
	}
	
	if(isset($_POST['subcat_id_select'])){
	$_SESSION['subcat_id_select'] = $_POST['subcat_id_select'];	
	$_POST['subcat_id_select'] = null;	
	header('Location: /wp-content/themes/instrukcje/standar_show/showAll_subcategory.php');
	}
}


	        echo "<div class='page-header'>
                <h4>Category/subcategory filter</h4>
            </div>";
?>

<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootbox.js/4.4.0/bootbox.min.js"></script>
<?php

echo "<div class='right-button-margin'>";
    echo "<a href='../standar.php' class='btn btn-primary pull-right'>";
    echo "<span class='glyphicon glyphicon'></span> Back Menu	";
    echo "</a>";
echo "</div>";

if($total_rows>0){
	        echo "<div class='page-header'>
                <h4>Last 5 instructions</h4>
            </div>";
 echo "<div>";
    echo "<table class='table table-hover table-responsive table-bordered'>";
        echo "<tr>";
            echo "<th>Name</th>";
            echo "<th>Date</th>";
			echo "<th>Actions</th>";
        echo "</tr>";
 
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
 
            extract($row);
            echo "<tr>";
			echo "<td>{$name}</td>";
			echo "<td>{$modified}</td>";
		
                echo "<td>";
 
                    echo "<a href='read_one.php?id={$id}' class='btn btn-primary left-margin'>";
                        echo "<span class='glyphicon glyphicon-list'></span> Czytaj";
                    echo "</a>";
			
                echo "</td>";
            echo "</tr>";

			}
		echo "</table>";
	echo "</div>";	

 }
// tell the user there are no users
else{
    echo "<div class='alert alert-danger'>No instructions found.</div>";
}
?>	

<div>
    <table class='table table-hover table-responsive table-bordered'>
 	<form method="post">
            <tr>
                <td>
				<select id="category-select" name="cat_id_select" class="clear-right">
					<option value="0" >Select a category</option>
					<option value="1">Programy i profilaktyka</option>

				</select>
				</td>
            	<td> 
                <button type="submit" class="btn btn-primary">Show All Category</button>
            	</td>
            	</tr>
		</form>
		<form method="post">
		<tr>
			<td>
				<select id="subcategory-select" name="subcat_id_select" class="clear-right">
				<option value="0">Select a subcategory</option>
        	<optgroup label="Programy">
        		<option value="1">Programy</option>


				</select>
			</td>
			<td>
				<button type="submit" class="btn btn-primary">Show All Subcategory</button>
			</td>
			
		</tr>
		</form>
</table>
</div>
Miang
  • Rejestracja:prawie 7 lat
  • Ostatnio:2 minuty
  • Postów:1659
0

layout_header.php masz PRZED read_template.php?


dzisiaj programiści uwielbiają przepisywać kod z jednego języka do drugiego, tylko po to by z projektem nadal stać w miejscu ale na nowej technologii
P0
  • Rejestracja:ponad 13 lat
  • Ostatnio:8 miesięcy
  • Postów:133
0

tak,
tak to dam przed to cała strona mi się sypie.

edytowany 1x, ostatnio: przonak007
Miang
czyli wysyłasz treść strony przed header('Location: /wp-content/themes/instrukcje/standar_show/showAll_category.php');
P0
  • Rejestracja:ponad 13 lat
  • Ostatnio:8 miesięcy
  • Postów:133
0

zmieniam, ale jak daję to wyżej to się cała strona sypie.

edytowany 1x, ostatnio: przonak007
Miang
co konkretnie sie sypie i jak to zmieniasz
P0
  • Rejestracja:ponad 13 lat
  • Ostatnio:8 miesięcy
  • Postów:133
0

W pliku index.php zmieniam kolejność wyświetlania pierwszy jest read_template.php i a potem layout_header.php.
Link pierwszy przedstawia stronę bez przedstawienia z pierwotnym błędem, link 2 przedstawia gdy ustawiam read_template.php jako pierwszy plik do wycztania
link 1

link 2

index.php

Kopiuj
<?php
session_start();


if(!($_SESSION['log'])){
header("Location: index.php?error=4");
exit;
}

?>
<?php
include_once 'config/core.php';
include_once 'config/database.php';
include_once 'objects/instruction.php';
include_once 'objects/category.php';
 
$database = new Database();
$db = $database->getConnection();
 
$instruction = new Instruction($db);
$category = new Category($db);
 
include_once "read_template.php";
 
$page_title = "Read Instruction";
include_once "layout_header.php";
 
$stmt = $instruction->readAll($from_record_num, $records_per_page);
 
$page_url = "index.php?";
 
$total_rows=$instruction->countAll();
 
include_once "layout_footer.php";
?>

zmieniłem również miejsce z headem. Ciągle jest ten sam problem :(

plik o nazwie read_template.php

Kopiuj
<?php

if($_POST){
	
	if(isset($_POST['cat_id_select'])){
	$_SESSION['cat_id_select'] = $_POST['cat_id_select'];	
	$_POST['cat_id_select'] = null;	
	header('Location: showAll_category.php');

	}
	
	if(isset($_POST['subcat_id_select'])){
	$_SESSION['subcat_id_select'] = $_POST['subcat_id_select'];	
	$_POST['subcat_id_select'] = null;	
	header('Location: showAll_subcategory.php');
	}
}
?>

<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootbox.js/4.4.0/bootbox.min.js"></script>


<?php

echo "<div class='right-button-margin'>";
    echo "<a href='../standar.php' class='btn btn-primary pull-right'>";
    echo "<span class='glyphicon glyphicon'></span> Back Menu	";
    echo "</a>";
echo "</div>";

if($total_rows>0){
	        echo "<div class='page-header'>
                <h4>Last 5 instructions</h4>
            </div>";
 echo "<div>";
    echo "<table class='table table-hover table-responsive table-bordered'>";
        echo "<tr>";
            echo "<th>Name</th>";
            echo "<th>Date</th>";
			echo "<th>Actions</th>";
        echo "</tr>";
 
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
 
            extract($row);
            echo "<tr>";
			echo "<td>{$name}</td>";
			echo "<td>{$modified}</td>";
		
                echo "<td>";
 
                    echo "<a href='read_one.php?id={$id}' class='btn btn-primary left-margin'>";
                        echo "<span class='glyphicon glyphicon-list'></span> Read";
                    echo "</a>";
                echo "</td>";
            echo "</tr>";

			}
		echo "</table>";
	echo "</div>";	

 }
// tell the user there are no users
else{
    echo "<div class='alert alert-danger'>No instructions found.</div>";
}
?>	

<?php
	        echo "<div class='page-header'>
                <h4>Category/subcategory filter</h4>
            </div>";
?>
<div>
    <table class='table table-hover table-responsive table-bordered'>
 	<form method="post">
            <tr>
                <td>
				<select id="category-select" name="cat_id_select" class="clear-right">
					<option value="0" >Select a category</option>
					<option value="1">Programy</option>

				</select>
				</td>
            	<td> 
                <button type="submit" class="btn btn-primary">Show All Category</button>
            	</td>
            	</tr>
		</form>
		<form method="post">
		<tr>
			<td>
				<select id="subcategory-select" name="subcat_id_select" class="clear-right">
				<option value="0">Select a subcategory</option>
        		<option value="1">Profilaktyka</option>

        	</optgroup>
				</select>
			</td>
			<td>
				<button type="submit" class="btn btn-primary">Show All Subcategory</button>
			</td>
			
		</tr>
		</form>
</table>
</div>
edytowany 1x, ostatnio: przonak007
UP
  • Rejestracja:ponad 6 lat
  • Ostatnio:prawie 5 lat
  • Postów:28
1

A gdybyś tak... Jak pisałem wcześniej... Zamiast przesuwać plik, wyciągnął tą instrukcję i wrzucił na górę index.php?

Kopiuj

if($_POST){

    if(isset($_POST['cat_id_select'])){
    $_SESSION['cat_id_select'] = $_POST['cat_id_select'];   
    $_POST['cat_id_select'] = null; 
    **header('Location: /wp-content/themes/instrukcje/standar_show/showAll_category.php');**DRUGI BŁĄD
    }

    if(isset($_POST['subcat_id_select'])){
    $_SESSION['subcat_id_select'] = $_POST['subcat_id_select']; 
    $_POST['subcat_id_select'] = null;  
    **header('Location: /wp-content/themes/instrukcje/standar_show/showAll_subcategory.php')**;TRZECI BŁĄD
    }
}

Co i tak nie jest w pełni poprawne bo powinieneś to zrobić w functions.php (wcześniej omyłkowo napisałem theme.php) i nie rozumiem dlaczego jako Location ustawiasz pliki źródłowe skórki? Czy aby na pewno wiesz co robisz? :D

edytowany 1x, ostatnio: upabove
hopaj
@CodeRZ: nigdy nie wiedzial co robi
CodeRZ
@hopaj ilość moich tematów na forum spadła do 0
P0
  • Rejestracja:ponad 13 lat
  • Ostatnio:8 miesięcy
  • Postów:133
1

Dziękuję, DZIAŁA

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)