鍍金池/ 問答/PHP/ 一個關于php登錄的小問題實在無法理解

一個關于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'];

就會報錯 求解

回答
編輯回答
筱饞貓

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

2018年5月15日 18:53
編輯回答
耍太極

你把require 放到最上面,報錯是因為一開始你$_POST是空的,或者加個抑制符@

2017年8月7日 05:32
編輯回答
咕嚕嚕

你最開始在加載頁面的時候,寫的$_POST是獲取值,但是你現(xiàn)在其實還沒有從html提交值到后端php處理,這個時候就會報錯,所以需要使用isset函數來進行判斷處理,如果$_POST['username']能獲取到值,就執(zhí)行 $_POST['username']提取到值,并且賦值給$username
@是抑制符,在PHP里可以屏幕警告信息或者錯誤信息 @$_POST['username']這樣就不會報錯了
不過一般不推薦這樣使用,因為這樣會導致看不到報錯信息,建議使用isset

2017年5月30日 12:30
編輯回答
獨白

出錯的代碼trim($_POST['username'])之后的分號是全角的,看看是不是這個原因。

2018年3月20日 22:56
編輯回答
筱饞貓

報什么錯……

2018年3月5日 14:22
編輯回答
乖乖噠

用user_error或者error_log把變量信息log一下(個人喜歡用前者,直接傳字符串就行),然后找下php.ini把錯誤日志配到哪了,直接在后臺用tail之類的工具看錯誤日志調起來會快一些。

2018年5月20日 22:12
編輯回答
玩控

直接用 print_r($_POST) 看打印的是什么?

2017年7月19日 21:21