2012-06-27 3 views
1

Я пытаюсь построить универсальную систему обратной передачи для сценария GPT, и у меня есть немного проблема.

Я не уверен, что я делаю это разрешено в PHP, так что может быть проблемой, но это то, что я получил:

$ip = cleanQuery($_SERVER['REMOTE_ADDR']); 
$getaffip = mysql_query("SELECT * FROM affiliates WHERE affip = '".$ip."' OR affip2 = '".$ip."' OR affip3 = '".$ip."' OR affip4 = '".$ip."'"); 
$affinfo = mysql_fetch_array($getaffip); 

$affname = $affinfo['name']; 
$campidi = $affinfo['campid']; 
$subidi = $affinfo['subid']; 
$ratei = $affinfo['rateid']; 
$statusi = $affinfo['creditstatus']; 
$credit = $affinfo['creditid']; 
$reverse = $affinfo['reverseid']; 

$subid = cleanQuery($_GET['$subidi']); 
$rate = cleanQuery($_GET['$ratei']); 
$status = cleanQuery($_GET['$statusi']); 
$campid = cleanQuery($_GET['$campidi']); 

что это означает, что тянет переменные, особенно филиал использует, когда они посылают информацию на ваш постбэк, например, они посылали это на обратной передаче URL:

http://yoursite.com/postback/postback.php?campaignid=11546&yti=me&credit=1 

в $affinfo Fetches бы спустить определенную информацию, что конкретный филиал посылает, как в ссылке выше $subidi для т он присоединяется к тому, что будет yti, а $campidi будет campaignid, но $_GET не тянет эту информацию. Он работает, если я изменю его на $_GET['yti']; в этом случае, но это не сделает его универсальным, поскольку все филиалы не используют одни и те же переменные, когда они отправляют информацию в сценарий обратной передачи.

Я думаю, что $_GET не поддерживает $values, так что будет моим лучшим способом заставить его получить правильную информацию, или у меня есть какая-то опечатка здесь, которую я упустил?

+0

вы попробуйте использовать двойные кавычки на $ _GET с переменными? Также я считаю, что где-то я читал, что это на самом деле не может быть поддержано, но я не сделал этого исследования. – Ryan

+1

@ любой, кто предлагает изменить их на двойные кавычки: плохо. – Ryan

ответ

7

Не процитировать ключи, если они являются переменными:

$subid = cleanQuery($_GET[$subidi]); 
$rate = cleanQuery($_GET[$ratei]); 
$status = cleanQuery($_GET[$statusi]); 
$campid = cleanQuery($_GET[$campidi]); 

Было бы работали, если бы вы использовали двойные кавычки вместо одиночного, но это было бы бессмысленной и плохой практикой, чтобы бесполезно приводить переменные. Переменные были бы интерполированы внутри двойных кавычек, в конечном счете давая результат, который вы получили.

+0

Мне так глупо сейчас, спасибо за исправление моей ошибки – kira423

4

Переменные в одинарных кавычках не оцениваются. Двойные кавычки.

$foo = 'var'; 
echo 'my $foo'; // my $foo 
echo "my $foo"; // my var 

Но вы не должны использовать какие-либо цитаты в этой ситуации

5

Слишком много цитат :) Должно быть так:

$subid = cleanQuery($_GET[$subidi]); 
$rate = cleanQuery($_GET[$ratei]); 
$status = cleanQuery($_GET[$statusi]); 
$campid = cleanQuery($_GET[$campidi]); 
Смежные вопросы