![]() |
PHP Meldung anzeigen erst bei Seitenwechsel
Ich verlinke mittels einem Button auf eine andere Seite und gebe bei jedem Klick eine Meldung aus, dass gleich auf die andere Seite verlinkt wird.
Ich möchte aber jetzt die Meldung ausgeben mit dem Inhalt, dass die Seite schon gewechselt wurde und die Meldung soll dann logischerweise erst erscheinen, wenn die Seite bereits gewechselt wurde. Die Seite auf die ich verweise gehört jedoch nicht mir, sonst könnte ich ja einfach mit Javascript das OnLoad Event auf der neuen Seite einbinden. Wie kann man nachträglich, wenn die Seite schon gewechselt wurde noch einen Hinweis an den Benutzer senden? Das hier hab ich bis jetzt um eine Nachricht zu senden, jedoch wenn man noch auf der selben Seite ist:
Code:
Der Verweis auf die neue Seite funktioniert so:
<input type="submit" value="test" name="test" onclick="alert(Sie werden gleich weitergeleitet')">
Code:
<?php
if (isset($_POST['test'])) { header('location: http://www.google.de/'); // Kann man hier vielleicht irgendeine showmessage Box erzeugen? // z.B.: echo "<script>alert('Sie wurden erfolgreich weitergeleitet!')</script>"; exit(); } ?> |
AW: PHP Meldung anzeigen erst bei Seitenwechsel
Zitat:
Wichtiger währe doch ne Meldung wenn es mal nicht geklappt hat!(Warum auch immer):wink: Gruss alfold |
AW: PHP Meldung anzeigen erst bei Seitenwechsel
Die einzige Moeglichkeit waere, die Seite in einem iframe zu laden (ohne eigene Seite aussen rum) und dann eine JS-Meldung anzuzeigen.
Eine andere Moeglichkeit waere es, die Seite ueber einen Proxy auszuliefern und dort den entpsrechenden Code zu injizieren. Bei beiden Moeglichkeiten hast du aber die eigene URL in der Adressleiste, nicht die der Zielseite. Die originale Seite direkt im Browser zu laden und eine Meldung einer anderen Seite anzuzeigen geht aus Sicherheitsgruenden (zum Glueck) nicht. Dies kann nur mit client-seitigen Scripts (z.B. Greasemonkey) realisiert werden, und auch da hast du als "Weiterleiter" keinen Einfluss drauf. Greetz alcaeus |
AW: PHP Meldung anzeigen erst bei Seitenwechsel
Code:
Wenn die Frage im Kommentar ernstgemeint ist, dann solltest du dich vielleicht mit den Grundlagen beschäftigen, bevor du irgendetwas programmierst. Kennst du den Unterschied zwischen Client- und Serverseitig? Ist nicht böse gemeint, aber nur machen ohne zu wissen was man da eigentlich tut bringt einen auch nicht wirklich weiter.
<?php
if (isset($_POST['test'])) { header('location: http://www.google.de/'); // Kann man hier vielleicht irgendeine showmessage Box erzeugen? // z.B.: echo "<script>alert('Sie wurden erfolgreich weitergeleitet!')</script>"; exit(); } ?> |
AW: PHP Meldung anzeigen erst bei Seitenwechsel
Dann sollte ich lieber nen Javascript seitigen clientcode lernen!
|
AW: PHP Meldung anzeigen erst bei Seitenwechsel
Zitat:
Sorry, das konnte ich mir nicht verkneifen. Die Grundlagen musst du lernen, die fehlen dir noch komplett. Sowohl in PHP als auch in JS und in HTML sowieso. |
AW: PHP Meldung anzeigen erst bei Seitenwechsel
ist ja länger her aber wollte das thema nochmal aufgreifen
hab jetzt alles in html reingeschriebn dann müsste das doch gehen zumindestens wenn ich das auf apache ausführe.
Code:
<html>
<head> <meta http-equiv="cache-control" content="no-cache"> <title> hallo </title> </head> <body> <form action='#' method='POST'> <input type='submit' value='test' name='test'> </form> <?php if (isset($_POST['test'])) { header('location: [url]http://www.google.de');[/url] echo "<script>alert('hallo - einloggen nicht fehlgeschlagen!')</script>"; echo "hallo!"; // das erste echo müsste ja dann mindestens mal gehen exit(); } ?> </body> </html> |
AW: PHP Meldung anzeigen erst bei Seitenwechsel
Nochmal: Lerne die Grundlagen. Html wird nie, never, ever, "auf einem Apache ausgeführt" werden.
Der Webserver schiebt das Html lediglich zum Browser. Und wenn Du einen header:location sendest, dann führt das automatisch zu einem http-Status-Code 302. Das heisst, der Browser hört in genau dem Moment in dem er den header liest auf, die aktuelle Seite darzustellen (ignoriert also Dein Javascript komplett) und startet einen neuen Request an die angegebene Adresse. Und genau in dem Moment bist Du die Kontrolle los. Komplett. |
AW: PHP Meldung anzeigen erst bei Seitenwechsel
Und was ist wenn die Datei auf die geleitet wird von mir ist?
Kann ich da irgendwas in den Queltext von der neuen Datei schreiben, dass der dann ne Ausnahme macht?? |
AW: PHP Meldung anzeigen erst bei Seitenwechsel
Nein, das geht nicht. Hast du dir überhaupt mal angeschaut, was der von Phoenix genannte Code 302 macht?
|
AW: PHP Meldung anzeigen erst bei Seitenwechsel
Zitat:
|
AW: PHP Meldung anzeigen erst bei Seitenwechsel
AAAAAAAAAAAArgh, ich kann mir das nicht laenger ansehen. Deshalb jetzt die ultimative Schritt-fuer-Schritt-Erklaerung was denn passiert.
Angenommen du hast auf deinem Web-Server eine index.html mit folgendem Inhalt:
Code:
Jetzt kommt ein Benutzer, und gibt die URL zur obigen Datei in die Adressleiste seines Browsers ein. Der Browser erhaelt dann zwei Dinge:
<html>
<head> <title>Test</title> </head> <body> <script>alert('hallo - einloggen nicht fehlgeschlagen!')</script> </body> </html>
Der Browser erhaelt das HTML, parst es, sieht dass da ein Script-Tag drin ist und gibt den Inhalt an die JS-Engine weiter. Diese sieht dass da ein alert() drin ist und zeigt dieses an. Soweit ist das ja genau das was du wolltest. Nun erweitern wir das obige Szenario um einen Redirect. Wir nehmen fuer dieses Szenario an, dass der Apache kein PHP-Modul installiert hat.
Code:
Nun gibt die obige Person wieder die URL zur Seite in die Adressleiste ein. Als Ergebnis wird wieder der obige HTML-Code rauskommen und das Ergebnis wird so sein wie bei Versuch 1. Weder der Webserver noch der Browser wissen was sie mit diesem <?php-Dingens anfangen sollen und ignorieren es deshalb einfach.
<html>
<head> <title>Test</title> </head> <body> <?php header('Location: http://www.google.com'); ?> <script>alert('hallo - einloggen nicht fehlgeschlagen!')</script> </body> </html> Bei Versuch 3 installieren wir dann noch mod_php fuer Apache so dass der Apache auch weiss was er mit diesem <?php zu tun hat und benennen die Datei in .php um. Der Code ist wieder wie oben:
Code:
Nun gibt die bereits bekannte Person nochmal die URL ein und der Browser schickt wieder einen Request an den Server. Nun kommt folgendes zurueck:
<html>
<head> <title>Test</title> </head> <body> <?php header('Location: http://www.google.com'); ?> <script>alert('hallo - einloggen nicht fehlgeschlagen!')</script> </body> </html>
So, und was passiert jetzt? Der Browser interpretiert wie sonst auch immer den Header. Jetzt sieht er dass dort ein Location-Feld da ist. Damit weiss der Browser dass er auf eine andere Seite weitergeleitet wird und laesst den kompletten Response-Body einfach fallen. Stattdessen macht er einen Request auf die angegebene URL (in dem Fall google.com) und schreibt diese URL auch in die Adresszeile - so als ob die Person direkt auf diese Seite gegangen waere. Dort passiert dann de fakto das aus Beispiel 1: es kommt eine Response (bestehend aus Header und Body) und das was du geschickt hast ist dem Browser wirklich komplett egal. So, was heisst das jetzt? Du kannst noch so viel Code hinter einen Redirect schreiben, so lange dieser Code client-seitig ausgefuehrt werden muesste (und ein alert wird client-seitig ausgefuehrt) wird das nicht passieren. Klar wird das echo noch ausgefuehrt, doch was macht dieses echo eigentlich? Nehmen wir folgendes Beispiel:
Code:
Was kommt beim Browser an? Erstmal natuerlich der Header der gleich wie im dritten Beispiel ist. Zweitens der Body, und der sieht wie folgt aus:
<html>
<head> <title>Test</title> </head> <body> <?php header('Location: http://www.google.com'); ?> <?php echo "<script>alert('hallo - einloggen nicht fehlgeschlagen!')</script>"; ?> </body> </html>
Code:
So, was heisst das jetzt? echo erzeugt eine Ausgabe die der Server in die Response reinpackt, so als haettest du sie direkt in den HTML-Code geschrieben. Das Ganze wird ausgefuehrt bevor auch nur ein einzelnes kleines Bit an den Client gesendet wird. Auch hier sieht der Client dass ein Location-Feld im Header ist, ignoriert den Body und macht den Request auf google.com.
<html>
<head> <title>Test</title> </head> <body> <script>alert('hallo - einloggen nicht fehlgeschlagen!')</script> </body> </html> Nochmal kurz und buendig: WAS DU MACHEN WILLST GEHT NICHT. So, und falls du nach diesem Beispiel immer noch nicht verstanden hast wie das funktioniert, tu bitte allen Web-Entwicklern in diesem Forum einen Gefallen und hol dir ein Buch das den Einstieg in die Web-Entwicklung lehrt. Das sind Grundlagen, die man einfach verstanden haben muss. Solange du solch banale Dinge nicht verstanden hast, bringt es rein gar nichts sich auch nur irgendwie weiter mit diesen Sachen zu beschaeftigen. Greetz alcaeus |
AW: PHP Meldung anzeigen erst bei Seitenwechsel
Möglichkeit:
Ein Frameset aufbauen und aus dem einen Frame die Nachricht anzeigen und in dem sichtbaren Frame die neue Seite laden. Der Sinn erschließt sich mir aber nicht, warum man das so machen sollte. |
AW: PHP Meldung anzeigen erst bei Seitenwechsel
Zitat:
Auch wenn ich mich wiederhole! Und ich ne Weiterleitung eh für nicht gut heiße! Wichtiger währe ne Meldung wenn es mal nicht geklappt hat, wenn man sowas machen will! Gruss alfold |
AW: PHP Meldung anzeigen erst bei Seitenwechsel
Warum findest du ne Weiterleitung nicht gut?
Warum sollte das den mal nicht funktionieren mit dem Weiterleiten? :-D Dann muss ich ja nicht prüfen, ob es geklappt hat ich geh einfach mal davon aus, dass es immer geht und wenn der Google Server mal nicht funktioniert ist das ja auch egal. Dann kann man so oder so nicht drauf. 0o" Der Text den ich angeben hab war ja nur ein Beispiel ging mir ja nur ums Prinzip ob so was überhaupt möglich ist. Ich mach das dann jetzt mit dem IFrame. Vielen Dank für die Mühe, die ihr euch gegeben hat. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz