Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t在PHP中登录到我的脚本_Php_Html - Fatal编程技术网

Can';t在PHP中登录到我的脚本

Can';t在PHP中登录到我的脚本,php,html,Php,Html,我试图使自己成为一个简单的PHP网站与成员登录系统。我已经创建了网站的注册部分,并且条目成功更新/添加到我的Mysql数据库。但是,我无法使用详细信息让login.php登录。我的login.php的php代码如下: <?php if ($_POST['mem_email']) { //Connect to the database through our include include_once "storescripts/connect_to_mysql.php"; $email =

我试图使自己成为一个简单的PHP网站与成员登录系统。我已经创建了网站的注册部分,并且条目成功更新/添加到我的Mysql数据库。但是,我无法使用详细信息让login.php登录。我的login.php的php代码如下:

<?php
if ($_POST['mem_email']) {
//Connect to the database through our include 
include_once "storescripts/connect_to_mysql.php";
$email = stripslashes($_POST['mem_email']);
$email = strip_tags($email);
$email = mysql_real_escape_string($email);
$password = ereg_replace("[^A-Za-z0-9]", "", $_POST['mem_password']); // filter everything     but numbers and letters
$password = md5($password);
// Make query and then register all database data that -
// cannot be changed by member into SESSION variables.
// Data that you want member to be able to change -
// should never be set into a SESSION variable.
$sql = mysql_query("SELECT * FROM members WHERE mem_email='$email' AND         mem_password='$password' AND mem_emailactivated='1'"); 
$login_check = mysql_num_rows($sql);
if($login_check > 0){ 
while($row = mysql_fetch_array($sql)){ 
    // Get member ID into a session variable
    $id = $row["mem_id"];   
    session_register('mem_id'); 
    $_SESSION['mem_id'] = $id;
    // Get member username into a session variable
    $username = $row["mem_username"];   
    session_register('mem_username'); 
    $_SESSION['mem_username'] = $username;
    // Update last_log_date field for this member now
    mysql_query("UPDATE members SET mem_lastlogin=now() WHERE mem_id='$id'"); 
    // Print success message here if all went well then exit the script
    header("location: member_profile.php?id=".$id); 
    exit();
} // close while
} else {
// Print login failure message to the user and link them back to your login page
print '<br /><br /><font color="#FF0000">No match in our records, try again </font><br />
<br /><a href="login.php">Click here</a> to go back to the login page.';
exit();
}
}// close if post
?>
<table align="center" cellpadding="5">
<form action="login.php" method="post" enctype="multipart/form-data" name="logform"  id="logform" onsubmit="return validate_form ( );">
<tr>
<td class="style7"><div align="right">Email Address:</div></td>
      <td><input name="mem_email" type="text" id="mem_email" size="30" maxlength="64" /></td>
    </tr>  
    <tr>
      <td class="style7"><div align="right">Password:</div></td>
      <td><input name="mem_password" type="password" id="mem_password" size="30" maxlength="24" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><input name="Submit" type="submit" value="Login" /></td>
    </tr>
  </form>
</table>

每次在我的登录表单中输入正确的数据时,我都会被处理到else语句,并显示失败消息

ereg.*
mysql.*
函数被折旧!使用函数和PDO或Mysqli进行数据库交互

另外,使用参数化查询来防止sql注入,PDO和mysqli都支持sql注入

当您想要返回记录计数时,可以让sql为您进行计数。例如:

SELECT COUNT(*) FROM `members` WHERE `mem_emailactivated` = '1'
现在使用PDO的
fetchColumn()
方法,或者使用mysqli中的替代方法来获取与查询中给定条件匹配的记录数

另一件事是,要使会话正常工作,请在每页的开头使用
session\u start()


希望有帮助。:)

请使用mysqli_uu调用。mysql不推荐使用

这个问题更多的是关于正确的调试。这可以通过php echos或者更好的调试器来完成,比如EclipsePDT。不管怎样, 1.检查是否输入了($_POST['mem_email']){。 2.在数据库中运行查询。查询成功: 3.使用mysqli_Fetch_row获取一行。我想您只需要一行。
4.如果所有这些都正常,请在数据库中运行更新查询,看看是否成功。

您是否回显了正在生成的SQL语句并在数据库中运行了它?它是否工作?mysql_*和ereg_*都不推荐使用。事实上,我认为最新版本的PHP中完全没有ereg_*了。只要您的主机升级了它们的软件您的脚本将中断。这需要首先进行基本调试。什么在哪一点上会失败?首先要做的是找出错误-使用调试器或逐行执行测试输出。我们无法为您这样做,因为我们没有实时输出。附带问题,您拒绝非字母数字cha的原因是什么用户密码中的racters?另外,我注意到您使用检查查询时没有出错。这是进行正确调试的先决条件。
SELECT COUNT(*) FROM `members` WHERE `mem_emailactivated` = '1'