2009-10-23 2 views
1

У меня есть скрипт PHP A, который отображает данные из базы данных.Невозможно выполнить php-скрипт через CURL

У меня есть еще один скрипт B, который получает содержимое скрипта A. Но мне нужно содержание после выполнения сценария A. Но этого не происходит.

// скриптом

enter code here 
<?php 
    session_start(); 
    if(!isset($_SESSION['username'])) 
     { 
     print "You have not logged in"; 
     header('Location: index.htm'); 

     } 
    session_write_close(); 
    ?> 
    <?xml version="1.0"?> 
     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
     <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs"> 
     <head> 
      <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
      <meta http-equiv 

="content-language" content="cs" /> 
     <meta name="robots" content="all,follow" /> 

     <meta name="author" content="All: ... [Nazev webu - www.url.cz]; e-mail: [email protected]" /> 
     <meta name="copyright" content="Design/Code: Vit Dlouhy [Nuvio - www.nuvio.cz]; e-mail: [email protected]" /> 

     <title>WAVES 1.0!</title> 
     <meta name="description" content="..." /> 
     <meta name="keywords" content="..." /> 

     <link rel="index" href="./" title="Home" /> 
     <link rel="stylesheet" media="screen,projection" type="text/css" href="./css/main.css" /> 
     <link rel="stylesheet" media="print" type="text/css" href="./css/print.css" /> 
     <link rel="stylesheet" media="aural" type="text/css" href="./css/aural.css" /> 
    <script type="text/javascript" src="js/jquery-1.2.6.pack.js"></script> 

    <script language="javascript" type="text/javascript"> 
    function getQueryParams(val) 
    { 
      //Use the window.location.search if we don't have a val. 
      var query = val || window.location.search; 
      query = query.split('?')[1] 
      var pairs = query.split('&'); 
      var retval = {}; 
      var check = []; 
      for(var i = 0; i < pairs.length; i++) 
      { 
        check = pairs[i].split('='); 
        retval[check[0]] = check[1]; 
      } 

      return retval; 
    } 

      var values = getQueryParams(); 
      var v = values['id'];  


    $(function() 
    { 



    $.getJSON("getviewresults.php?id="+v, function(data) 
     { 

       $.each(data, function(entryIndex, entry) 
      { 

      var name = entry['tid']; 
      var user = entry['status']; 
      var p= entry['description']; 
      var f = entry['time']; 
      var stime = entry['stime']; 


    $('<tr> <td>'+name+'</td> <td > '+p+'</td> <td> '+user+'</td> <td>'+f+'</td> <td> <a href="staticlog.htm?id='+v+'&tid='+name+'&stime='+stime+'" target="_blank">Log </a> </td> <td><a href="staticslog.htm?id='+v+'&tid='+name+'&stime='+stime+'" target="_blank">Device Log </a> </td><td> <a href="viewethlog.php?id='+v+'&tid='+name+'&stime='+stime+'" target="_blank"> LAN </a> </td> </tr> ').appendTo('#container'); 



     }); 
    }); 


     }); 

    </script> 

    </head> 

    <body> 

    <!-- Main --> 
    <div id="main" class="box"> 

     <!-- Header --> 
     <div id="header" style="left: 0px; width: 100%; top: 1px; height: 61px"> 

      <!-- Logotyp --> 
      <h1 id="logo" style="left: 46px; top: 19px"><a href="./" title="CrystalX [Go to homepage]">WAVES 1.0!<strong>!</strong><span></span></a></h1> 
      <hr class="noscreen" />   
      <img src="Design/logo.jpg" style="right:0px; width: 134px; position: absolute; 
       top: -2px; height: 61px" /> 




     </div> <!-- /header --> 

     <!-- Main menu (tabs) --> 
     <div id="tabs" class="noprint" style="width:100%; left: 0px; position: relative; top: 0px; height:24px"> 

       <h3 class="noscreen">Navigation</h3> 
       <ul class="box"> 
        <li><a href="home.php">Home<span class="tab-l"></span><span class="tab-r"></span></a></li> 
        <li><a href="package.php">Package<span class="tab-l"></span><span class="tab-r"></span></a></li> 
        <li ><a href="config.php">Configs<span class="tab-l"></span><span class="tab-r"></span></a></li> 
        <li><a href="live.php">Live<span class="tab-l"></span><span class="tab-r"></span></a></li> 
        <li id="active"><a href="results.php">Results<span class="tab-l"></span><span class="tab-r"></span></a></li> 
        <li><a href="logout.php">Log out<span class="tab-l"></span><span class="tab-r"></span></a></li> 
       </ul> 

      <hr class="noscreen" /> 
     </div> <!-- /tabs --> 

     <!-- Page (2 columns) --> 
     <!-- /page --> 

     <div style="border-right: #336699 thin solid; border-top: #336699 thin solid; left: 0px; 
      border-left: #336699 thin solid; width: 100%; border-bottom: #336699 thin solid; 
      position: relative; top: 0px; height: 480px; overflow:auto"> 
      <table id="container" style="left: 0px; width:100%; position: relative; "> 
       <tr> 
        <td style="width: 100px"> 
         <strong>Testid</strong></td> 
        <td style="width: 382px"> 
         <strong>Description</strong></td> 
        <td style="width: 100px"> 
         <strong>Status</strong></td> 
        <td style="width: 100px"> 
         <strong>Time Taken</strong></td> 
        <td style="width: 100px"> 
         <strong>Log </strong></td> 
        <td style="width: 100px"> 
         <strong>Device Log </strong></td> 
        <td style="width: 100px"> 
         <strong>LAN </strong></td> 



       </tr> 
      </table> 
     </div> 

     </div> 
     <!-- Footer --> 
     <!-- /footer --> 

    <!-- /main --> 

    </body> 
    </html> 

