-4

基本的に私が持っているのは、いくつかのフォームとこれです:

<?php

require 'inc/conn.php'; 

$sql="INSERT INTO objednavky ( kdo, kdy, m1, mm1, m2, mm2, m3, mm3 )
VALUES
('$_POST[tkdo]','$_POST[thed]','$_POST[obb1]','$_POST[tmm1]',
'$_POST[obb2]','$_POST[tmm2]','$_POST[obb3]','$_POST[tmm3]')";

if (!mysql_query($sql,$con))
{
  die('Error: ' . mysql_error());
}

header('Location: http://www.juxcore.com/x/vita/protected.php');

mysql_close($con);

たとえば、木曜日がフォームを送信できないようにする必要があり、フォームを送信できる最後の瞬間が水曜日の午後 18 時です。手伝ってくれてありがとう

4

4 に答える 4

2

あなたの質問は実際には HTML/Javascript の質問であり、PHP/SQL ではないようです。

一見すると、フォームを送信できないようにHTMLをJavascriptで変更すると言うからです。

document.getElementById("myform").action = "";

... 提出を妨げます。を に切り替えるなど、多くの方法がありformますdiv

document.getElementById("myform").setAttribute("type","div");

または、送信ボタンを表示から削除して、クリックできないようにします。

document.getElementById("mysubmit").style.display="none";

編集:ああ、私は完全に明らかな方法を忘れていました.フォーム検証を使用してください. この方法では、水曜日が終わるまで URL に駐車できず、HTML で送信できます。

<form ... onsubmit="return validateForm()">

送信をキャンセルするには、javascript 関数validateForm(以下の php と同様) を記述して false を返すだけです。私は w3school リンクを提供するのは好きではありませんが、ここにきれいな例があります: http://www.w3schools.com/js/js_form_validation.asp

とにかく、もっと多くの方法があります。適切な日にいずれかを実行し、javascript を使用しnew Date().getDay()new Date().getHours()いつ決定するかを決定します。

(これは、要素の属性を変更する 2 つの主な方法の例でもあります)。

これは、アドレス行から直接送信することを止めるものではないと思います。その場合、PHP を編集する必要があり、Date()オブジェクトを使用します。

$day = Date("w");
if ( $day == 4 || $day == 5 ) {
    $time = Date("G");
    if ( $day != 5 || $time < 18 ) {
        if (!mysql_query($sql,$con)) die('Error: ' . mysql_error());
    }
}

サーバーに組み込まれた同じコントロールでそれを制御する HTML/Javascript の方法の両方を実行することをお勧めします。

于 2012-10-25T12:40:33.000 に答える
0

ビューに JS を追加して、フォームを送信不可にすることができます。

私のアイデアは次のとおりです。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    <?php if($currentDay < $dontSubmitFormDay):?>
         $('#myForm').submit(function(){
              return false;
         });
    <?php endif;?>
});
</script>
于 2012-10-25T12:44:20.457 に答える
0

その日の水曜日の午後 6 時のタイムスタンプを取得する必要があります。次に、ユーザーがフォームを送信するたびに、その正確な時刻のタイムスタンプを取得し、比較を行います。

もし(今の時間

于 2012-10-25T12:47:15.990 に答える
0

まず第一に、クライアント (ブラウザ) の時計に応答しないでください。これは、エンド ユーザーが望む場合はごまかすことができます。代わりに、PHP を使用してセッションを作成し、フォームを送信できる最後の日付/時刻の日付/時刻をマークします。そのフォームを受信したら、サーバーの日付/時刻 (エンド ユーザーがごまかすことができない日付) を使用してチェックを行います。

このようにして、フォームの送信を許可しないことによるセキュリティの強化が妨げられないことを完全に確信できます。

ただし、Javascript を使用してユーザー エクスペリエンスを向上させることはできますが、データベース保護のためにクライアントの日付/時刻に返信しないでください。

于 2012-10-25T12:57:36.770 に答える