Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

/app.hsp Secret

Created March 7, 2013 12:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/68c15704307d95d3ac7b to your computer and use it in GitHub Desktop.
Save anonymous/68c15704307d95d3ac7b to your computer and use it in GitHub Desktop.
HSP+PHPのサンプル
/**
* server.phpにアクセスしてIPアドレス・ポートを登録・削除する。
*/
#include "hspinet.as"
sdim ip_address, 1024 : sdim port, 1024
ip_address = "登録・削除するIPアドレスをここに入力(画面上で)"
port = "ポートも同じく"
netinit
if stat : dialog "接続できません" : end
netdlname "response.txt"
button "登録", *register
button "削除", *unregister
button "一覧", *list
objsize 200, 25
input ip_address
input port
stop
*register
neturl "http://192.168.0.101/chat/"
netload "server.php?mode=register&ip=" + ip_address + "&port=" + port
notesel buf
noteload "response.txt"
dialog buf
stop
*unregister
neturl "http://192.168.0.101/chat/"
netload "server.php?mode=unregister&ip=" + ip_address + "&port=" + port
notesel buf
noteload "response.txt"
dialog buf
stop
*list
neturl "http://192.168.0.101/chat/"
netload "server.php?mode=list"
notesel buf
noteload "response.txt"
dialog buf
stop
<?php
/**
* DBを作る。これははじめに1回だけ実行する。
*/
try {
$db = new PDO("sqlite:test.sqlite3");
$sql = "create table servers (id integer primary key, ip_address nvarchar(16) not null, port nvarchar(8) not null)";
$db->query($sql);
echo "OK";
} catch (PDOException $ex) {
var_dump($ex);
}
?>
<?php
/**
* 次のようなたたき方をする。
* 登録: http://example.com/server.php?mode=register&ip=[IPアドレス]&port=[ポート]
* 削除: http://example.com/server.php?mode=unregister&ip=[IPアドレス]&port=[ポート]
* 一覧: http://example.com/server.php?mode=list
*/
if (!isset($_GET["mode"])) {
echo "NG: Mode is not specified";
exit(0);
}
try {
$mode = $_GET["mode"];
$db = new PDO("sqlite:test.sqlite3");
if ($mode == "register") {
if (isset($_GET["ip"]) && isset($_GET["port"])) {
$stmt = $db->prepare("INSERT INTO servers (ip_address, port) VALUES (:ip_address, :port)");
$stmt->execute(array("ip_address" => $_GET["ip"], "port" => $_GET["port"]));
echo "OK: OK";
} else {
echo "NG: Required parameter is not set.";
}
} else if ($mode == "unregister") {
if (isset($_GET["ip"]) && isset($_GET["port"])) {
$stmt = $db->prepare("DELETE FROM servers WHERE ip_address = :ip_address AND port = :port");
$stmt->execute(array("ip_address" => $_GET["ip"], "port" => $_GET["port"]));
echo "OK: OK";
} else {
echo "NG: Required parameter is not set.";
}
} else if ($mode == "list") {
$result = "";
$stmt = $db->query("SELECT ip_address, port FROM servers");
foreach ($stmt->fetchall() as $row)
$result .= $row["ip_address"] . ":" . $row["port"] . "\n";
echo "OK: OK\n";
echo $result;
} else {
echo "NG: Invalid mode was specified.";
}
} catch (PDOException $ex) {
echo "NG: Database error was happened.";
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment