Side der viser hvis der er nye beskeder i min Google Mail og afspiller lyd
Jeg har lavet denne kode som virker fint.Det kan nok optimeres lidt.
Jeg kunne godt tænke mig at lave en knap, så siden kan tjekke om der er kommet nye beskeder igen, hvis der er kommet nye beskeder.
Man kan reloade siden og trykke på start igen. Kan det lade sig gøre at lave en knap så man ikke behøver reloade siden først?
Kan det også lade sig gøre at tjekke om der er trykket på start, så funktionen ikke kører flere gange samtidig, hvis man klikker på start flere gange?
<?php
$username = 'username???';
$password = 'password???';
$qmode = "";
if (isset($_GET['mode']))
$qmode = $_GET['mode'];
if ($qmode == "update") {
/* connect to gmail */
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
//$username = 'username???';
//$password = 'password???';
/* try to connect */
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());
/* grab emails */
$emails = imap_search($inbox,'ALL');
/* if emails are returned, cycle through each... */
if($emails) {
/* begin output var */
$output = '';
/* put the newest emails on top */
rsort($emails);
$email_number = $emails[0];
$overview = imap_fetch_overview($inbox,$email_number,0);
$output.= 'on '.$overview[0]->date.'';
echo $output;
}
imap_close($inbox);
exit;
}
?>
<!DOCTYPE html>
<html>
<body>
<input type=button onclick=enableStart(); value=Start>
<br><br>
<script>
setTimeout("document.title='(...) Home';",1000);
setTimeout("document.title='(0) Home';",3000);
</script>
<embed src="sound.mp3" type="audio/mp3" autostart="true" hidden="true">
<audio id="myAudio" autoplay controls><source src="sound.mp3" type="audio/mp3"></audio>
</embed>
<script>
var x = document.getElementById("myAudio");
function enableStart() {
x.autoplay = true;
setTimeout("data()",1*5000);
document.getElementById("div1").innerHTML = 'Tjekker om der er kommet nye meddelelser...';
}
function enableAutoplay() {
x.autoplay = true;
x.load();
setTimeout("enableAutoplay()",15*1000);
//alert(document.getElementById("div1").innerHTML);
}
function disableAutoplay() {
x.autoplay = false;
x.load();
}
function checkAutoplay() {
alert(x.autoplay);
}
</script>
<br><br>
<button onclick="enableAutoplay()" type="button">Enable autoplay</button>
<button onclick="disableAutoplay()" type="button">Disable autoplay</button>
<button onclick="checkAutoplay()" type="button">Check autoplay status</button>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<!-- kan hentes lokalt i stedet for: -->
<!--script src="jquery.min.js"></script-->
<script>
function data() {
$(document).ready(function(){
// $("button").click(function(){
$("#div1").load("index.php?mode=update", function(responseTxt, statusTxt, xhr){
if(statusTxt == "success") {
<?php
// ### read last - start
/* connect to gmail */
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
//$username = 'username???';
//$password = 'password???';
/* try to connect */
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());
/* grab emails */
$emails = imap_search($inbox,'ALL');
/* if emails are returned, cycle through each... */
if($emails) {
/* begin output var */
$output = '';
/* put the newest emails on top */
rsort($emails);
/* for every email... */
$email_number = $emails[0];
$overview = imap_fetch_overview($inbox,$email_number,0);
$output.= 'on '.$overview[0]->date.'';
// echo $output;
}
imap_close($inbox);
// ### read last - end
?>
var last_message_on_page = "<?= $output; ?>";
if (responseTxt != last_message_on_page) {
//alert('Der er kommet nye beskeder... Der vises en besked (information) om dette på siden...');
document.getElementById("div1").innerHTML = "Der er kommer nye meddelelser...";
document.title='(1) Der er nye meddelelser...';
enableAutoplay();
}
else {
setTimeout("data()",30*1000);
}
//alert("External content loaded successfully!");
}
if(statusTxt == "error") {
//alert("Error: " + xhr.status + ": " + xhr.statusText);
}
});
// });
});
}
//setTimeout("data()",1*1000);
</script>
<div id="div1"><h2>Let jQuery AJAX Change This Text</h2></div>
<!--
<button>Get External Content</button>
Afspiller kun lyd hvis filen ... eksisterer, kan evt. tilpasses til at læse fra database. Der skal klikkes på siden før der kan afspilles lyd.
-->
</body>
</html>