编辑1 2016年10月16日:
我现在已迁移到PDO ,如果表中的字段为frghfg
,则会询问(如我所知)姓名和姓氏,但问题是if-else声明不起作用。
这是“新”login2.php
<?php
<... some other things...>
$count = $connect->query("SELECT COUNT(*) FROM $tbl_name WHERE username='$username' and pwd='$pwd'")->fetchColumn();
if($count==1) {
$_SESSION['username'] = $username;
$_SESSION['pwd'] = $pwd;
$checknamesurname = $connect->query("SELECT nome, cognome FROM users WHERE username = '$username'");
$row = $checknamesurname->fetch(PDO::FETCH_ASSOC);
}
else {
echo "Wrong username and/or password. <a href='./login.php'>Retry</a>";
}
if(($row['nome'] == "frghfg") and ($row['cognome'] == "frghfg")) {
echo "<html>
<head>
<title>Inserisci il tuo nome e il tuo cognome</title>
</head>
<body>
<b>Inserisci il tuo nome e il tuo cognome</b><br><br>
<form action='insertnomecognome.php' method='post'>
<label for='nome'>Nome</label>
<input type='text' name='nome' size='25' maxlength='32' required/><br><br>
<label for='cognome'>Cognome</label>
<input type='text' name='cognome' size='25' maxlength='32' required><br><br>
<button type='submit' name='nomecognome' class='btn-simple'>Invia</button>
</form>
</body>
<html>";
}
else {
header("location:login_success.php");
}
?>
原帖:
我有一个PHP页面(area_utenti.php
),只有在您登录时才能看到:在该页面中有一条欢迎消息“Hello username
,您已登录! ”。
当有人注册我的网站时,他只会被要求提供用户名,电子邮件和密码。
现在我在注册页面添加名称和姓氏的字段,因为我希望欢迎消息说“Hello Name
等等”,但我还想要求已经注册的用户插入他们的姓名和姓氏,所以我认为如果我数据库的用户表中的姓名字段login2.php
为{I}字符串,我可以在PHP页面中检查用户登录(==
)插入到我在我的网站上进行更改之前注册的每个用户,如果是这种情况,则此PHP页面会重定向到另一个具有在字段中插入名称和姓氏的表单。
所以,问题是:
login2.php
的新部分对我来说似乎是正确的,所以我不明白为什么当我在登录表单中插入我的凭据时,它不会询问我的姓名,直接转到area_utenti.php
,像以前一样,现在出现了一个新问题:当我插入错误的凭证时,它会转到login_success.php
,它只是一个字符串,上面写着“登录成功”,这个问题以前没有。
login2.php
<?php
<... some other things...>
$sql="SELECT * FROM $tbl_name WHERE username='$username' and pwd='$password'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==1){
$name=mysql_query("SELECT name FROM users WHERE username = '$username'");
$surname=mysql_query("SELECT surname FROM users WHERE username = '$username'");
$_SESSION['username'] = $username;
$_SESSION['pwd'] = $encryptedpwd;
}
else {
echo "Wrong username and/or password";
}
if(($name == "frghfg") and ($surname == "frghfg")){ // frghfg is the string that I inserted to every user which registered before the change, I chose that string because nobody has this name or surname in the entire world
echo "<html>
<head>
<title>Insert your name and surname</title>
</head>
<body>
<form action=\"nomecognome.php\" method=\"post\"> // nomecognome.php is the page that inserts the fields in the users table and redirects to area_utenti.php when done
<label for=\"nome\">Name</label>
<input type=\"text\" name=\"nome\" size=\"32\" required/>
<label for=\"cognome\">Surname</label>
<input type=\"text\" name=\"cognome\" size=\"32\" required><br><br>
<button type=\"submit\" name=\"nomecognome\" class=\"submit_button\">Submit</button>
</form>
</body>
<html>";
}
else{
header("location:login_success.php");
}
?>
我该如何解决这个问题?
答案 0 :(得分:1)
下面:
http://127.0.0.1:8890/
您从$name=mysql_query("SELECT name FROM users WHERE username = '$username'");
$surname=mysql_query("SELECT surname FROM users WHERE username = '$username'");
函数获得的是“结果集”,而不是您在查询中请求的值。
您必须获取值(同样,您只能使用一个查询):
mysql_query()
现在,您拥有$query = "SELECT name, surname FROM users WHERE username = '$username'";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
和$row['name']
所需的值。
注意,不要使用mysql_ *函数(不推荐使用它们),而是寻找mysqli或PDO。