所以我决定再次开始编码,因为我放弃了一段时间,我一直在尝试为我的网站创建一个PHP登录系统。每当我尝试登录时,我都会通过使用or die函数来测试是否存在“连接失败”,从而检测是否存在问题。通常我总是发现这是悲伤的情况。我看了几个其他问题/有类似问题的人。但遗憾的是,我似乎无法找出问题,也无法找到解决方案。我查看了我的脚本,似乎没有任何问题。我最好的猜测是由于我的MySQL数据库。但老实说,我真的不确定。如果你们中的任何一个人能给我一些关于做什么的建议那就太好了。谢谢,
另外请注意我在PHP网站上查看是否有任何可能的功能我可以添加以识别问题,但我无法。我不确定这是一个愚蠢的问题,但除了使用die / exit之外还有办法做到这一点吗?我也尝试过imgs.beastfox.net这是所有文件所在的位置。希望我能为您提供所需的所有信息。如果您需要任何其他细节,我希望我能提供帮助。我会再次注意到我已经搜索过其他可能有帮助的文章的高低,但我似乎无法弄清楚我的问题。另外需要注意的是,如果有任何问题,我将通过Namecheap托管我的网站。
谢谢, 大卫
- 网站 -
imgs.beastfox.net/php/login.php
电子邮件:test@test.com
密码:测试
- 代码 -
<?php
session_start();
if(isset($_SESSION["id"]) || isset($_COOKIE["id"]))
{
header("Location: dashboard.php");
}
if(isset($_POST["login"]))
{
//Gather input variables
$email = $_POST["email"];
$password = $_POST["password"];
//Hash password as pasword should be hashed in database for security reasons. See md5 hashing
$hash_password = md5($password);
$remember_me = $_POST["remember_me"];
//Connect to Database
$host="beastfox.net";
$username="{username}";
$password="{password}";
$db_name="{username}_login";
$tbl_name="login";
$con = mysqli_connect("beastfox.net","{username}","{password}","{username}_login","login")or die("cannot connect");
//Check database to see if email registered to DB
$sql = "SELECT id FROM users WHERE email='$email' LIMIT 1";
$query = mysqli_query($con, $sql);
$count_users = mysqli_num_rows($query);
if($count_users == 1)
{
//Retrieve user details to perform login
$sql = "SELECT * FROM users WHERE email='$email' LIMIT 1";
$query = mysqli_query($con, $sql);
while($row = mysqli_fetch_array($query))
{
$user_id = $row["id"];
$user_password = $row["password"];
}
if($hash_password == $user_password)
{
if($remember_me == 1)
{
//Set Cookie
$cookie_name = "id";
setcookie($cookie_name, $user_id, time() + (86400 * 30), "/");
header("Location: dashboard.php");
}
else
{
//Set Session
$_SESSION["id"] = $user_id;
header("Location: dashboard.php");
}
}
else
{
$error = '<p class="error">Password incorrect.</p>';
}
}
else
{
$error = '<p class="error">Email address not registered.</p>';
}
mysqli_close($con);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name='viewport' content='width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no'/>
<title>User Login</title>
<link href="https://fonts.googleapis.com/css?family=Roboto:400,700,900" rel="stylesheet">
<style type="text/css" media="screen">
*{
padding: 0;
margin: 0;
box-sizing: border-box;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
font-family: 'Roboto', sans-serif;
}
body, html{
width: 100%;
height: 100%;
}
body{
position: relative;
background: #2196f3; /* Old browsers */
background: -moz-linear-gradient(top, #2196f3 0%, #1e88e5 40%, #1565c0 100%); /* FF3.6-15 */
background: -webkit-linear-gradient(top, #2196f3 0%,#1e88e5 40%,#1565c0 100%); /* Chrome10-25,Safari5.1-6 */
background: linear-gradient(to bottom, #2196f3 0%,#1e88e5 40%,#1565c0 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#2196f3', endColorstr='#1565c0',GradientType=0 ); /* IE6-9 */
copy
}
label{
display: block;
}
form{
position: absolute;
top:50%;
left: 50%;
transform: translate(-50%,-50%);
width: 40%;
padding: 30px;
background: #FFF;
-moz-box-shadow: 0 1px 2px 0 rgba(0,0,0,0.15);
-webkit-box-shadow: 0 1px 2px 0 rgba(0,0,0,0.15);
box-shadow: 0 1px 2px 0 rgba(0,0,0,0.15);
border-radius: 5px;
}
.css-input {
padding: 7px 10px;
font-size: 15px;
border-width: 1px;
border-color: #CCCCCC;
background-color: #FFFFFF;
color: #455A64;
width: 100%;
border-style: solid;
border-radius: 0px;
box-shadow: inset 0px 0px 4px rgba(66,66,66,.14);
}
.css-input:focus {
outline:none;
}
form p{
display: block;
margin-bottom: 20px;
}
.clear{
clear: both;
}
.btn {
background: #3498db;
background-image: -webkit-linear-gradient(top, #3498db, #2980b9);
background-image: -moz-linear-gradient(top, #3498db, #2980b9);
background-image: -ms-linear-gradient(top, #3498db, #2980b9);
background-image: -o-linear-gradient(top, #3498db, #2980b9);
background-image: linear-gradient(to bottom, #3498db, #2980b9);
-webkit-border-radius: 8;
-moz-border-radius: 8;
border-radius: 8px;
text-shadow: 1px 1px 3px #666666;
font-family: Arial;
color: #ffffff;
font-size: 17px;
padding: 10px 25px 10px 25px;
border: solid #1f628d 1px;
text-decoration: none;
margin-top: 20px;
cursor: pointer;
}
.btn:hover {
background: #3cb0fd;
background-image: -webkit-linear-gradient(top, #3cb0fd, #3498db);
background-image: -moz-linear-gradient(top, #3cb0fd, #3498db);
background-image: -ms-linear-gradient(top, #3cb0fd, #3498db);
background-image: -o-linear-gradient(top, #3cb0fd, #3498db);
background-image: linear-gradient(to bottom, #3cb0fd, #3498db);
text-decoration: none;
}
h1{
color: #455A64;
font-size: 22px;
line-height: 22px;
padding-bottom: 10px;
border-bottom:1px solid #e9e9e9;
margin-bottom: 20px;
}
label{
display: block;
padding-bottom: 10px;
color: #546E7A;
}
label.remember{
display: inline-block;
line-height: 20px;
cursor: pointer;
}
label.remember input{
float: left;
margin-top: 5px;
}
label.remember span{
font-size: 14px;
color: #1194EA;
text-decoration: underline;
padding-left: 6px;
}
p.error{
padding-bottom: 0;
margin-bottom: 0;
color: #F44336;
padding-top: 15px;
}
</style>
</head>
<body>
<form method="post" action="login.php">
<h1>Login to Dashboard</h1>
<p>
<label for="email">User Email</label>
<input type="email" name="email" required="required" id="email" class="css-input" placeholder="Enter Email Address"/>
</p>
<p>
<label for="password">Password</label>
<input type="password" name="password" required="required" class="css-input" id="password" placeholder="Enter Password"/>
</p>
<label for="remember_me" class="remember">
<input type="checkbox" name="remember_me" id="remember_me" value="1"/>
<span>Remember Me</span>
</label>
<div class="clear"></div>
<button type="submit" name="login" class="btn">Login</button>
<?= $error; ?>
</form>
</body>
</html>
答案 0 :(得分:3)
如果您打开错误报告,则可以验证错误消息。
将以下内容添加到php脚本的顶部。
<?php
ini_set('error_reporting' -1);
ini_set('display_errors', 'on');
//...
结果:
警告:mysqli_connect()期望参数5为long,字符串为
您没有收到mysqli_connect_error
消息的原因是您提供给mysqli_connect
的参数无效。 See the manual
mysqli_connect($host, $username, $password, $database_name, $port, $socket);