使用post in define

时间:2013-07-24 07:17:04

标签: php constants config

<?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']);

我有一个表单,要求提供数据库nameusernamepassword。当我点击提交按钮时,它会显示错误。我已经定义了这个配置并创建了一个函数,它检查config是true还是false。我使用post来获取用户名,密码和数据库名称。我是以正确的方式做的吗?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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());
}
?>

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

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