// Сценарий B

  $ch = curl_init(); 
      $url = "http://localhost/waves/viewresults.htm?id=".$id; 
      curl_setopt($ch, CURLOPT_HEADER, 0); 
      curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);     
curl_setopt($ch, CURLOPT_URL, $url); 
      $data = curl_exec($ch); 
      curl_close($ch); 

      chdir("temp/file"); 
      $myFile = "summary.htm"; 
      $fh = fopen($myFile, 'w') or die("can't open file"); 
      fwrite($fh, $data); 
      fclose($fh); 

Файл summary.htm просто имеет код сценария А, что означает, что он не выполнил NND, следовательно, не имеет данные из базы данных.

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

ответ

3

Итак, я начал отвечать, не читая ваш код, но теперь вижу, что вы используете JavaScript для вывода данных из Script A вместо использования PHP.

Почему это не работает: Вы динамически создаете таблицу во время выполнения с использованием JavaScript на стороне клиента. Это будет корректно отображаться в браузере, но не будет отображаться через curl. libcurl не поддерживает javascript.

Предлагаемое решение Я хотел бы предложить вам изменить getviewresults.php и следовать this tutorial в буфер вывода в файл или вы можете также необязательно просто переписать сценарий для использования на стороне сервера скрипт.

Это была действительно интересная проблема, спасибо.

+0

Согласен с этим комментарием. Вы пытаетесь получить идентификатор с помощью JavaScript. Вам нужно переписать его на PHP. Я не вижу причины использовать JavaScript, если вы не используете этот файл в другом месте и не пытаетесь избежать дублирования. –

+0

Благодарим вас за ваше превосходство, сэр! По-видимому, автор нашего вопроса использует jQuery и имеет PHP-скрипт, который возвращает строку JSON.Эти две вещи идут рука об руку, пока вы не попытаетесь получить к ней доступ где-нибудь за пределами традиционного браузера. Я по-прежнему считаю, что самым компактным решением является изменение getviewresults.php, но другой жизнеспособным вариантом было бы создание другой php-страницы для предоставления конкретных данных. –

0

Попробуйте переименовать «viewresults.htm» в «viewresults.php», поэтому он анализируется как PHP (вы можете использовать mod_rewrite для внутреннего перенаправления viewresults.htm на viewresults.php, чтобы ваши URL-адреса не менялись).

+0

Я пробовал это. Но это не помогло. Summary.htm - это только выходной файл. Основная работа выполнена CURL при получении контента. – Vidya

+0

А, это должно было быть viewresults не резюме – Greg

+0

это уже скрипт php. Я назвал его viewresults.php – Vidya

0

Откройте URL-адрес, который вы пытаетесь получить в своем браузере - т. Е. http://localhost/waves/viewresults.htm?id=X (с правильным значением X) - и посмотрите, какой контент выводится.

Если вы все еще видите PHP-код, отображаемый в вашем браузере, то вы знаете, что файл не обрабатывается как PHP. По умолчанию только имена файлов с .php в конце будут исполняться как PHP.

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

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