2017-12-23 13 views
1

선택한 값 (양식에서)에서 변수 (var parcela)를 만듭니다.POST-GET 세션 변수 (javascript-php) - 자바 스크립트는 이전 변수를 사용하지만 마지막으로 생성하지 않습니다.

var parcela; 
$(document).ready(function(){ 
    parcela = localStorage.getItem("parcela"); 
    if (parcela !== '') { 
     $('#parcela').val(parcela); 
    } 

    $("#parcela").on('change',function() { 
     selectBoxVal_1 = $('#parcela').val(); 
     if (typeof(Storage) !== "undefined") { 
      localStorage.setItem("parcela", selectBoxVal_1); 
     } else { 
      alert('Sorry! No Web Storage support..'); 
     } 
     location.reload(); 
    }); 
}); 

생성 된 변수 (parcela)에서 PHP로 세션 변수를 만듭니다.

$.post("phpscripts/session.php", {"parc_id": parcela}); 

PHP (session.php) 그 후

<?php 
session_start(); 

$parcela = $_POST["parc_id"]; 
$parcela_int = (int)$parcela; 

if($_POST){ 
    $_SESSION['parcela_id'] = $parcela_int; 
} 
?> 

, 다른 PHP 스크립트

query.php

<?php 
session_start(); 
require("common.php"); 
$user_id = htmlentities($_SESSION['user']['id_korisnika']); 

$parc = $_SESSION['parcela_id']; 

try 
{ 
$stmt = $db->prepare("SELECT y_cent, x_cent FROM parcele WHERE id_korisnika='$user_id' AND id_parcele='$parc' "); 
$stmt->execute(); 
} 
catch(PDOException $ex) 
{ 
    die("Failed to run query: " . $ex->getMessage()); 
} 

$rows = $stmt->fetchAll(); 
.... 

에 생성 된 세션 변수 충동이 모두 완벽하게 작동 !

그러나 자바 스크립트에서 쿼리 (query.php)를 사용하여 PHP 스크립트를 호출하면 문제가 발생합니다. JS는 마지막으로 선택된 세션 변수 대신 이전 세션 변수를 사용합니다.

$.ajax({ 
    url: 'phpscripts/query.php', 
    type: 'GET', 
    success : function(data) { 
     chartData = data; 
      //console.log(chartData); 
... 

누구에게 무슨 문제가 있는지 알고 있습니까? 이 문제를 해결하기 위해 이틀 동안 노력하고 있습니다 ...

참고 : 자바 스크립트 코드는 단일 스크립트에 포함되어 있습니다.

+0

SQL 내에 변수를 직접 포함하여 준비된 문구의 아름다움과 목적을 놓치고 있습니다. 따라서 잠재적 인 공격자에게 문을여십시오. – RamRaider

+0

@RamRaider, OK. 나는 동의한다. 이 문제로 나를 도울 수 있습니까? – kamfulebu

+0

그래서 phpscripts/session.php 스크립트와 병렬로 phpscripts/query.php를 실행하십니까? (귀하의 메모에 자바 스크립트가 단일 스크립트에 포함되어 있습니다) – knetsi

답변

0

나는이 문제를 해결했다. PHP 스크립트를 별도의 스크립트로 호출하는 자바 스크립트 코드의 일부를 추출해야했습니다. jQuery getScript() 메서드를 사용하여 새 JS 스크립트를 호출했습니다.

고맙습니다. @knets.