在PHP中的if/else语句中访问时变量超出范围
我是PHP脚本新手,来自Java背景。这是一件小事,到目前为止,它已经成为我的脑筋急转弯。问题就在这里,我给一个变量赋值,当我试图在if/else语句中使用这个值时,这个变量实际上并不拥有之前给它赋值的值。代码如下:-在PHP中的if/else语句中访问时变量超出范围,php,sql,session,Php,Sql,Session,我是PHP脚本新手,来自Java背景。这是一件小事,到目前为止,它已经成为我的脑筋急转弯。问题就在这里,我给一个变量赋值,当我试图在if/else语句中使用这个值时,这个变量实际上并不拥有之前给它赋值的值。代码如下:- <?php session_start(); $email = $_POST["Email"]; $password = $_POST["Password"]; $db_username="root"; $db_passwo
<?php
session_start();
$email = $_POST["Email"];
$password = $_POST["Password"];
$db_username="root";
$db_password="root";
$database="mydb";
$localhost = "mysql";
$con = mysql_connect($localhost,$db_username,$db_password);
mysql_select_db($database,$con) or die( "Unable to select database");
$query = "select * from photobook.users where email ='$email' and password ='$password';" ;
$result = mysql_query($query);
$num=mysql_num_rows($result);
if($num == 1){
while($row = mysql_fetch_array($result))
{
$_SESSION['email'] = $row['email'];
$_SESSION['username'] = $row['username'];
}
header("location: home.php");
}
else{
include "photoBookProtocol.php";
print "<br>email value after photobookprotocol file include is $email";
print "<br>password value after photobookprotocol file include is $password";
$obj=new Protocol();
$var = $obj->loginCheck($email,$password);
print "value of var received is $var";
if($var == 0){
session_destroy();
print "<br>user does not exist";
//header("location: login.php");
}
else{
$_SESSION['email'] = $var[0];
$_SESSION['username'] = $var[1];
print "<br>user exists";
header("location: home.php");
}
}
mysql_close($con);
?>
因此,当我在“else”子句中的loginCheck($email,$password)中传递$email和$password时,没有传递任何内容。知道为什么会发生这种情况吗?变量范围没有问题,因此:
- POST数据中没有任何内容
- include覆盖了这两个变量
正在接收正确的变量,但函数中存在错误loginCheck()
if(isset($_POST['Email'], $_POST['Password']))
{
// something posted
}
您如何知道没有传递任何内容?是否覆盖了变量?在我看来一切正常。不管出现什么错误-您需要了解如何防止SQL注入-检查
photoBookProtocol.php
是否有任何变量名$email和$password
。。。它可能会覆盖上一个…我知道sql注入预防,谢谢:)谢谢你的回答,但是正如@Mike de Klerk在上面评论的那样,是包含文件覆盖了变量。谢谢大家。感谢:)。。。这就是MrCode所说的:“*include覆盖了两个变量”@user1371033这就是我的答案所说的:)