2013-05-23 11 views
0

У меня есть вопрос об использовании PHP_SELF для отправки из формы. Это то, что у меня в index.php:PHP_SELF on submit form

<body> 
    <div class="container"> 
     <div class="row"> 
      <div class="span12"> 
       <?php 
        // If you get an appid, 
        if(isset($_GET['appid'])) { 
         // GET appid 
         $appid = $_GET['appid']; 

         $json_url ='http://api.nameurl.com/api/gateway/call/1.4/getApp?appid=' . $appid; 

         $ch = curl_init($json_url); 
         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

         $str = curl_exec($ch); 
         curl_close($ch); 

         $data = json_decode($str); 
         $array = json_encode($data); 
        } 
        else if(isset($_POST['submit'])){ 
         $name = $_POST['appid']; 
         echo "User Has submitted the form and entered this name : <b> $name </b>"; 
         echo "<br>You can use the following form again to enter a new name."; 
        } 
        else{ ?> 
         <!-- Form --> 
         <form class="well" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
          <label>Your appid</label> 
          <input type="text" class="span3" name="appid" id="appid" placeholder="Type your appid here..."> <br> 
          <button type="submit" id="submit" class="btn btn-primary" data-loading-text="Loading...">Submit</button> 
         </form> 

       <?php } 
       ?> 

       <p id="errors" class="text-error"></p> 
      </div> 
     </div> 

     <hr> 

    </div> 

проверить, если я получаю AppID от предыдущей страницы.
Да -> получить данные из апи
Нет -> Показать форму, так что вы можете вставить APPID

Затем при нажатии на представить в форме, я хочу, чтобы получить APPID вставку и сделать ту же операцию, выше.

Что я делаю неправильно?

+0

Удалить значение 'action' формы, потому что вы обрабатываете форму в одной и той же странице. И замените 'метод' с' post' на 'get'. –

+0

Ваш метод формы установлен на POST. Вы используете GET для проверки на appid –

+0

, если вы используете сообщение метода, вы должны попробовать с $ _POST ['appid'] вместо $ _GET ['appid'] – sAnS

ответ

3

У вас есть метод для формы, заданный как post, но вы пытаетесь получить доступ к приложению, используя $_GET['appid']. Вам придется либо изменить метод формы для get, или получить доступ к AppID, используя $_POST['appid']

0

имя отсутствует в кнопку Отправить

<button type="submit" name ="submit" id="submit" class="btn btn-primary" data-loading-text="Loading...">Submit</button> 
2

Там нет $ _POST [ «Submit»] определяется. Причина заключается в том, что кнопка не имеет атрибут name="submit"

3

Попробуйте это ....

<body> 
     <div class="container"> 
      <div class="row"> 
       <div class="span12"> 
        <?php 
         // If you get an appid, 
         if(isset($_GET['appid'])) { 
          // GET appid 
          $appid = $_GET['appid']; 

          $json_url ='http://api.nameurl.com/api/gateway/call/1.4/getApp?appid=' . $appid; 

          $ch = curl_init($json_url); 
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

          $str = curl_exec($ch); 
          curl_close($ch); 

          $data = json_decode($str); 
          $array = json_encode($data); 
         } 
         else if(isset($_POST['submit'])){ 
          $name = $_POST['appid']; 
          echo "User Has submitted the form and entered this name : <b> $name </b>"; 
          echo "<br>You can use the following form again to enter a new name."; 
         } 
         else{ ?> 
          <!-- Form --> 
          <form class="well" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
           <label>Your appid</label> 
           <input type="text" class="span3" name="appid" id="appid" placeholder="Type your appid here..."> <br> 
           <button type="submit" id="submit" name="submit" class="btn btn-primary" value="Submit" /> 
          </form> 

        <?php } 
        ?> 

        <p id="errors" class="text-error"></p> 
       </div> 
      </div> 

      <hr> 

     </div> 
0

вы определили метод действия, как POST но получить его как GET вы можете использовать также $ _REQUEST, чтобы получить переменные как от запроса post/get.

Изменение этого

if(isset($_GET['appid'])) { 
        // GET appid 
        $appid = $_GET['appid']; 

к

if(isset($_REQUEST['appid'])) { 
        // GET appid 
        $appid = $_REQUEST['appid']; 

решает случай, а также.

Переменные в $ _REQUEST предоставляются сценарию через механизмы ввода GET, POST и COOKIE и поэтому могут быть изменены удаленным пользователем и не могут быть доверены. Наличие и порядок переменных, перечисленных в этом массиве, определяются в соответствии с директивой конфигурации переменных переменных PHP.

http://php.net/manual/pl/reserved.variables.request.php