I have a simple script of code that reads a PHP file and when it get’s changed it’s supposed to say CHANGED on the page which I will change to refresh the page or change the content. For now, it shows the content, the function repeats once or twice and then it just shows nothing. Any help?
Here is the code:
<?php
$handle = fopen("../chat/real/chatserver.php", "r");
$contents = fread($handle, filesize("../chat/real/chatserver.php"));
fclose($handle);
$newcontents = $contents;
echo $contents;
?>
<script type="text/javascript">
checkchanged();
function checkchanged() {
document.write("<?php $handle = fopen('../chat/real/chatserver.php', 'r');
$newcontents = fread($handle,filesize('../chat/real/chatserver.php'));fclose($handle);?>");
document.write("<?php if(!($contents==$newcontents)){echo 'Changed';} ?>");
setTimeout('checkchanged()',3000);
}
</script>
Thanks for the help
This is because you can’t include PHP in your JavaScript in order to execute it by the client. Yes, you can include PHP values, but that’s it. Have a look at the source code in your browser:
As you can see, the function
document.writegets called with an empty string"". This is because everything that is in<?php ?>gets executed on the server, not on the client, before the resulting page gets sent to the client.Since every PHP code is parsed only once
$contents==$newcontentswill betrue, so you’ll never seeChanged.To achieve something like a chat server you’ll need new http request. Have a look at AJAX.