Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

PHP mit JS

0 views
Skip to first unread message

Fabian

unread,
May 13, 2023, 10:35:12 AM5/13/23
to
Hallo Wissende,

ich habe ein Problem, dem ich einfach nicht Herr werde und ich weiß, der
Bug sitzt bestimmt vor dem Rechner. Also könnte ich mal Eure Hilfe
gebrauchen.

Das möchte ich erreichen:
In einem Javascript wird geprüft, ob eine bestimmte Datei vorhanden ist.
Ist sie vorhanden, wird ein PHP-Script aufgerufen, welches dann die
Datei löscht. Sobald die Datei gelöscht wurde, soll ein Alert()
angezeigt werden.

Das Problem:
Der Alert wird nicht angezeigt. Warum?

Hier das Javascript:

<script type="text/javascript">
function isNewMail()
{
var url = "https://example.com/message/postboxen/postbox_<?PHP echo
$_SESSION['benutzer'];?>.dat";
// document.getElementById('showurl').innerHTML = url;
request = new XMLHttpRequest(); // Definition des Request
request.open('head',url, true); // Request öffnen ... url ist eine
Variable. Bei direktem Aufruf statt dessen 'http://domain.de/datei,xyz'
einschließlich Anführungszeichen

request.send(null); // Request senden
request.onreadystatechange = showAlert; // Request auswerten
setTimeout(isNewMail, 30000);
}

function showAlert()
{
if (request.readyState == 4 && request.status == 200 )
{
location.href = "https://example.com/tools/delpostbox.php";
}
}
</script>

Das Script läuft mit beiden Funktionen korrekt, wie es soll.

Hier nun das PHP:
<?PHP session_start();
$url=$_SERVER['DOCUMENT_ROOT'] . "/message/postboxen/postbox_" .
$_SESSION['benutzer'] . ".dat";
if (file_exists($url))
{
unlink($url);
sleep(2);
?>
<script>alert('Sie haben neue Nachrichten in Ihrem Postfach.');</script>
<?PHP
}
$uri=$_SERVER['HTTP_REFERER'];
header("location:$uri");
?>

Und in diesem PHP-Script wird der Alert nicht angezeigt, obwohl der
unlink() ausgeführt wird. Warum? Ich stehe da ziemlich auf dem Schlauch.

Gruß
Heiko

Arno Welzel

unread,
May 13, 2023, 4:00:02 PM5/13/23
to
Fabian, 2023-05-13 16:33:

[...]
> Das möchte ich erreichen:
> In einem Javascript wird geprüft, ob eine bestimmte Datei vorhanden ist.
> Ist sie vorhanden, wird ein PHP-Script aufgerufen, welches dann die
> Datei löscht. Sobald die Datei gelöscht wurde, soll ein Alert()
> angezeigt werden.
>
> Das Problem:
> Der Alert wird nicht angezeigt. Warum?
>
> Hier das Javascript:
>
> <script type="text/javascript">
> function isNewMail()
> {
> var url = "https://example.com/message/postboxen/postbox_<?PHP echo
> $_SESSION['benutzer'];?>.dat";
> // document.getElementById('showurl').innerHTML = url;
> request = new XMLHttpRequest(); // Definition des Request
> request.open('head',url, true); // Request öffnen ... url ist eine
> Variable. Bei direktem Aufruf statt dessen 'http://domain.de/datei,xyz'
> einschließlich Anführungszeichen
>
> request.send(null); // Request senden
> request.onreadystatechange = showAlert; // Request auswerten
> setTimeout(isNewMail, 30000);
> }
>
> function showAlert()
> {
> if (request.readyState == 4 && request.status == 200 )
> {
> location.href = "https://example.com/tools/delpostbox.php";
> }
> }
> </script>

Warum so umständlich? Ich würde per XHR gleich ein PHP-Script aufrufen,
was auf Existenz der Datei prüft und dann löscht, wenn nötig und dann
das Ergebnis zurückliefert, was im ReadyState-Handler benutzt werden
kann - z.B. als Meldung oder Weiterleitung auf die *Seite*, die den
Erfolg anzeigt.

> Das Script läuft mit beiden Funktionen korrekt, wie es soll.
>
> Hier nun das PHP:

Welches "das PHP"? delpostbox.php?

> <?PHP session_start();
> $url=$_SERVER['DOCUMENT_ROOT'] . "/message/postboxen/postbox_" .
> $_SESSION['benutzer'] . ".dat";
> if (file_exists($url))
> {
> unlink($url);
> sleep(2);
> ?>
> <script>alert('Sie haben neue Nachrichten in Ihrem Postfach.');</script>
> <?PHP
> }
> $uri=$_SERVER['HTTP_REFERER'];
> header("location:$uri");
> ?>
>
> Und in diesem PHP-Script wird der Alert nicht angezeigt, obwohl der
> unlink() ausgeführt wird. Warum? Ich stehe da ziemlich auf dem Schlauch.

Du schickst nur das hier als Ergebnis zum Browser:

<script>alert('Sie haben neue Nachrichten in Ihrem Postfach.');</script>

Wo ist der Rest? <html><head>...</head><body>... ?

> Gruß
> Heiko

Wieso "Heiko"? Oben warst Du noch "Fabian".


--
Arno Welzel
https://arnowelzel.de

0 new messages