我正在尝试使它,以便我可以限制“工作人员面板”的用户与那里的"member_level“在"3”,以便其他人被重定向到account_page.php,但我目前收到一个错误,这只是突然出现在1小时前,这是从哪里冒出来的,我没有改变任何东西,它只是出现了。
这是人员面板的代码:
<?php
ob_start();
mysql_connect('localhost', 'u1908470_cms', 'BeingX1309X')or die("Error: ".mysqlerror());
mysql_select_db('u1908470_cms');
$query1 = mysql_query("SELECT 'member_level' FROM `users` WHERE `username` = '" . mysql_real_escape_string ($_SESSION['user']['username'])."'");
$query2 = mysql_result($query1,0,'member_level') or die(mysql_error());
switch ($query2)
{
case 3:
{
echo "<p>Now Logged into Staff Panel!</p>";
}
break;
case 2:
{
header("location: http://www.cookiedenied.com/account_page.php");
}
break;
case 1:
{
header("location: http://www.cookiedenied.com/account_page.php");
}
break;
}
?>发布于 2012-10-30 16:40:22
正确转义字段和表名
而不是
SELECT 'member_level', .......please使用...
SELECT `member_level`, ....验证您的查询。
像这样重写你的代码:
$SQL = "SELECT `member_level`
FROM `users`
WHERE `username` = '"
. mysql_real_escape_string($_SESSION['user']['username'])
. "'";
$MyQ = mysql_query($SQL);
$MyR = mysql_result($MyQ,0,'member_level') or die(mysql_error());...and var_dump($SQL);查看您的语句是否有效。在使用另一个MySQL工具(工作台、phpMyAdmin、SQLyog或其他工具)执行它时检查它,看看它是否会生成任何结果。也许$_SESSION变量没有正确设置,或者类似的东西,你可以通过这种方式来发现。
请使用MySQLi或PDO。
从手册中:
不鼓励使用mysql扩展。相反,应该使用MySQLi或PDO_MySQL扩展。
重新格式化您的 switch**-Block.**
与你的问题无关,但是你的switch-Block看起来太复杂了,想要获得一些更容易的东西。试试这个:
switch ($query2) {
case 3:
echo "<p>Now Logged into Staff Panel!</p>";
break;
default:
header("location: http://www.cookiedenied.com/account_page.php");
}发布于 2012-10-30 16:30:41
试试这个:
$R = mysql_fetch_assoc($query1);
$query2 = $R["member_level"]但是您可能应该检查您的查询是否至少返回1行。
发布于 2012-10-30 16:30:50
首先,尽量避免使用mysql_query。这已经过时了,并成为使用PDO的习惯。
在您的查询中,您用引号将表名引起来。删除引号并尝试。
更改代码。并替换为以下代码。
<?php
ob_start();
try {
$pdo = new PDO('mysql:host=localhost;dbname=u1908470_cms', 'u1908470_cms','BeingX1309X');
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
$username = $_SESSION['user']['username'];
$statement = $pdo->prepare("select `member_level` from `users` where username = :username");
$statement->execute(array(':username' => $username));
$row = $statement->fetch();
$member_level = $row['member_level'];
switch ($member_level)
{
case 3: {
echo "<p>Now Logged into Staff Panel!</p>";
break;
}
default:{
header("location: http://www.cookiedenied.com/account_page.php");
break;
}
}实际上,您可以删除switch语句,只添加if-else条件。
if($member_level == 3) {
echo "<p>Now Logged into Staff Panel!</p>";
}else{
header("location: http://www.cookiedenied.com/account_page.php");
}
?>https://stackoverflow.com/questions/13135129
复制相似问题