LoginSignup
0
1

More than 3 years have passed since last update.

PHP プログラムの呼び出し

Last updated at Posted at 2020-02-10

PHPで以下の機能があるプログラムを作成しようと思っています。
1.値を受け取る
2.DBに照会してチェックする
3.チェック結果を返す

まず、2と3の機能を作成しました。
思ったように動作しました。
■recieve.php

<?php

error_reporting(E_ALL);

define('DSN', 'mysql:host=localhost; dbname=test_db');
define('DB_USERNAME', 'dbuser');
define('DB_PASSWORD', 'r5b2Wisd');

\$key1 = "key1_A99";
\$key2 = "key2_A99";
/*
\$params = json_decode(file_get_contents('php://input'), true);
\$key1 = \$params['key1'];
\$key2 = \$params['$key2'];
*/

try {
\$db = new PDO(DSN, DB_USERNAME, DB_PASSWORD);
\$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (DOException \$e) {
result(9, 'unable connect to db');
}

try{
//DBに登録があればチェックOK
\$stmt = \$db->prepare("select count(*) cnt from test where key1 = :key1 and key2 = :key2");
\$stmt->execute([
':key1' => \$key1,
':key2' => \$key2]
);
\$row = \$stmt->fetch();
if (\$row['cnt'] == 1) {
result(0, 'already registered');
}
//DBに登録がなく、key1の登録件数が2件以上のときはエラー
\$stmt = $db->prepare("select count(*) cnt from test where key1 = :key1");

\$stmt->execute([
':key1' => \$key1
]);
\$row = \$stmt->fetch();
if (\$row['cnt'] >= 2) {
result(9, 'already exists');
}
//DBに登録がなく、key1の登録件数が2件未満のときは、DBに登録してチェックOKとする
\$sql = "insert into test(key1, key2) values(:key1, :key2)";
\$stmt = \$db->prepare(\$sql);
\$stmt->execute([
':key1' => \$key1,
':key2' => \$key2
]);
result(0, 'registered');
} catch (Exception \$e){
result(9, \$e->getMessage());
}

function result(\$result_code, \$result_message) {
header("Content-Type: application/json; charset=UTF-8");
\$result = array('result' => \$result_code, 'message' => \$result_message);
echo json_encode(\$result);
exit;
}

次に、1の機能(呼び出し)を作成しました。
■send.php
<?php
\$url = 'http://192.168.33.10:8000/recieve.php';
\$data = array(
'key1' => 'key1_A99',
'key2' => 'key2_A99'
);
\$options = array('http' => array(
'method' => 'POST',
'header' => "Content-type: application/json\r\n",
'content' => json_encode(\$data)
));
\$options = stream_context_create(\$options);
\$contents = file_get_contents(\$url, false, \$options);
header('Content-type: application/json');
echo \$contents;

send.phpを呼ぶとエラーになります。
PHP Warning: file_get_contents(http://192.168.33.10:8000/recieve.php): failed to open stream: HTTP request failed! in /home/vagrant/license/send.php on line 13

recieve.phpのパラメーター部分のコメントをどちらに切り替えてもエラーになるので、そもそも呼び出しがまずいのだと思っています。
ですが、そもそも呼び出せないので受け側を完成させることができないです。
(受け側が完成していれば、呼び出し方が悪いと確定するので、ネットで検索しつつ調整することも叶うということです)

Web関係の知識が圧倒的に不足していることは自覚しています。
聞き方(書き方)すら分からないレベルで恐縮ですが、どんなことを試してみれば良いかお教えください。

ちなみに、受け渡しはJSONでなくてもいいです。
プログラムもPHPでなくてもいいです。
ただ、やりたいことは小さいので、フレームワークなどを入れて大げさにしようとは考えていません。

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1