一个关于php登录的小问题实在无法理解

这个是login.html源码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
       <form method="post">
             <input type="text" name="username">
             <input type="text" name="password">
             <input type="submit" value="提交">


       </form>

</body>
</html>

这个是login.php源码

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/1/18
 * Time: 20:45
 */


$username = isset($_POST['username']) ? trim($_POST['username']) : '';
$password = isset($_POST['password']) ? $_POST['password'] : '';

echo $username;
echo '<br>';
echo $password;
require 'login.html';

?>

让我无法理解的是,为什么在login.php中直接用

$username = trim($_POST['username']);
$password = $_POST['password'];

就会报错 求解

慕容森
浏览 456回答 6
6回答

侃侃无极

你最开始在加载页面的时候,写的$_POST是获取值,但是你现在其实还没有从html提交值到后端php处理,这个时候就会报错,所以需要使用isset函数来进行判断处理,如果$_POST['username']能获取到值,就执行 $_POST['username']提取到值,并且赋值给$username@是抑制符,在PHP里可以屏幕警告信息或者错误信息 @$_POST['username']这样就不会报错了不过一般不推荐这样使用,因为这样会导致看不到报错信息,建议使用isset

临摹微笑

报什么错……

红糖糍粑

emmmmm, 你login.html里有指定 <form action="login.php">吗。

潇潇雨雨

用user_error或者error_log把变量信息log一下(个人喜欢用前者,直接传字符串就行),然后找下php.ini把错误日志配到哪了,直接在后台用tail之类的工具看错误日志调起来会快一些。

达令说

你把require 放到最上面,报错是因为一开始你$_POST是空的,或者加个抑制符@

收到一只叮咚

直接用 print_r($_POST) 看打印的是什么?
打开App,查看更多内容
随时随地看视频慕课网APP