鍍金池/ 問答/PHP/ 一個(gè)關(guān)于php登錄的小問題實(shí)在無法理解

一個(gè)關(guān)于php登錄的小問題實(shí)在無法理解

這個(gè)是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>

這個(gè)是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'];

就會(huì)報(bào)錯(cuò) 求解

回答
編輯回答
筱饞貓

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

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

你把require 放到最上面,報(bào)錯(cuò)是因?yàn)橐婚_始你$_POST是空的,或者加個(gè)抑制符@

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

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

2017年5月30日 12:30
編輯回答
獨(dú)白

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

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

報(bào)什么錯(cuò)……

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

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

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

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

2017年7月19日 21:21