2017-12-13 10 views
0

私は最近、リクエスト投稿を使用してpythonファイルからPHPファイルにデータを送信する方法を発見しました。私のファイルphpがサーバーにあり、pythonファイルが3gインターネットに接続されているラズベリーにあることを知っているpythonファイルにphpファイルを書き込んでいますが、このドメインについてあまりよく分かりません。PHPからラズベリーのPythonスクリプトへのPOSTを使用してデータを送信

ラズベリーPythonクライアント:

import requests 
import time 
i =1 
j= 0 
while i==1 : 
    j = j+1 
    userdata = {"id": j , "firstname": "jo", "lastname": "rasp", 
       "password": "666"} 
    resp = requests.post('http://jawad.meswatts.fr/sous/api.php', 
          data = userdata) 
    print(resp.text) 
    time.sleep(3) 

PHPサーバースクリプト:

PHPファイルへのPythonのファイルを送信します
<?php 
try 
    { 
     $bdd = new PDO('mysql:host=localhost;dbname=jawad;charset=utf8', 
        'jawad', 'knlnklml54vn,6'); 
    } 
    catch(Exception $e) 
    { 
    die('Erreur : '.$e->getMessage()); 
    } 


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


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

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

ここで私の2つのプログラムはうまくいきました。私はそれを他の方法でやってみたいと思いますが、私は非常によくPHPを知っていますが、あまり強いネットワークではありません。

+0

基本的に論文を転記する必要はありますか? – Alexey

+0

はい、正確です!ラズベリーが3Gで接続されていることを知っているので、自分のデータベースに保存して使用できるIPアドレスを持っています。 –

+0

その場合は、Pythonを使ってWebサーバーを構築してpiで実行する方法を見つけなければなりません。既に利用可能なライブラリを使用することで可能になるはずです。 – Alexey

答えて

0

あなたの現在の計画の問題は、どこかにをPOSTできる必要があるということです。サーバーへのパイの投稿の場合は

、我々は http://jawad.meswatts.fr/sous/api.php

にしかし、サーバがPIに投稿したい場合を掲示しています。どこに投稿するのですか? piは、ドメイン名または公開IPでは公開されていません。 (このように設定することは可能ですが、初心者にはお勧めできません)。

代わりに他の誰もがこれを過去に解決した方法から始めます。 piをサーバー上の別の場所にGET要求します。この関数は、投稿された情報を返します。このようにして、サーバは決してpiを見つけようとしません。それは、何らかの情報(POST)を保存するように言われるまで、または何らかの情報が何であるか(GET)を尋ねられるまで待つだけです。

+0

あなたの答えをありがとうございます残念ながら、私は自分のプロジェクトで実際にやりたいことには適していません。メッセージを直接返信したくないのですが、ラズベリーが接続されていることをいつでも知ることができるメッセージです3Gには私のデータベースに保存できるIPアドレスがあり、それ以降は要求をより安全にするために使うことができるが、私はそれを行う方法が何であるか知りたいと思う。 –

+0

ポーリングを使用すると、常にサーバーから最新の情報を取得(半)できます。 (つまり、GETリクエストを作成し、数分後にanotheを作成し、次に別のものなどを作成します)。完全に二重化する必要がある場合は、piとサーバーの間に完全な非同期通信が必要です。あなたはPOSTを前後に使うことができます。 piには、POSTを処理するためのサーバーソフトウェアがインストールされている必要があります。私はまだそれをお勧めしません。 websocket接続を使用することができます。これは、完全な非同期通信を全二重に提供し、piのIPを格納したり、サーバをpiに設定したりすることなく混乱させることはありません。 – Kallmanation

+0

私がインターネットと電気の消費量を監視しなければならないので、毎分データを送信することはできません。 –

関連する問題