【问题标题】:Sending data using POST in Python to PHP. I have any result in the PHP SCRIPT在 Python 中使用 POST 将数据发送到 PHP。我在 PHP SCRIPT 中有任何结果
【发布时间】:2017-12-11 10:16:49
【问题描述】:

我最近找到了一个解决方案,用这个例子在 python 和 php 脚本之间进行通信:

python 客户端:

import requests
userdata = {"firstname": "Smith", "lastname": "Ayasaki", "password": "123456"}
resp = requests.post('http://localhost/api.php', data = userdata)

api.php 脚本:

<?php
    $firstname = htmlspecialchars($_POST["firstname"]);
    $lastname = htmlspecialchars($_POST["lastname"]);
    $password = htmlspecialchars($_POST["password"]);
    echo "FIRSTNAME: $firstname  LASTNAME: $lastname  PW: $password";
  ?>

但它根本不起作用,我使用 apache2 端口:80 并且我在 localhost 中工作,所以也许这不起作用是正常的,因为 python 客户端发送到 api.php 但我看不到结果 ... 所以我找到的解决方案是在数据库中发送$firstname,$lastname,$password,检查是否真的信息正在发送,有新的api.php:

<?php
try
    {
      $bdd = new PDO('mysql:host=localhost;dbname=api;charset=utf8', 'root', '');
    }
   catch(Exception $e)
   {
     die('Erreur : '.$e->getMessage());
   }



      $firstname = htmlspecialchars($_POST["firstname"]);
      $lastname = htmlspecialchars($_POST["lastname"]);
      $password = htmlspecialchars($_POST["password"]);


      $req = $bdd->prepare( '                            
                              INSERT INTO reception(nom,prenom,identifiant)
                               VALUES (:lastname,:firstname,:password);
                            ' );


    $req->execute(array('lastname' => $lastname, 'firstname' => $firstname,'password' => $password)); 
    ?>

请帮助解决这个问题,我不是 http 请求专家!对不起我的英语......

【问题讨论】:

    标签: php python-3.x python-2.7 apache httprequest


    【解决方案1】:

    您的代码看起来不错。我在这里对其进行了测试,并且可以正常工作(新版本)。 要调试您的代码,您可以通过在 python 脚本中添加以下行(在末尾)来查看发布的内容:

    print(resp.text)
    

    它将发布来自您的网络服务器的响应。

    并检查以下细节是否正确:

    database: api
    username: root
    password: <<empty>>
    table:    reception
    fields:   nom
              prenom
              identifiant
    

    如果您转到:http://localhost/api.php,请检查您的网络服务器的响应是什么,也许它会给您一些错误。

    【讨论】:

    • 感谢您的回答,我尝试了 print(resp.text) 并得到了以下结果: 401 Unauthorized

      Unauthorized

      此服务器无法验证您是否有权访问所请求的文档。您提供了错误的凭据(例如,密码错误),或者您的浏览器不了解如何提供所需的凭据。


      Apache/2.4.23 (Win64) PHP/5.6.25服务器在 localhost 端口 80
    • apache 问题?
    • 当你浏览到localhost/api.php 时你看到了什么?该文件是否存在?你需要用户名和密码吗?
    • 是的,文件存在,但 _$POST 有错误: 注意:未定义索引:第 13 行 C:\wamp\www\api.php 中的名字 注意:未定义索引:C 中的姓氏:第 14 行的 \wamp\www\api.php 注意:未定义的索引:第 15 行的 C:\wamp\www\api.php 中的密码用于数据库我只能使用 root 和密码访问,我在描述中删除了它,但是他存在,问题出在 POST REQUEST MAYBE
    • 没错,因为没有“帖子”。你确定是http而不是https吗?
    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 2023-03-03
    • 2016-09-29
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    相关资源
    最近更新 更多