首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用php和html登录

使用php和html登录
EN

Stack Overflow用户
提问于 2016-04-05 19:19:27
回答 3查看 169关注 0票数 1

我正在使用html和php制作一个登录页面,我做了一个简单的页面,它使用以下代码工作得很好:

HTML登录表单

代码语言:javascript
运行
复制
    <link rel="stylesheet" href="css/style.css">




 </head>

 <body>

  <div class="login">
<div class="login-triangle"></div>

  <h2 class="login-header">Login</h2>

 <form class="login-container" method="post" action="Login.php">
   <p><input type="text" id="username" name="username"        placeholder="Username"></p>

    <p><input type="password" id="password" name="password"    placeholder="Password"></p>
     <p><input type="submit" value="Login"></p>
  </form>
</div>
  <script    src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>


  </body>
 </html>

PHP

代码语言:javascript
运行
复制
<?php
include ("dbconfig.php");
session_start();
$name = mysqli_real_escape_string($dbconfig, $_POST['username']); //to clean up, to avoid sql injection
//$name = md5($name);


$pw = mysqli_real_escape_string($dbconfig, $_POST['password']);
 //  $pw = md5($pw);


$sql_query="SELECT userid FROM user WHERE username='$name' AND password='$pw'";
$result = mysqli_query($dbconfig, $sql_query);
$row = mysqli_Fetch_array ($result, MYSQLI_ASSOC);
$count = mysqli_num_rows ($result);
 if ($count >0){
    $_SESSION['Login'] = $name;
    header ("location:Welcome.php");
 }
 if($count == 1)
  {
    echo "wrong login details";
  }

?>

但是,当我尝试使用相同的php文件使用新的html文件登录时,它会一直说“错误的登录细节”,尽管我输入了正确的登录。

这里是新的html,我在想,也许它与添加的额外类有关。

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="utf-8">
<title>Kate's World Sign In</title>

    <!-- Google Fonts -->
    <link href='https://fonts.googleapis.com/css?     family=Roboto+Slab:400,100,300,700|Lato:400,100,300,700,900'    rel='stylesheet' type='text/css'>

    <link rel="stylesheet" href="css/animate.css">
    <!-- Custom Stylesheet -->
    <link rel="stylesheet" href="css/style.css">

     <script   src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js">  </script>
</head>

<body>
    <Form  method="post" action="Login.php">
    <div class="container">
        <div class="top">
            <h1 id="title" class="hidden"><span id="logo">Log <span>In</span></span></h1>
        </div>
        <div class="login-box animated fadeInUp">
            <div class="box-header">
                <h2>Log In</h2>
            </div>
            <label for="username">Username</label>
            <br/>
            <input type="text" id="username" name="username" >
            <br/>
            <label for="password">Password</label>
            <br/>
            <input type="password" id="password" name="password">
            <br/>
            <button type="submit">Sign In</button>
            <br/>
        </div>
        </div>
    </Form>
</body>

<script>
    $(document).ready(function () {
        $('#logo').addClass('animated fadeInDown');
        $("input:text:visible:first").focus();
    });
    $('#username').focus(function() {
        $('label[for="username"]').addClass('selected');
    });
    $('#username').blur(function() {
        $('label[for="username"]').removeClass('selected');
    });
    $('#password').focus(function() {
        $('label[for="password"]').addClass('selected');
    });
    $('#password').blur(function() {
        $('label[for="password"]').removeClass('selected');
    });
</script>

</html> 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-05 19:26:27

不,附加类不应影响PHP代码。

要解决这个问题,您需要查看在PHP端接收到的内容。加入一些测试-回音一些数据。首先,在一开始。然后,当您确切地知道了要通过的是什么时,请将测试移到文件中。找出所有的错误,然后删除所有的测试。

例如,首先像这样修改PHP:

代码语言:javascript
运行
复制
    <?php
        session_start();
        include ("dbconfig.php");
        $name = mysqli_real_escape_string($dbconfig, $_POST['username']); //to clean up, to avoid sql injection
    echo 'Name: ' . $name. '<br>';

        $pw = mysqli_real_escape_string($dbconfig, $_POST['password']);
    echo 'Password: ' . $pw. '<br>';

    die();

然后,将文件向下移动一点,然后执行以下操作:

代码语言:javascript
运行
复制
    $sql_query="SELECT userid FROM user WHERE username='$name' AND password='$pw'";
    $result = mysqli_query($dbconfig, $sql_query);
    $row = mysqli_Fetch_array ($result, MYSQLI_ASSOC);
    $count = mysqli_num_rows ($result);
echo 'Rows found: ' .$count. '<br>';

    if ($count >0){
echo 'Inside count > 0<br>';
        $_SESSION['Login'] = $name;
        header ("location:Welcome.php");
    }else{
echo 'Inside count ELSE<br>';
        echo "wrong login details";
    }

备注:

  1. 如果已经发送了其他标头消息,则PHP header()方法将无法工作。备选方案:echo '<meta http-equiv="refresh" content="0; url=http://new.example.com/address" />';
  2. 注意McKenzma对您的if ($count >0){代码的观察:如果$count==1,则这两个IF语句都将为真。
  3. 注意,session_start()应该是,这是PHP中的第一个指令。参见上面的示例代码
票数 0
EN

Stack Overflow用户

发布于 2016-04-05 19:25:36

您的第二个条件应该是"$count != 1“。要成功登录,您需要返回一行。

票数 0
EN

Stack Overflow用户

发布于 2016-04-05 19:25:58

你应该使用if和else,而不是if和if。

代码语言:javascript
运行
复制
<?php
 $count = mysqli_num_rows ($result);
if ($count >0){
$_SESSION['Login'] = $name;
header ("location:Welcome.php");
} else {
echo "wrong login details";
}
?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36435199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档