1

ある種の緊急テキストでアプリに警告する 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: &nbsp;&nbsp;</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>
 &nbsp;&nbsp;&nbsp;&nbsp;<input name="submit" type="submit" value="submit" /><br />
</form>

これを実行すると、私の processtime.php ページは次のようになります。

樹木が倒れた建物 93 の半分はクパチーノ
24にあります
1354217471
86400
1354303871
書かれたファイル: このアラートは 24 時間続く
11-29-12

問題は、指定された時間が経過してもアラートが停止しないことです。ヘルプ!ティア

4

3 に答える 3

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();
于 2012-12-10T16:12:30.780 に答える
0

特定の期間後に「アラート」を実行する場合は、今のところ 2 時間とします。アラートの開始時刻を指定するように求めるユーザーから、入力フィールドを日付/時刻として取得する必要があると思います

次に、2 ~ 5 分ごとに Cron スクリプトを実行し、必要なアクションを実行します。

于 2012-11-27T18:28:03.510 に答える
0

アラートが保存されたら、「有効期限」フィールド (表示を停止する日付/時刻) を設定します。有効期限が切れた場合にページが読み込まれると、アラートが表示されます。

Javascript 内に PHP コードを配置することはできません。PHP はサーバー上で実行され、クライアント側の Javascript は PHP コードの RESULT のみを認識します。新しい http 要求をサーバーに送信する場合 (ページのリロードまたは ajax 要求) を除き、JS コードで PHP コードを実行することはできません。

于 2012-11-27T18:31:35.643 に答える