var_dump returns null.The 登录页面出现空白
var_dump returns null.The login page gives a blank page
登录页面不工作。即使使用正确的电子邮件和密码,用户单击登录按钮后也会出现空白页面。 var_dump[$_POST] returns array(10) { ["email"]=> string(0) "" ["password"]=> string(0) "" ["login"] => string(0) "" ["uname"]=> string(0) "" ["name"]=> string(0) "" ["puname"]=> string(0) "" ["pname "]=> string(0) "" ["pemail"]=> string(0) "" ["Partnerpassword"]=> string(0) ""
这是我的代码
<?php
require_once("config.php");
error_reporting(E_ALL);
ini_set('display_errors', 1);
$id=$_POST['email'];
$pass=$_POST['password'];
var_dump($_POST);
$stmt = $cn->prepare('SELECT Email,Password FROM register_partneruser WHERE Email = ? ');
$stmt->bind_param('s', $id);
$stmt->execute();
$stmt->bind_result( $a,$Partnerpassword);
if($stmt->fetch())
{
// var_dump($id,$a);
// var_dump($password,$Partnerpassword);
if(password_verify($pass,$Partnerpassword))
{
echo "Login successfull";
}
else
{
echo"Login failed";
}
}
else
{
$error = "Username or Password is incorrect";
}
?>
这是登录表单的 HTML 代码片段
<form class="js-validate" novalidate="novalidate" method="post">
<!-- Login -->
<div id="login" style="opacity: 1;" data-target-group="idForm" class="animated fadeIn">
<!-- Header -->
<div class="card-header text-center">
<h3 class="h5 mb-0 font-weight-semi-bold">Login</h3>
</div>
<!-- End Header -->
<div class="card-body pt-6 pb-4">
<!-- Form Group -->
<div class="form-group pb-1">
<div class="js-form-message js-focus-state border border-width-2 border-color-8 rounded-sm">
<label class="sr-only" for="signinSrEmail">Email</label>
<div class="input-group input-group-tranparent input-group-borderless input-group-radiusless">
<input type="email" class="form-control" name="email" id="signinSrEmail" placeholder="Email Or Username" aria-label="Email Or Username" aria-describedby="signinEmail" required="" data-msg="Please enter a valid email address." data-error-class="u-has-error" data-success-class="u-has-success">
<div class="input-group-append">
<span class="input-group-text" id="signinEmail">
<span class="far fa-envelope font-size-20"></span>
</span>
</div>
</div>
</div>
</div>
<!-- End Form Group -->
<!-- Form Group -->
<div class="form-group pb-1">
<div class="js-form-message js-focus-state border border-width-2 border-color-8 rounded-sm">
<label class="sr-only" for="signinSrPassword">Password</label>
<div class="input-group input-group-tranparent input-group-borderless input-group-radiusless">
<input type="password" class="form-control" name="password" id="signinSrPassword" placeholder="Password" aria-label="Password" aria-describedby="signinPassword" required="" data-msg="Your password is invalid. Please try again." data-error-class="u-has-error" data-success-class="u-has-success">
<div class="input-group-prepend">
<span class="input-group-text" id="signinPassword">
<span class="flaticon-password font-size-20"></span>
</span>
</div>
</div>
</div>
</div>
<!-- End Form Group -->
<div class="mb-3 pb-1">
<button type="submit" name="login" formaction="../php/login.php" method="post" class="btn btn-md btn-block btn-blue-1 rounded-xs font-weight-bold transition-3d-hover">Login</button>
</div>
你的代码看起来没问题,其实输出是这样的输出:
array(3) { ["email"]=> string(4) "test" ["password"]=> string(4) "test" ["login"]=> string(0) "" }
我猜你的 config.php 出问题了。
试试这个,注释掉 include 并注释掉 var_dump 之后的所有内容,如果你看到输出,那么就是那个文件给你带来了问题。
编辑:
尝试调试您的 HTTP 调用,您可以使用 chrome 调试器(f12-> 单击网络 -> 单击保留日志 -> 打开您的站点并 运行 post)
你应该看到这样的东西:
来电:
http://127.0.0.1/projects/localweb/so/
GET http://127.0.0.1/projects/localweb/so/
sec-ch-ua: "Google Chrome";v="87", " Not;A Brand";v="99", "Chromium";v="87"
sec-ch-ua-mobile: ?0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
HTTP/1.1 200 OK
Date: Fri, 08 Jan 2021 21:15:42 GMT
Server: Apache/2.4.46 (Win64) OpenSSL/1.1.1g PHP/7.3.23
Last-Modified: Fri, 08 Jan 2021 21:02:47 GMT
ETag: "11c1-5b869e0e0b909"
Accept-Ranges: bytes
Content-Length: 4545
Content-Type: text/html
http://127.0.0.1/projects/action.php
email: email@email.com
login:
password: password
POST http://127.0.0.1/projects/action.php
sec-ch-ua: "Google Chrome";v="87", " Not;A Brand";v="99", "Chromium";v="87"
sec-ch-ua-mobile: ?0
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
HTTP/1.1 200 OK
Date: Fri, 08 Jan 2021 21:15:48 GMT
Server: Apache/2.4.46 (Win64) OpenSSL/1.1.1g PHP/7.3.23
X-Powered-By: PHP/7.3.23
Content-Length: 127
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
回复:
array(3) { ["email"]=> string(15) "email@email.com" ["password"]=> string(8) "password" ["login"]=> string(0) "" }
没有重定向或类似的东西。
您运行是在 http 还是 https 上进行此操作? posting 时呼叫是否转移到 https? http 日志上的任何其他重定向?
此外,检查你的 .htaccess,也许你的 htaccess 正在重写一些东西,添加斜线,一些东西,删除它进行测试,确保你有一些与代码无关的东西。
你的问题有误吗?
有区别:
NULL
返回
- 什么都没有返回
由此产生的几个问题:
- 谁在运行设置网络服务器?
- 您确定您也有权设置
error_reporting(E_ALL);
和
ini_set('display_errors', 1);
?
删除数据库查询代码和密码比较代码,再运行程序。
//$stmt = $cn->prepare('SELECT Email,Password FROM register_partneruser WHERE Email = ? ');
//$stmt->bind_param('s', $id);
//$stmt->execute();
//$stmt->bind_result( $a,$Partnerpassword);
if( 1 ) //if($stmt->fetch())
{
// var_dump($id,$a);
// var_dump($password,$Partnerpassword);
if( 1 ) //if(password_verify($pass,$Partnerpassword))
{
echo "Login successfull";
}
else
{
echo"Login failed";
}
}
else
{
$error = "Username or Password is incorrect";
}
程序现在应该 运行ning。
您可以通过 if(1)
或 if(0)
手动 control/emulate 无论用户是否登录。
如果你的程序现在是运行ning,错误不在这个程序,而是:
- 存在 SQL 错误
- 或者你的密码比较有问题
我假设 Named Parameter
是错误,$stmt->bind_param('s', $id);
:因为它在查询中仅指定为 ?
。
您没有收到错误的原因是您无权通过 PHP
-脚本设置 Error Reporting
。
为问题编辑 1:
您没有回答我的问题:谁托管网络服务器?如果是您,则必须更改 php.ini
并启用 error_reporting
.
否则你得看看你的虚拟主机的配置,如何启用它,或者问他!
你的问题是错误的!你应该问,我如何激活 error_reporting 并提供必要的信息,托管位置,哪个 php- 版本,如果是 apache 网络服务器或其他!
登录页面不工作。即使使用正确的电子邮件和密码,用户单击登录按钮后也会出现空白页面。 var_dump[$_POST] returns array(10) { ["email"]=> string(0) "" ["password"]=> string(0) "" ["login"] => string(0) "" ["uname"]=> string(0) "" ["name"]=> string(0) "" ["puname"]=> string(0) "" ["pname "]=> string(0) "" ["pemail"]=> string(0) "" ["Partnerpassword"]=> string(0) ""
这是我的代码
<?php
require_once("config.php");
error_reporting(E_ALL);
ini_set('display_errors', 1);
$id=$_POST['email'];
$pass=$_POST['password'];
var_dump($_POST);
$stmt = $cn->prepare('SELECT Email,Password FROM register_partneruser WHERE Email = ? ');
$stmt->bind_param('s', $id);
$stmt->execute();
$stmt->bind_result( $a,$Partnerpassword);
if($stmt->fetch())
{
// var_dump($id,$a);
// var_dump($password,$Partnerpassword);
if(password_verify($pass,$Partnerpassword))
{
echo "Login successfull";
}
else
{
echo"Login failed";
}
}
else
{
$error = "Username or Password is incorrect";
}
?>
这是登录表单的 HTML 代码片段
<form class="js-validate" novalidate="novalidate" method="post">
<!-- Login -->
<div id="login" style="opacity: 1;" data-target-group="idForm" class="animated fadeIn">
<!-- Header -->
<div class="card-header text-center">
<h3 class="h5 mb-0 font-weight-semi-bold">Login</h3>
</div>
<!-- End Header -->
<div class="card-body pt-6 pb-4">
<!-- Form Group -->
<div class="form-group pb-1">
<div class="js-form-message js-focus-state border border-width-2 border-color-8 rounded-sm">
<label class="sr-only" for="signinSrEmail">Email</label>
<div class="input-group input-group-tranparent input-group-borderless input-group-radiusless">
<input type="email" class="form-control" name="email" id="signinSrEmail" placeholder="Email Or Username" aria-label="Email Or Username" aria-describedby="signinEmail" required="" data-msg="Please enter a valid email address." data-error-class="u-has-error" data-success-class="u-has-success">
<div class="input-group-append">
<span class="input-group-text" id="signinEmail">
<span class="far fa-envelope font-size-20"></span>
</span>
</div>
</div>
</div>
</div>
<!-- End Form Group -->
<!-- Form Group -->
<div class="form-group pb-1">
<div class="js-form-message js-focus-state border border-width-2 border-color-8 rounded-sm">
<label class="sr-only" for="signinSrPassword">Password</label>
<div class="input-group input-group-tranparent input-group-borderless input-group-radiusless">
<input type="password" class="form-control" name="password" id="signinSrPassword" placeholder="Password" aria-label="Password" aria-describedby="signinPassword" required="" data-msg="Your password is invalid. Please try again." data-error-class="u-has-error" data-success-class="u-has-success">
<div class="input-group-prepend">
<span class="input-group-text" id="signinPassword">
<span class="flaticon-password font-size-20"></span>
</span>
</div>
</div>
</div>
</div>
<!-- End Form Group -->
<div class="mb-3 pb-1">
<button type="submit" name="login" formaction="../php/login.php" method="post" class="btn btn-md btn-block btn-blue-1 rounded-xs font-weight-bold transition-3d-hover">Login</button>
</div>
你的代码看起来没问题,其实输出是这样的输出:
array(3) { ["email"]=> string(4) "test" ["password"]=> string(4) "test" ["login"]=> string(0) "" }
我猜你的 config.php 出问题了。
试试这个,注释掉 include 并注释掉 var_dump 之后的所有内容,如果你看到输出,那么就是那个文件给你带来了问题。
编辑: 尝试调试您的 HTTP 调用,您可以使用 chrome 调试器(f12-> 单击网络 -> 单击保留日志 -> 打开您的站点并 运行 post)
你应该看到这样的东西:
来电:
http://127.0.0.1/projects/localweb/so/
GET http://127.0.0.1/projects/localweb/so/
sec-ch-ua: "Google Chrome";v="87", " Not;A Brand";v="99", "Chromium";v="87"
sec-ch-ua-mobile: ?0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
HTTP/1.1 200 OK
Date: Fri, 08 Jan 2021 21:15:42 GMT
Server: Apache/2.4.46 (Win64) OpenSSL/1.1.1g PHP/7.3.23
Last-Modified: Fri, 08 Jan 2021 21:02:47 GMT
ETag: "11c1-5b869e0e0b909"
Accept-Ranges: bytes
Content-Length: 4545
Content-Type: text/html
http://127.0.0.1/projects/action.php
email: email@email.com
login:
password: password
POST http://127.0.0.1/projects/action.php
sec-ch-ua: "Google Chrome";v="87", " Not;A Brand";v="99", "Chromium";v="87"
sec-ch-ua-mobile: ?0
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
HTTP/1.1 200 OK
Date: Fri, 08 Jan 2021 21:15:48 GMT
Server: Apache/2.4.46 (Win64) OpenSSL/1.1.1g PHP/7.3.23
X-Powered-By: PHP/7.3.23
Content-Length: 127
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
回复: array(3) { ["email"]=> string(15) "email@email.com" ["password"]=> string(8) "password" ["login"]=> string(0) "" }
没有重定向或类似的东西。
您运行是在 http 还是 https 上进行此操作? posting 时呼叫是否转移到 https? http 日志上的任何其他重定向?
此外,检查你的 .htaccess,也许你的 htaccess 正在重写一些东西,添加斜线,一些东西,删除它进行测试,确保你有一些与代码无关的东西。
你的问题有误吗?
有区别:
NULL
返回- 什么都没有返回
由此产生的几个问题:
- 谁在运行设置网络服务器?
- 您确定您也有权设置
error_reporting(E_ALL);
和ini_set('display_errors', 1);
?
删除数据库查询代码和密码比较代码,再运行程序。
//$stmt = $cn->prepare('SELECT Email,Password FROM register_partneruser WHERE Email = ? ');
//$stmt->bind_param('s', $id);
//$stmt->execute();
//$stmt->bind_result( $a,$Partnerpassword);
if( 1 ) //if($stmt->fetch())
{
// var_dump($id,$a);
// var_dump($password,$Partnerpassword);
if( 1 ) //if(password_verify($pass,$Partnerpassword))
{
echo "Login successfull";
}
else
{
echo"Login failed";
}
}
else
{
$error = "Username or Password is incorrect";
}
程序现在应该 运行ning。
您可以通过 if(1)
或 if(0)
手动 control/emulate 无论用户是否登录。
如果你的程序现在是运行ning,错误不在这个程序,而是:
- 存在 SQL 错误
- 或者你的密码比较有问题
我假设 Named Parameter
是错误,$stmt->bind_param('s', $id);
:因为它在查询中仅指定为 ?
。
您没有收到错误的原因是您无权通过 PHP
-脚本设置 Error Reporting
。
为问题编辑 1:
您没有回答我的问题:谁托管网络服务器?如果是您,则必须更改 php.ini
并启用 error_reporting
.
否则你得看看你的虚拟主机的配置,如何启用它,或者问他!
你的问题是错误的!你应该问,我如何激活 error_reporting 并提供必要的信息,托管位置,哪个 php- 版本,如果是 apache 网络服务器或其他!