2013-12-05 2 views
1

Я испытываю довольно странную проблему с моим скриптом. У меня есть этот скрипт, который будет отправлен в jQuery как POST. Это URL, который отсылается:PHP - Шифровать и дешифровать странный знак

url: 'index.php?i=v&p=k&token=<?php echo($tokenS); ?>&key=<?php echo $secretKey; ?>&token=<?php echo $tokenS; ?>&time=<?php echo $time; ?>&stime=<?php echo $stime; ?>' 

Когда в действии, это будет выглядеть примерно так:

url: 'index.php?i=v&p=k&token=F53A8D1113D8A158AD89F6A115DCB13174F0E0CC&key=56.50.57.61.106.118.118.114.60.49.49.105.113.113.105.110.103.48.101.113.111.61.51.53.58.56.52.53.56.54.55.53&token=F53A8D1113D8A158AD89F6A115DCB13174F0E0CC&time=15&stime=1386236453' 

Таким образом, URL содержит весь вид информации, которую мне нужно проверить.

Проблема возникает, когда я должен проверить переменную key. У меня есть это:

$key = inputFilter($_POST['key']); 
      // Need to decrypt the key. 
      $key = $this->sDecrypt($_POST['key']); 
      /* 
      * Need to split the key up.. 
      * After this, we should have an array looking like this: 
      * -> Array ([0] => ID [1] => URL [2] => TIME) <- 
      * ID = id of the advertisement 
      * URL = url of the advertisement 
      * TIME = time of the advertisment started showing (Should match $stime) 
      */ 
      $key = explode(';',$key); 
      $key2 = explode(';',$this->sDecrypt($_SESSION['ad']['key'])); 

Затем, после расшифровки ключа, я проверка его так:

// Check if session key & post key is the same 
      if($key[0] != $key2[0] || $key[1] != $key2[1] || $key[2] != $key2[2]) 
       die("error"); 

А вот где получить то странно. Я получаю здесь die("error");.

Я попытался распечатывания, чем содержал $ ключ:

echo "<pre>"; 
    echo $key[0]; 
    echo "</pre>"; 

    echo "<pre>"; 
    echo $key2[0]; 
    echo "</pre>"; 

В результате этого:

$key[0] = � 
$key2[0] = 608 

Таким образом, $key2[0] имеют правильное значение, но $key[0] не делает. Он содержит какой-то тип водослива.

EDIT:

var_dump($_POST['key']); является NULL

Любая идея, почему?

+1

Вы отображаются URL-адреса с их параметрами GET, а затем ссылаются на POST в вашем коде. Можете ли вы 'var_dump ($ _POST ['key']);' и сообщить нам, что это содержит. –

+0

Только что отредактировал мой вопрос. var_dump ($ _POST ['key']); is NULL – oliverbj

+0

Попробуйте искать в $ _GET ['key'] вместо этого. –

ответ

1

Это действительно выглядит как ваш код AJAX не проводка значения, как вы говорите это, но скорее посылать их через GET. Когда вы создаете URL-адрес, как вы описываете, эти параметры будут в массиве GET, независимо от того, для чего вы задали запрос.

Вместо того, чтобы смотреть в $_POST['key'], поищите в $_GET['key']

Или, если вы действительно хотите, вы можете поменять его на $_REQUEST, который позволит решить нормальный приоритет для COOKIE -> GET -> POST

1

Ваши переменные отправляются на ваш PHP-скрипт в URL-адресе, это метод GET. Однако в своем коде вы используете POST переменные:

$key = inputFilter($_POST['key']); 

И затем расшифровать, что, что приведет к непредсказуемым, и, конечно, нежелательное поведение. Измените это:

$key = inputFilter($_GET['key']); 
+0

Извинения @Borniet за публикацию того, что кажется дублирующим ответом, но так как я отвел вопросника на ответ в комментариях и попросил опубликовать его в качестве ответа, я чувствовал, что я оправдан. –

+0

Не стоит беспокоиться @RobBaillie, похоже, мы оба видели ту же проблему, но, действительно, вы также работали над этим в комментариях. Вы получаете мой взлет! – Borniet

Смежные вопросы