2
<?php
$rootdir = "digiAdmin"; //leave if no folder
define("CONFIG","true");
//    Database Config    //
define('DB_HOST', $_SERVER['SERVER_NAME']);
define("DB_USER", $_POST['DB_USER']);
define("DB_PASS", $_POST['DB_PASSWORD']);
define("DB_NAME", $_POST['DB_NAME']);

我有一个表格,它会要求name数据库usernamepassword. 当我单击提交按钮时,它会显示一个错误。我已经定义了这个配置并创建了一个检查配置是真还是假的函数。我正在使用 post 来获取用户名、密码和数据库名称。我是否以正确的方式做事?

4

2 回答 2

1

您需要检查是否设置了这些 POST 值,试试这个:

define('DB_HOST', isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : null);
define("DB_USER", isset($_POST['DB_USER']) ? $_POST['DB_USER'] : null);
define("DB_PASS", isset($_POST['DB_PASSWORD']) ? $_POST['DB_PASSWORD'] : null);
define("DB_NAME", isset($_POST['DB_NAME']) ? $_POST['DB_NAME'] : null);
于 2013-07-24T07:49:45.147 回答
0

好的,根据您的评论,我想尝试回答您的问题。

这应该是您的 PHP 脚本 db.php(实际上不推荐使用 mysql_* 方法,但为了保持简单,这是另一天的故事):

<?php
define('DB_HOST', $_SERVER['SERVER_NAME']);
define("DB_USER", $_POST['DB_USER']);
define("DB_PASS", $_POST['DB_PASSWORD']);
define("DB_NAME", $_POST['DB_NAME']);

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

if (!$link) {
    die('Could not connect: ' . mysql_error());
}

$db_selected = mysql_select_db(DB_NAME, $link);

if (!$db_selected) {
    die ("Can't use db: " . mysql_error());
}
?>

这可能是您的 HTML 页面 index.html:

<form action="db.php" method="post">
 User: <input type="text" name="DB_USER"><br>
 Pass: <input type="text" name="DB_PASSWORD"><br>
 DB: <input type="text" name="DB_NAME"><br>
 <input type="submit" value="submit">
</form>

根据您的问题,您在某处遇到了一些错误,因此 db.php 可能会因相应的消息而死。如果是这样,你可以试试这个:

<?php
$link = mysql_connect("host", "user", "password");

if (!$link) {
    die('Could not connect: ' . mysql_error());
}

$db_selected = mysql_select_db("db", $link);

if (!$db_selected) {
    die ("Can't use db: " . mysql_error());
}
?>

这意味着不使用发布的变量,而是使用您知道它们有效的字符串。

即使第二个脚本失败,您的数据(用户、密码和/或数据库)也不正确。如果第二个脚本成功,则您发布的表单可能有问题。

于 2013-07-24T20:48:10.180 回答