PHP, если isset $ _GET любой из параметров, если они присутствуют в запросе POST к сценарию - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть странный случай, когда скрипт должен время от времени получать значения 2-х параметров. Один из параметров - гео, а другой - приливы, и мне нужно разбить приливы на 4 разные переменные для моего использования. Я хотел бы установить условие, при котором параметр geo может всегда присутствовать в запрошенном URL, а приливы могут не присутствовать. Это было бы возможно с оператором ИЛИ "||"? На данный момент у меня есть

if (isset($_GET['tids']) || isset($_GET['geo'])) { 
    $tidsexplode=$_GET['tids'];
    $pieces=explode("separator", $tidsexplode);
    $country=$_GET['geo'];
    // do what I want with tids exploded $pieces and geo
}else{
    // take action as with tid1, tid2, tid3, tid4 and geo location being sent separately in different parameters and their other variables as usual
}

По сути, я хочу сказать, чтобы скрипт действовал по-своему, если он помещен в POST с параметрами tids и geo, а если нет - обрабатываются как обычно для отдельных приливов 1, 2, 3 и 4, а географическое местоположение отправляется в другом месте. путь с другими параметрами. Если я попытаюсь разделить их запятыми (,) вместо этого или оператором ИЛИ (||), это означает, что должны присутствовать все условия, т. Е. Чтобы приливы и гео всегда отправлялись в скрипт, иначе скрипт не будет обрабатываться, если только геопараметр установлен. Как настроить его на обработку, если присутствует геопараметр, но приливов может не быть? Дело в том, что некоторые другие скрипты могут передавать данные для tid1, 2, 3, 4 и т. Д. Отдельно в различных параметрах tid1, tid2, tid3 и tid, а geo извлекается изнутри с помощью другой переменной, и из некоторых других источников я получаю все Приливы, смешанные с разделителем в одну строку и расположение в качестве параметра гео. Вот почему я хочу различать случаи внутри одного и того же сценария, не копируя один и тот же сценарий с другим именем, чтобы различать случаи, и чтобы отдельные API вызывали разные файлы, потому что им приходится обрабатывать данные по-разному.

Ответы [ 4 ]

0 голосов
/ 19 сентября 2018

Я провел обширное тестирование и похоже, что написанный мною код действительно выполняет свою работу, а ошибка была в другом месте. Спасибо всем за то, что вложили время и энергию в помощь мне, ответив! Очень ценится.

0 голосов
/ 18 сентября 2018

Вы можете использовать Вложенные операторы IF . Попробуйте код ниже

if (isset($_GET['geo'])) {        
   $country=$_GET['geo'];
   if( isset($_GET['tids']) ){
      $tidsexplode=$_GET['tids'];
      $pieces=explode("separator", $tidsexplode);
   }      
}else{
  // take action as with tid1, tid2, tid3, tid4 and geo location being sent separately in different parameters and their other variables as usual
}

Надеюсь, это поможет.

0 голосов
/ 18 сентября 2018
 if (isset($_GET['tids']) || isset($_GET['geo']))
 {
   //run process for both
 }
 else 
 {
   function tids ($tid1=null, $tid2=null, $tid3=null, $tid4=null){/*run process*/}

  //split tids
  tids($tid1,$tid2,$tid3,$tid4); //call tids function
 }

Приведенная выше функция заменит значения $tids на null, если они недоступны

0 голосов
/ 18 сентября 2018

Я думаю, что вы пытаетесь сказать, если у меня есть оба, делаю это, если у меня есть только один, другой?Если это так, это должно сделать это, или, по крайней мере, направить вас в правильном направлении.

if (isset($_GET['tids']) && isset($_GET['geo'])) { 
     $tidsexplode=$_GET['tids'];
     $pieces=explode("separator", $tidsexplode);
     $country=$_GET['geo'];
     // do what I want with tids exploded $pieces and geo
}elseif (isset($_GET['tids']) && !isset($_GET['geo'])){
    // take action as with tid1, tid2, tid3, tid4 and geo location being sent separately in different parameters and their other variables as usual
}
...