0からHEROへのPHPのバックエンド操作( pt . 2変数とユーザ入力を渡す)


ここでは、単純なバックエンド操作を行うPHPスクリプトを作りました.
パート2では、ユーザー入力を取得し、バックエンドスクリプトに渡すことによってカスタマイズ可能なバックエンド操作を実行するPHPスクリプトを作ります

始めましょう!
まず、Aを受け入れるフォームを作りましょうurltag パラメータ
<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Simple operations</title>
  </head>
  <body>
  <form method="post" action="results.php">
  url: <input type="text" name="url"><br>
  tag: <input type="text" name="tag"><br>
  <button type="submit" >Submit</button>
  </form>
  </body>
</html>
これらのパラメータが受け入れられると、results.php , 次のようになります.
<?php
$url = $_POST["url"];
$tag = $_POST["tag"];
$output = exec("python3 op1.py $url $tag");
echo("<h1>$output</h1>");
?>
何が起こっているのですか.
  • 最初にresults.php 定義$url and $tag 変数は、以前に作成した形式で渡されたものとして使用します.
  • 次にop1.py 使用exec function とパス$url and $tag 変数op1.py .
  • 最後に、このexec関数の出力を<h1> タグ.

  • ここで魔法が起こる場所ですresults.php パス$url and $tag 変数op1.py , Pythonスクリプトを実行し、出力を返します.
    一つの大きな問題は、
    PythonはPHP変数をどのように扱えますか

    回答:使用sys 図書館.
    お見せしましょう
    import sys
    import requests
    from bs4 import BeautifulSoup
    
    url=sys.argv[1]
    response = requests.get(url)
    
    soup = BeautifulSoup(response.text, 'html.parser')
    element = soup.find('body').find(sys.argv[2])
    print(element)
    
    これはHTMLスクリプトのようなウェブページをこするPythonスクリプトですh1 div and p , そして、ウェブページの中で指定されたHTMLタグの最初の発生の範囲内でテキスト内容を出力します.
    覚えておいてください.results.php 最初に$url 変数$tag 変数を定義します.url Pythonスクリプトの変数sys.argv[1] 順番にPHPスクリプトで渡された最初の変数を取得します.$url 変数.
    次に、指定されたURLのウェブページ内のテキストコンテンツをscrapeしたいタグを定義するとき、我々はコールしますsys.argv[2] で指定したresults.php , これは$tag 変数.

    ノードでも同様です.以下のようなJS :
    結果PHP
    <?php
    $url = $_POST["url"];
    $tag = $_POST["tag"];
    $output = exec("url=$url tag=$tag node op1.js");
    echo("<h1>$output</h1>");
    ?>
    
    OP 1js
    console.log('URL: ' + process.env.url + ' | tag: ' + process.env.tag)
    
    結果

    完全なコード:
    インデックス.PHP
    <!doctype html>
    <html>
      <head>
        <meta charset="UTF-8">
        <title>Simple operations</title>
      </head>
      <body>
      <form method="post" action="results.php">
      url: <input type="text" name="url"><br>
      tag: <input type="text" name="tag"><br>
      <button type="submit" >Submit</button>
      </form>
      </body>
    </html>
    
    結果PHP
    <?php
    $url = $_POST["url"];
    $tag = $_POST["tag"];
    $output = exec("python3 op1.py $url $tag");
    echo("<h1>$output</h1>");
    ?>
    
    OP 1パイ
    import sys
    import requests
    from bs4 import BeautifulSoup
    
    url=sys.argv[1]
    response = requests.get(url)
    
    soup = BeautifulSoup(response.text, 'html.parser')
    element = soup.find('body').find(sys.argv[2])
    print(element)
    
    プロジェクトのディレクトリに端末を開くとphp -S localhost:8000 ブラウザでそれぞれのURLを開きます.

    これらのフォームパラメータはresults.php 次に、ユーザがresults.php それから、それらのパラメータを取りますop1.py , それぞれのPythonスクリプトを実行し、出力を<h1> この場合、「PHPチュートリアル」のタグ.

    タグパラメータをp :
    op1.py 次に、最初のscrape<p> 指定したURLのタグ


    これで実験することができます!
    これで、バックエンド操作を実行しようとすると、ユーザーカスタマイズ可能なバックエンド操作をプロジェクトとPHPスクリプトに実行する方法を実装できます.
    Part 3は、PHPでより複雑な、メモリと時間集約バックエンドの操作について学ぶために周り!
    畢子👋