Php 如果我不是我页面上的管理员,则无法更新帐户没有实际错误,但它会跳过if
由于某种原因,如果用户登录并且不是管理员,那么代码将跳过查询之前和echo$admin之后的executeif语句;我似乎不明白为什么。谁能帮我解决这个问题? 当我以管理员身份登录时,它运行得非常完美,一点问题也没有。 管理员作为1存储在数据库中,普通用户作为0存储 这是我的代码:Php 如果我不是我页面上的管理员,则无法更新帐户没有实际错误,但它会跳过if,php,sql,Php,Sql,由于某种原因,如果用户登录并且不是管理员,那么代码将跳过查询之前和echo$admin之后的executeif语句;我似乎不明白为什么。谁能帮我解决这个问题? 当我以管理员身份登录时,它运行得非常完美,一点问题也没有。 管理员作为1存储在数据库中,普通用户作为0存储 这是我的代码: <?php session_start(); //server gegevens $server = "localhost"; $user_sql = "root"; $wachtwoord = "
<?php
session_start();
//server gegevens
$server = "localhost";
$user_sql = "root";
$wachtwoord = "";
//maakt verbinding met de database geeft een foutmelding als het verbinden niet is gelukt
$connect = mysql_connect($server, $user_sql, $wachtwoord) or die("couldn't connect to server please try again later");
//selectreert de database
mysql_select_db("camping") or die("DB not found");
$Admin = "";
$Knummer = "";
$voornaam = "";
$achternaam = "";
$Tussen = "";
$username = "";
$email = "";
$Reg = "";
$Straat = "";
$Hnummer = "";
$woonplaats = "";
$Postcode = "";
$Tel = "";
$Pw = "";
if (isset($_POST['hidden']))
$Knummer = strip_tags($_POST['hidden']);
if (isset($_POST['Voornaam']))
$voornaam = strip_tags($_POST['Voornaam']);
if (isset($_POST['Achternaam']))
$achternaam = strip_tags($_POST['Achternaam']);
if (isset($_POST['Username']))
$username = strip_tags($_POST['Username']);
if (isset($_POST['Woonplaats']))
$Woonplaats = strip_tags($_POST['Woonplaats']);
if (isset($_POST['email']))
$email = strip_tags($_POST['email']);
if (isset($_POST['Tel']))
$Tel = strip_tags($_POST['Tel']);
if (isset($_POST['Straat']))
$Straat = strip_tags($_POST['Straat']);
if (isset($_POST['Hnummer']))
$Hnummer = strip_tags($_POST['Hnummer']);
if (isset($_POST['Postcode']))
$Postcode = strip_tags($_POST['Postcode']);
if (isset($_POST['admin'])) {
$Admin = strip_tags($_POST['admin']);
/*this if is because on the admin pannel you can type yes/no to update the admin status of an user and in the database the admin is logged as 1/0 */
if ($Admin == "yes") {
$Admin = 1;
} else if ($Admin == "no") {
$Admin = 0;
} else {
$Admin = $Admin;
}
}
if (isset($_POST['tussen']))
$tussen = strip_tags($_POST['tussen']);
else
$tussen = " ";
echo $Admin;
if ($Knummer && $voornaam && $achternaam && $username && $Woonplaats && $Straat && $email && $Tel && $Hnummer && $Postcode && $Admin) {
$query = mysql_query("UPDATE users SET admin='$Admin', Username='$username'
WHERE Klant_NR='$Knummer';");
$query2 = mysql_query("UPDATE klant_gegevens SET Voornaam='$voornaam',Tussenvoegsel='$tussen',Achternaam='$achternaam',Straat='$Straat',H_nummer='$Hnummer',Postcode='$Postcode',Woonplaats='$Woonplaats',email='$email',Telefoon='$Tel'
WHERE Klant_NR='$Knummer';");
header('Location: ' . $_SERVER['HTTP_REFERER']);
} else {
echo " **error/skip message**";
}
?>
如果未设置“$Admin”,您应该会收到“错误/跳过消息”
设置错误报告级别,以便在出现任何PHP错误时获得这些错误
ini_set('display_errors', 1);
error_reporting(E_ALL);
您的代码的格式不是很好,而且您的if条件很长,这一事实导致了不好的实践。最好将其设置为一个函数,并通过输入循环查找其中是否有数据。一旦使用了好的编码标准,调试和诊断代码问题就会变得非常容易
有很多if语句…哪一个被跳过了???当以用户身份登录时,哪一个if被跳过了?当$\u POST['admin']设置为“否”时,$admin将设置为0。如果$some_var&&$Admin在这种情况下将计算为false。因此,不会执行分支来取消用户的管理员状态。您的问题非常不清楚,如果您不澄清您的确切问题,将被关闭。谢谢您提供的信息,我将对此进行处理。我不知道你可以循环使用Post值。但这可能是因为这是我制作的第一个网站。同样是因为一个标志在5分钟内降了下来,你的回答,我问自己为什么会这样,然后它击中了我,因为非管理员的值设置为0,这就是问题所在>>在过去的5个小时里,我把所有非管理员的用户都设置为2,并且修复了最好的Regeards,我很高兴能提供帮助。坚持下去。多练习。