【发布时间】:2015-08-13 16:41:31
【问题描述】:
这是一个托管在我的 Web 服务器上的 php 文件,它连接到 SQL 数据库。创建帐户功能有效,但是一旦将值放入表中,我就会遇到问题。只是为了获得更多上下文,我在游戏制造商中使用 http_get() 函数:http://docs.yoyogames.com/source/dadiospice/002_reference/asynchronous%20functions/http_get.html
我的 SQL 表有 4 列:
P-ID - 一个自动递增的主键
USER - 用户名值
PASS - 加密密码值
SaveString - 最重要的值是我试图从我创建的游戏中访问的字符串。
这个系统有点工作,但我决定将其更改为 PDO 并作为 PHP 新手
<?php
$mysql_server = "server";
$mysql_username = "username";
$mysql_password = "password";
$mysql_database = "database";
$mysql_table = "table";
try{
$conn = new PDO("mysql:host=$mysql_server;dbname=$mysql_database", $mysql_username, $mysql_password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
echo "Couldn't connect to database";
}
$f = $_GET['f']; //function operator
$puser = $_GET['puser'];
$pword = $_GET['pword'];
$pss = $_GET['pss'];
$salt = "supersecretsalt"; // Super secret encoder
$epword = crypt($pword,$salt);
function create_account($conn, $mysql_table, $puser, $epword, $pss)
{
try{
$sql = "INSERT INTO $mysql_table (USER, PASS, SaveString) VALUES('$puser','$epword','$pss') ";
$conn->exec($sql);
} catch (PDOException $e){
echo "exception connecting to server";
}
$conn = null;
}
// This function will save information to an existing account
function save_info($conn, $mysql_table, $puser, $pword, $pss)
{
try{
$sql = "UPDATE $mysql_table SET SaveString = $pss WHERE USER = '$puser'";
$conn->exec($sql);
} catch (PDOException $e){
echo "Save didn't work";
}
$conn = null;
}
// This function will pull account information
function load_info($conn, $mysql_table, $puser, $epword)
{
try{
$statement = $conn->prepare("SELECT * FROM $mysql_table WHERE USER = '$puser' AND PASS = '$epword'");
$statement->execute();
$row = $statement->fetch();
echo $row['SaveString'];
} catch(PDOException $e){
echo "0";
}
$conn = null;
}
// This determines which function to call based on the $f parameter passed in the URL.
switch($f)
{
case na: create_account($conn, $mysql_table, $puser, $epword, $pss); break;
case sv: save_info($conn, $mysql_table, $puser, $epword, $pss); break;
case ld: load_info($conn, $mysql_table, $puser, $epword); break;
break;
default: echo"error";
}
?>
【问题讨论】:
-
发生了什么?错误信息?另请注意,由于您切换到 PDO,您应该使用准备好的语句来避免注入。 stackoverflow.com/questions/60174/…
-
是的,这很好。目前它所做的只是说“错误”,没有其他反馈。我只知道它不起作用。