我在PHP中有一个警报脚本,它通过某种紧急文本警告应用程序。 现在我需要以某种方式添加一些代码,允许管理员将警报设置为定时警报。目前,他们可以设置警报,然后发送另一个将删除警报的请求。
下面的代码已经改变,以反映我目前正在使用的内容,我的大部分工作都在工作,除了在时间到期后删除,即goto a;例程。
$filename = "alertCheck.php";
$timedalertsingle = $_POST['timedalertsingle'];
$timedalerthours = $_POST['timedalertchoice'];
$timestamp = time();
$timedalertseconds = $timedalerthours * 3600;
// Testing the variables
echo $timedalertsingle."<br />";
echo $timedalerthours."<br />";
echo $timestamp."<br />";
echo $timedalertseconds."<br />";
echo ($timestamp + $timedalertseconds)."<br />";
// write the file
$fp = fopen ($filename, "w");
if ($fp) {
fwrite ($fp, $timedalertsingle);
fclose ($fp);
echo ("<span style='color: #6FF;'>File written:</span> " . " This alert will last for " .$timedalerthours . " Hour(s)" . "<br />");
echo date('m-d-y') ."<br />";
}
else {
echo ("File was not written");
}
// test the time
a:
if (time() > ($timestamp + $timedalertseconds)){
// overwrite the file
fwrite ($fp);
fclose ($fp);
echo ("<span style='color: #6FF;'>There are no alerts.</span> ");
}
else {
goto a;
}
我的输入(更改为反映新的变量名称:
<form action="processtime.php" method="post" name="timedalert">
<strong>Post a Timed Alert: </strong><input name="timedalertsingle" size="60" type="text" /><br />
<strong>How many hours this alert will be displayed: </strong>
<select name="timedalertchoice" />
<option value=".0833">5 Minutes</option>
<option selected="selected" value="1">1 hour</option>
<option value="2">2 hours</option>
<option value="4">4 hours</option>
<option value="6">6 hours</option>
<option value="8">8 hours</option>
<option value="12">12 hours</option>
<option value="18">18 hours</option>
<option value="24">24 hours</option>
</select>
<input name="submit" type="submit" value="submit" /><br />
</form>
所以这是我的processtime.php页面运行之后的样子:
树倒下了93号楼的一半在Cuppertino中 24个问题是它在给定时间后没有停止警报。 救命! TIA
答案 0 :(得分:0)
如果您希望运行“警报”。经过一段特定时间后,现在说2个小时。我猜你必须从用户那里取一个输入字段作为日期/时间,要求他指定警报的开始时间
然后每2-5分钟运行一次Cron脚本并执行所需的操作
答案 1 :(得分:0)
保存警报时,设置“过期”字段(停止显示警报的日期/时间)。当页面加载时如果过期&gt;现在,显示警报。
你不能把PHP代码放在Javascript中。 PHP在服务器上执行,客户端Javascript只能看到PHP代码的结果。除了通过向服务器发送新的http请求(页面重新加载或ajax请求)之外,您不能让JS代码执行PHP代码。
答案 2 :(得分:0)
class RadamsAlert {
const ALERT_FILE = 'alerts.dat';
function addAlert($alertMessage, $expirationTime){
$alert = array('alert' => $alertMessage, 'expiration' => $expirationTime);
$alerts = $this->readAlerts();
$alerts[] = $alert;
$this->writeAlerts($alerts);
}
function readAlerts(){
$alerts = array();
if(file_exists(self::ALERT_FILE)){
$contents = file_get_contents(self::ALERT_FILE);
$readAlerts = unserialize($contents);
if(count($readAlerts) > 0){
foreach($readAlerts as $alert){
if($alert['expiration'] > time()){
$alerts[] = $alert;
}
}
}
}
return $alerts;
}
function writeAlerts(array $alerts){
file_put_contents(self::ALERT_FILE, serialize($alerts));
}
}
$timedalertsingle = isset($_POST['timedalertsingle']) ? $_POST['timedalertsingle'] : false;
$timedalertseconds = isset($_POST['timedalertchoice']) ? (int)$_POST['timedalertchoice'] : 0;
$timestamp = time();
if($timedalertsingle !== false && $timedalertseconds > 0){
$radAlert = new RadamsAlert();
$radAlert->addAlert($timedalertsingle, $timedalertseconds + $timestamp);
}
header('Location: sec.html');
exit();