Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.php > #4907 > unrolled thread

PHP mit JS

Started byFabian <fabi1969@mail.net>
First post2023-05-13 16:33 +0200
Last post2023-05-13 21:58 +0200
Articles 2 — 2 participants

Back to article view | Back to de.comp.lang.php


Contents

  PHP mit JS Fabian <fabi1969@mail.net> - 2023-05-13 16:33 +0200
    Re: PHP mit JS Arno Welzel <usenet@arnowelzel.de> - 2023-05-13 21:58 +0200

#4907 — PHP mit JS

FromFabian <fabi1969@mail.net>
Date2023-05-13 16:33 +0200
SubjectPHP mit JS
Message-ID<u3o740$3nekb$1@gwaiyur.mb-net.net>
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

[toc] | [next] | [standalone]


#4908

FromArno Welzel <usenet@arnowelzel.de>
Date2023-05-13 21:58 +0200
Message-ID<kca8ffF9s30U1@mid.individual.net>
In reply to#4907
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

[toc] | [prev] | [standalone]


Back to top | Article view | de.comp.lang.php


csiph-web