我正在尝试修改来自php的基于表单输入的页面。修改取决于mysql数据库查询的值。考虑示例文件:
<html>
<head>
<link href="a.php" rel="stylesheet" type="text/css" />
</head>
<body>
<form action="" method="post">
UserName: <input type="text" name="name"><br>
<input type="submit">
</form>
<?php if(isset($_POST)) {
$user=readUserNameFromDataBase($_POST["name"]);
if (empty($user)) { echo "Invalid user name!<br>"; }
}
?>
</body>
</html>我还需要修改页面的css。这是在包含的css文件a.php中完成的
<?php header("Content-type: text/css"); ?>
body {
background: <?php if(isset($_POST)) {
$user=readUserNameFromDataBase($_POST["name"]);
if (empty($user)) { echo "#ff0000;"; }
else { echo "#00ff00;"; }
} else { echo "#00ff00;"; } ?>
}在这里访问数据库两次似乎有点过分,所以我的问题是:
有没有可能只访问数据库一次,定义一个变量$user,然后从不同的php标记访问这个变量作为超全局变量或类似的东西?
发布于 2014-03-02 19:24:07
您可以放入一个会话变量,这将允许您在站点上该用户的整个访问期间将其保留在那里。但是,如果只想保留一个页面,只需引用$user变量即可。如果没有设置,那么从你的数据库中获取。
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!isset($user))
{
$user = readUserNameFromDataBase($_POST["name"]);
}
if (empty($user)) { /* .. your code .. */ }
}顺便说一下,检查是否设置了$_POST是一个相当糟糕的想法。因为它是超全局的,所以它总是被设置的。
https://stackoverflow.com/questions/22126863
复制相似问题