PHP - Keine Weiterleitung
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anweisung
ausgabe
code
datei
email
fehler
filtern
folgende werte setzen
getestet code
glauben
header
http
index
log
setzen
stelle
stichwort
url
weiterleiten
weiterleitung
-
Komischer weise leitet meine Datei nicht weiter:
<?php session_cache_limiter("nocache"); session_start(); $thisPage = "Startseite"; include("blog_head.php"); if ($login_überprüfen == 1) { if (isset($_GET["id"])) { $delete_beitrag = $_GET["id"]; $sql_delete = "delete from `" . $dsatz["EMail"] . "` where id = " . $delete_beitrag; mysql_query($sql_delete); echo "<p>Beitrag wurde gelöscht!</p>"; echo "<p><a href='index'>Zurück</a></p>"; header("Location:index"); } else { header("Location:index"); } } header("Location:index"); ?>
Er leitet nur nicht weiter. Alles andere wird ausgeführt. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Das kann nicht weiterleiten, da
, wie der Funktionsname vermuten lässt, einen Header setzt, der, wie das Wort »Header« schon vermuten lässt, vor den Daten übertragen werden muss.header()
Kurz: du darfst vor der
-Anweisung nichts ausgeben.header()
-
Hast du eventuell schonmal nachgesehen, ob die PHP an der Stelle einen Fehler gibt?
Dazu kannst du in einer .htaccess Datei folgende Werte setzen:
error_reporting = E_ALL
display_errors = On
Oder diese über PHP setzen: (nicht getestet)
ini_set('display_errors', 1); ini_set('error_reporting', E_ALL);
Oder mal in dem error-log nachsehen
Beitrag zuletzt geändert: 1.12.2013 20:10:34 von copynpaste -
copynpaste schrieb:
Hast du eventuell schonmal nachgesehen, ob die PHP an der Stelle einen Fehler gibt?
Dazu kannst du in einer .htaccess Datei folgende Werte setzen:
error_reporting = E_ALL
display_errors = On
Oder diese über PHP setzen: (nicht getestet)
ini_set('display_errors', 1); ini_set('error_reporting', E_ALL);
Oder mal in dem error-log nachsehen
Wenn ich das in meine htaccess eingebe, kommt das heraus:
Skriptfehler
Der Server kann diese Webseite nicht laden, da ein Fehler in einem PHP-Skript oder in einer .htaccess-Datei aufgetreten ist.
Tipp: Schalte kurzzeitig die Fehleranzeige für deine Webseite an und rufe sie erneut auf:
Verwaltung > Subdomains > Bearbeiten > "display_errors" aktivieren
Weitere Möglichkeiten zur Fehlersuche: http://www.lima-city.de/2008/php#fehlermeldungen
Egal bei welcher Datei!
Beitrag zuletzt geändert: 1.12.2013 20:15:07 von onur-yavuz -
onur-yavuz schrieb:
1. Bei einer anderen Dateien funktioniert das mit header obwohl mehrere Anweisungen davor sind
2. Gibt es den eine andere Möglichkeit weiterzuleiten?
1. Hast du vor dem <?php ein Leerzeichen oder gibts du HTML-Code davor aus? - Das könnte das Problem sein!
2. Ja: mit HTML und JavaScript -
Oh ok, dann geht das wohl bei Lima auf den weg nicht
Edit: Scheint an dem Script und meiner Aussage zu liegen - hatte die 2 Zeilen nur schnell kopiert - allerdings funktionieren die per htaccess lokal bei mir auch nicht, sry
Dann entferne das nochmal und führ den dort beschriebenen Schritt aus
Zu webfreclan:
Bei einer Javascript Weiterleitung kann man nie sicher sein, dass diese beim User funktioniert (Stichwort JS ausgeschaltet)
Beitrag zuletzt geändert: 1.12.2013 20:19:58 von copynpaste -
webfreclan schrieb:
onur-yavuz schrieb:
1. Bei einer anderen Dateien funktioniert das mit header obwohl mehrere Anweisungen davor sind
2. Gibt es den eine andere Möglichkeit weiterzuleiten?
1. Hast du vor dem <?php ein Leerzeichen oder gibts du HTML-Code davor aus? - Das könnte das Problem sein!
2. Ja: mit HTML und JavaScript
1. Das ist ganze Datei. Kein Leerzeichen oder Html Code davor
2. Ich will eine PHP Weiterleitung. JS ist, wie @copynpast sagt, unsicher. -
onur-yavuz schrieb:
Wenn du das, was dir vorgeschlagen wurde, direkt in die .htaccess-Datei kopiert hast ist das klar, da diese Syntax falsch ist. Richtig wäre:
Wenn ich das in meine htaccess eingebe, kommt das heraus:
Egal bei welcher Datei!
Skriptfehler
[…]
Oder du folgst der Anweisung auf der Fehlerseite … was du vermutlich bekommen würdest ist eine Warnung wegen bereits gesendeten Headern.php_value display_errors 1
-
Ich hab das gemacht, was in der Anleitung stand (Subdomain).
Ich habe auch in der .htaccess Datei folgendes eingetragen:
php_value display_errors 1
Trotzdem keine Meldung.
Link: fehler.deyavuz.com/blog/blog_beitrag_delete -
onur-yavuz schrieb:
<?php if (isset($_GET["id"])) { $delete_beitrag = $_GET["id"]; $sql_delete = "delete from `" . $dsatz["EMail"] . "` where id = " . $delete_beitrag; mysql_query($sql_delete); echo "<p>Beitrag wurde gelöscht!</p>"; echo "<p><a href='index'>Zurück</a></p>"; header("Location:index"); } ?>
Du darfst vor header(); wie bereits erwähnt, keinerlei Ausgabe erzeugen. Lösche echo " "; raus, dann funktioniert es. Du kannst beispielweise statt auf index auch auf index.php?msg=deleted_entry weiterleiten und dann $_GET["msg"]; auswerten.
Weiterhin ist es gefährlich die $_GET-Variable ungefiltert weiterzuverarbeiten. Stichworte Cross-Site-Scripting (XSS-Attack) und SQL-Injection.
-
onur-yavuz schrieb:
gatheringxp schrieb:
Weiterhin ist es gefährlich die $_GET-Variable ungefiltert weiterzuverarbeiten. Stichworte Cross-Site-Scripting (XSS-Attack) und SQL-Injection.
Wie kann man den überprüfen, ob GET ein integer ist und wie kann man noch GET filtern?
Bevor du lange zwischen String und Integer rumcastest nimm einfach:
http://us2.php.net/is_numeric
Filtern kannst du das wie jede andere Variable auch. -
Ich habe noch ein wenig an meinem Code gearbeitet. Filter hinzugefügt und echo entfernt. Immer noch keine Weiterleitung und keine Fehlermeldung.
<?php session_cache_limiter("nocache"); session_start(); $thisPage = "Startseite"; include("head.php"); if ($login_überprüfen == 1) { if (isset($_GET["id"])) { $delete_beitrag = $_GET["id"]; $delete_beitrag = htmlentities($delete_beitrag); $delete_beitrag = stripslashes($delete_beitrag); $delete_beitrag = nl2br($delete_beitrag); $sql_delete = "delete from `" . $dsatz["EMail"] . "` where id = " . $delete_beitrag; mysql_query($sql_delete); } } header("Location:blog"); ?>
Kann mir jemand helfen? -
nochmal das was du schon mehrmals hörtest:
-header() vor Ausgabe (findet höchstwarscheinlich in head.php statt)
-Ich glaube nicht, dass man mit Location:blog weiterleitet! -
gaec schrieb:
nochmal das was du schon mehrmals hörtest:
-header() vor Ausgabe (findet höchstwarscheinlich in head.php statt)
-Ich glaube nicht, dass man mit Location:blog weiterleitet!
Wie soll den ein Code ausgeführt werden, wenn vorher auf eine andere Datei geleitet wird? Und was ist an Location:blog falsch? -
Kannst du bitte den Inhalt von head.php posten?
zu Location:blog: Irrtum meinerseits -
onur-yavuz schrieb:
Wie bereits mehrfach erwähnt wurde:
Wie soll den ein Code ausgeführt werden, wenn vorher auf eine andere Datei geleitet wird?
Die Funktion
setzt einen Header, davor darf noch keine Ausgabe erfolgt sein, kein einziges Zeichen, nicht mal ein Lehrzeichen! Erst der Browser interpretiert den Header, wenn er ihn empfängt, und leitet auf die entsprechende Seite um.header()
In deinem Fall: kommentier die Zeile mit
aus.include("head.php");
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage