1

ユーザーが特定のオプションを選択してフォームを送信したときに設定されるセッション変数があります。ページが更新されたら、このセッション変数をテストする必要があります。存在する場合は、フォームの一部を読み取り専用にします。これはこれまでの私のコードです、php:

<?php
require("header.php");

if(isset($_REQUEST['searching'])){ //check if form has been submitted

echo"<h2>Submitted</H2><p>";
    connect('final');//connect to DB

  $fName = $_POST['addFname']; 
  $lName = $_POST['addLname']; 
  $address = $_POST['address']

  $dropdown = $_POST['field']; // yes or no option 

    $fName = htmlspecialchars($fName); 
    $fName = mysql_real_escape_string($fName); 
    $lName = htmlspecialchars($lName); 
    $lName = mysql_real_escape_string($lName);
    $address = htmlspecialchars($line2); // stop HTML characters
    $address = mysql_real_escape_string($line2); //stop SQL injection


if($dropdown== "no"){
  $_SESSION['name'] = "$fName";    
}     
?>

「フィールド」は、2 つのオプション yes と no を含むドロップダウンの名前です。

変数を取得するための MY JS:

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script type = "text/javascript">
var session;
function multi(){
    $.ajaxSetup({cache: false})
    $.get('getSession.php', {requested: 'foo'}, function (data) {
        session = data;
});
}
</script>

私はそれを使用してセッションから変数を取得します.getSession.phpには次のものがあります:

    <?php
session_start();
if (isset($_GET['name'])) {
    // return requested value
    print $_SESSION[$_GET['name']];
} else {
    print json_encode($_SESSION);
}
?>

最後に、テキストフィールドを無効にするこの機能があります

    <script language="JavaScript">
<!--
function enable_text2()
{
if (session !=""){
status = "true";
document.add.addFname.readonly=readonly;
document.add.addLname.readonly=readonly;
}
}
//-->
</script>

私のhtmlの残りの部分は単なるフォームです。これはすべて、上部にphpコードがあり、headタグにjavascript関数がある1つのドキュメントです。

body onload タグでラッパー関数を呼び出すと、これらの関数の両方が呼び出されます。最初の関数は、php ドキュメントから存在する場合はセッション変数を取得し、2 番目の関数は空でないかどうかをテストすると考えました。その場合、フィールドが読み取り専用になることはありませんでした。

ただし、ドロップダウンで [いいえ] を選択してフォームを送信すると、ページが更新されても何も起こらず、フィールドは読み取り専用ではありません。

4

2 に答える 2

2

PHPがこの「無効にする必要がある」フォームを使用しているページを生成していると仮定すると、ajax呼び出しは必要ありません。PHPはページの作成時にJS変数を出力できます。

<script type="text/javascsript">
var disableForm = <?php echo (($_SESSION['somevar'] == 'whatever' ? 'true' : 'false') ?>;
if (disableForm) {
   ...
}
</script>
于 2012-08-22T15:54:27.697 に答える
2

なぜJavaScriptを使用しているのですか??

session_start();
if (isset($_GET['name'])) {
    $disable=true;
} else {
    $disable=false;
}



 <input type="text" name="addFname" <?php if($disable) { ?> readonly="readonly" <?php } ?>

ここでは、「addFname」を使用しています。条件が満たされている場合、その php 内の要素を無効にできます。

于 2012-08-22T16:05:29.220 に答える