2015-02-02 3 views
-1

왜 my가 변수를 보유하지 않는지 알아 내려고하고 있습니다. 나는 오후 내내 행운이 없는지 시험 해왔다. 코드는 정확할 것 같지만 무언가가 꺼져 있어야한다고 생각합니다.변수에 대해 GET 및 SESSION을 모두 확인하십시오.

내가 코드를 작성했을 때 내 생각을 설명하고 아래에 복사합니다. 코딩/사고가 잘못되어 있으면 저를 고치십시오.

  1. URL에서 $ asset 및 $ serial을 (를) 가져옵니다. 오직 하나 또는 다른 것이있을 것입니다.
  2. 세션이 시작되었는지 확인합니다.
  3. $ asset/$ serial이 비어 있지 않으면 (1 단계에서 의미가 있음을 의미) $ asset/$ serial을 세션에 넣습니다.
  4. $ asset 또는 $ serial 중 하나가 세션에 있으면 해당 텍스트 상자에 표시합니다.

내가 계속해서 부딪히는 문제는 세션이 현재의 URL에있는 모든 변수를 보유하고있는 것으로 보인다는 것입니다. zxing 바코드 스캐너는 한 번에 하나의 변수 만 보낼 수 있기 때문에 세션에 저장해야합니다. 그래서 항상을 확인도

if(session_id() == '') { 
    session_start(); 
} 

, 어쩌면 당신의 $ _GET 바르가 정의되지 않는다 : 당신은이 같은 조건을 사용해야합니다

<!DOCTYPE html> 
<html> 
<head> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css"> 
<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script> 
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> 
</head> 
<body> 

<? 
//Get Asset/serial tags 
$asset = $_GET['asset']; 
$serial = $_GET['serial']; 
if(isset($_SESSION)){ 
    //session not started 
    session_start(); 
} 
if($asset!=""){ 
    $_SESSION["asset"]=$asset; 
} elseif($serial!=""){ 
    $_SESSION["serial"]=$serial; 
} 

echo' 
<div data-role="page"> 
    <div data-role="main" class="ui-content"> 
    <form method="post" action="addComputer.php" name="newComputerForm"> 
     <label for="asset">Asset Number:</label> 
     <input type="text" name="asset" id="asset" value="'.$_SESSION["asset"].'"> 
     <a href="zxing://scan/?ret=http://example.com/jquerytest.php?asset=%7BCODE%7D">Scan an Asset</a> 
     <label for="serial">Serial Number:</label> 
     <input type="text" name="serial" id="serial" value="'.$_SESSION["serial"].'"> 
     <a href="zxing://scan/?ret=http://example.com/jquerytest.php?serial=%7BCODE%7D">Scan a Serial</a> 
    </form> 
    </div> 
</div> 

</body> 
</html>'; 
+1

으로 session_start는 항상 왜이 질문을 downvoted 된 모든 출력 * –

+0

전에 *되어야하는 조건 안에 있어야하지 않나요? 내가 더 잘 쓸 수있는 방법이 있을까? – user2363217

답변

0

엄격하지 않은 피연산자로 데이터의 유효성을 검사하는 중입니다. URL에 자산이 없으면 $ asset은 null입니다. 코드 사용 :

//validates true in this scenario. 
if($asset!=""){ 
    $_SESSION["asset"]=$asset; // $_SESSION["asset"] contains null. 
} 

! = use! == 대신 빈 문자열을 확인하십시오. 또한는 isset와 $ 자산을 할당 : 추가 정보를 위해

//Get Asset/serial tags 
$asset = isset($_GET['asset']) ? $_GET['asset'] : null; 
$serial = isset($_GET['serial']) ? $_GET['serial'] : null; 

//check session started. using the comment of Yair.R 
if(session_id() == ''){ 
    //session not started 
    session_start();session_id() 
} 
if($asset !== null){ 
    $_SESSION["asset"]=$asset; 
} elseif($serial !== null){ 
    $_SESSION["serial"]=$serial; 
} 

을 엄격 피연산자에 : PHP: Comparison Operators

0

: 여기

내 코드입니다

$asset = isset($_GET['asset'])? $_GET['asset'] : ''; 
관련 문제