2012-08-22 1 views
1

사용자가 특정 옵션을 선택하여 양식을 제출할 때 설정된 세션 변수가 있습니다. 페이지가 새로 고침 될 때이 세션 변수를 테스트해야하며 존재하는 경우 폼을 읽기 전용으로 만듭니다. 이것은 지금까지 내 코드입니다, PHP :Jerery로 페이지로드시 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";  
}  
?> 

'field'는 두 개의 옵션 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 코드를 맨 위에 쓰고 머리말 태그를 javascript 함수로 사용합니다.

body onload 태그에서 래퍼 함수를 ​​호출하면 두 함수가 모두 호출됩니다. 첫 번째 함수는 PHP 문서에서 존재하는 세션 변수를 얻은 다음 두 번째 함수가 있으면 테스트 할 것이라고 생각했습니다. 비어 있지 않으면 필드가 읽기 전용이됩니다.

그러나 드롭 다운 목록에서 아니오를 선택하고 양식을 제출하면 페이지가 새로 고침되고 아무 일도 일어나지 않습니다. 필드는 읽기 전용이 아닙니다.

+1

그것은 귀하의 질문에 답하지 않을 경우, 우선은 그 PHP 내부의 요소를 비활성화 할 수 있습니다,하지만 당신은'mysql_로 *'기능의 사용을 중지해야한다 "addFname"를 촬영했다. 그들은 더 이상 사용하지 않을 것입니다. 대신 [PDO] (http://php.net/manual/en/book.pdo.php) (PHP 5.1 이상 지원) 또는 [mysqli] (http://php.net/manual/en/book)를 사용하십시오. mysqli.php) (PHP 4.1부터 지원). 어떤 것을 사용해야하는지 잘 모르겠 으면 [이 기사를 읽으십시오] (http://net.tutsplus.com/tutorials/php/pdo-vs-mysqli-which-should-you-use/). – Matt

답변

2

왜 자바 스크립트를 사용하고 있나요?

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



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

여기 난 상태

2

PHP가 "사용 불가 상태"양식을 가지고 있다고 가정하면, ajax 호출이 필요 없습니다. PHP는 페이지를 작성할 때 JS 변수를 출력 할 수 있습니다.

<script type="text/javascsript"> 
var disableForm = <?php echo (($_SESSION['somevar'] == 'whatever' ? 'true' : 'false') ?>; 
if (disableForm) { 
    ... 
} 
</script> 
+0

펀치를 때리십시오. 예, PHP 코드를 JS 블록에 삽입 할 수 있습니다. – khaverim

관련 문제