kostenloser Webspace werbefrei: lima-city


PHP - Keine Weiterleitung

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    onur-yavuz

    onur-yavuz hat kostenlosen Webspace.

    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.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Der Location-Header erwartet eine absolute URL - http://blabla.de/pfad
  4. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Das kann nicht weiterleiten, da
    header()
    , wie der Funktionsname vermuten lässt, einen Header setzt, der, wie das Wort »Header« schon vermuten lässt, vor den Daten übertragen werden muss.

    Kurz: du darfst vor der
    header()
    -Anweisung nichts ausgeben.
  5. Autor dieses Themas

    onur-yavuz

    onur-yavuz hat kostenlosen Webspace.

    1. Bei einer anderen Dateien funktioniert das mit header obwohl mehrere Anweisungen davor sind

    2. Gibt es den eine andere Möglichkeit weiterzuleiten?

    3. Die PHP Endung, welche nach dem index fehlt, ist mit absicht und ändert nichts an dem fehlerhaften Verhalten.
  6. 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
  7. Autor dieses Themas

    onur-yavuz

    onur-yavuz hat kostenlosen Webspace.

    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
  8. 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
  9. Oh ok, dann geht das wohl bei Lima auf den weg nicht :blah:

    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 :nosmile:

    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
  10. Autor dieses Themas

    onur-yavuz

    onur-yavuz hat kostenlosen Webspace.

    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.
  11. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    onur-yavuz schrieb:
    Wenn ich das in meine htaccess eingebe, kommt das heraus:


    Skriptfehler

    […]
    Egal bei welcher Datei!
    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:
    php_value display_errors 1
    Oder du folgst der Anweisung auf der Fehlerseite … was du vermutlich bekommen würdest ist eine Warnung wegen bereits gesendeten Headern.
  12. Autor dieses Themas

    onur-yavuz

    onur-yavuz hat kostenlosen Webspace.

    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
  13. 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.

  14. Autor dieses Themas

    onur-yavuz

    onur-yavuz hat kostenlosen Webspace.

    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?
  15. 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.
  16. Autor dieses Themas

    onur-yavuz

    onur-yavuz hat kostenlosen Webspace.

    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?
  17. 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!
  18. Autor dieses Themas

    onur-yavuz

    onur-yavuz hat kostenlosen Webspace.

    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?
  19. Kannst du bitte den Inhalt von head.php posten?
    zu Location:blog: Irrtum meinerseits
  20. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    onur-yavuz schrieb:
    Wie soll den ein Code ausgeführt werden, wenn vorher auf eine andere Datei geleitet wird?
    Wie bereits mehrfach erwähnt wurde:

    Die Funktion
    header()
    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.

    In deinem Fall: kommentier die Zeile mit
    include("head.php");
    aus.
  21. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!