我正在为朋友制作表格。当用户提交表单时,他们的IP地址被添加到数据库表中。每次用户访问表单时,我都会检查他们的IP地址是否已经在表中。如果是,那么他们已经提交了表格。
我之前做过这个,但决定改变它的工作原理,现在当我运行任何查询或连接到数据库时,整个页面都变成空白。
这是我的数据库类(class.Database.inc.php):
<?php
/**
* MySQLi database; only one connection is allowed.
*/
class Database {
private $_connection;
// Store the single instance.
private static $_instance;
/**
* Get an instance of the Database.
* @return Database
*/
public static function getInstance() {
if (!self::$_instance) {
self::$_instance = new self();
}
return self::$_instance;
}
/**
* Constructor.
*/
public function __construct() {
$this->_connection = new mysqli('localhost', 'MHP_TICKET_ADMIN', 'fZx_142n', 'MHP_TICKET_SYS');
// Error handling.
if (mysqli_connect_error()) {
trigger_error('Failed to connect to MySQL: ' . mysqli_connect_error(), E_USER_ERROR);
}
}
?>
表单文件顶部的代码(index.php):
<?php
require_once('class.Database.inc.php');
// Check database to see if the user has already submitted.
$user_ip = $_SERVER['REMOTE_ADDR'];
$db = Database::getInstance();
$mysqli = $db->getConnection();
$sql_query = "SELECT ip FROM ip_address WHERE ip = '$user_ip'";
$result = $mysqli->query($sql_query);
if ($row = $result->fetch_assoc()) {
die('You have already placed your submission.');
}
?>
修改 我以错误的顺序输入了凭证,我花了2个小时才弄清楚......
答案 0 :(得分:2)
我知道你现在已经解决了这个问题(我会评论,但我还没有达到50)但是为了将来参考这可能会有所帮助 - PHP中一个意想不到的空白页面很可能意味着错误被抛出。
我习惯在我的脚本顶部包含error_reporting(-1)
(在本例中为class.Database.inc.php
文件),因此我在开发和调试时会立即看到这些错误。当你上线时将其切换到error_reporting(0)
以确保最终用户隐藏错误。