このコードで何か問題があります。Perl Webサービス:XML RPCを使用
#!/use/bin/perl
use strict;
use warnings;
use Frontier::Daemon;
use DBI;
sub credentials {
my ($username, $password) = @_;
my $tablename = "users";
my $user = "db_user";
my $pw = "db_pass";
$dbh = DBI->connect('DBI:mysql:database;host=localhost', $user, $pw, {RaiseError => 1});
$sql = "SELECT username, password FROM $tablename";
$sth = $dbh->prepare($sql);
$sth->execute or die "SQL Error: $DBI::errstr\n";
if ($sth->rows > 0) {
$login_response = "Login Successful";
} else {
$login_response = "Invalid Credentials";
return {'login' => $login_response};
die();
}
}
$methods = {'login.credentials' => \&credentials,};
Frontier::Daemon->new(LocalPort => 8080, methods => $methods)
or die "Couldn't start HTTP server: $!";
資格情報の値を取得するには、MYSQL文にWHERE句が必要ですか? – Gruther
SELECTは、 'username'と' password'という列を持つ 'users'テーブルからすべての行を返します。特定のユーザ名をテストする場合は、 'WHERE username =?'のようなものを使用し、 'execute'コールに' $ username'を追加するべきです。 – bvr
@bvr @chambwez私のコードは今うまく動いていると思います:)私の最後の質問は、XMLRPCで可能なセッション処理ですか?クライアントとサーバーの間でステートフルな通信を維持するにはどうすればよいですか? – Gruther