为什么在文本区域中生成以下通知?在本地计算机上运行php文件后。
这是截图的通知:
图片中的注意事项:
注意:未定义的变量: C:\ xampp \ htdocs \ PhpProject1 \ index.php 中 15 的用户输入
这是我的代码,我在netbeans中写道:
<?php
$find= array('alex','billy','dale');
$replace=array('a**x','b***y','d**e');
if(isset($_POST['user_input'])&&!empty($_POST['user_input'])){
$user_input = $_POST['user_input'];
$user_input_new= str_ireplace($find, $replace, $user_input);
echo $user_input_new;
}
?>
<hr>
<form action="index.php" method="POST">
<textarea name="user_input" rows="6" cols="30">
<?php
echo $user_input;
?>
</textarea><br><br>
<input type="submit" value="submit">
</form>
答案 0 :(得分:5)
您收到通知,因为$user_input;
未定义,因为POST['user_input']
未设置。为避免通知仅在已定义
$user_input;
echo isset($user_input) ? $user_input : '';
由于您要在$user_input
内打印textarea
,因此会在那里打印错误
答案 1 :(得分:1)
试试这个:
<?php
$find = array('alex', 'billy', 'dale');
$replace = array('a**x', 'b***y', 'd**e');
if (isset($_POST['user_input']) && !empty($_POST['user_input'])) {
$user_input = $_POST['user_input'];
$user_input_new = str_ireplace($find, $replace, $user_input);
echo $user_input_new;
}
?>
<hr>
<form action="index.php" method="POST">
<textarea name="user_input" rows="6" cols="30">
<?php
if (isset($user_input)) {
echo $user_input;
}
?>
</textarea><br><br>
<input type="submit" value="submit">
</form>
答案 2 :(得分:1)
将isset()
条件置于$user_input
之前,然后在textarea中使用它:
<textarea name="user_input" rows="6" cols="30">
<?php
if(isset($user_input)){
echo $user_input;
}
?>
</textarea><br><br>
或者你可以这样做
<textarea name="user_input" rows="6" cols="30">
<?=isset($user_input) ? $user_input : "" ?>
</textarea>
答案 3 :(得分:1)
只需在if语句
之前设置$user_input
$find= array('alex','billy','dale');
$replace=array('a**x','b***y','d**e');
$user_input = '';
if(isset($_POST['user_input'])&&!empty($_POST['user_input'])){
$user_input = $_POST['user_input'];
$user_input_new= str_ireplace($find, $replace, $user_input);
echo $user_input_new;
}
// ...
答案 4 :(得分:1)
这是因为$ _POST值未设置。如果形式从未被提交过,那就不可能了。 将您的条件更改为:
<input type="text" ng-model="modelText1" ng-change="updateModal(modelText1)">
或直接在ternary operator:
的表单中进行var modelText1 = $scope.modelText1.toLowerCase();
$scope.updateModal = function(){
$scope.modelText2 = '';
if(modelText1.indexOf('https')!=-1){
$scope.modelText2 = modelText1;
}
}
编辑 Pankaj Makwana (已更正):
或者 Pankaj Makwana 编辑我的答案(不是关于三元运算符而是short open tags)。
# checks if the form as been submitted, with the submit input's name
if (isset($_POST['submit']) {
$user_input = $_POST['user_input'];
} else {
# If not, it will write nothing
$user_input = "";
}
编辑:PHP7&#39; null coalescing operator 方式:
使用 Pankaj Makwana 编辑我的答案。
<textarea name="user_input" rows="6" cols="30">
<?php
echo isset($_POST['submit']) ? $_POST['user_input'] : "";
?>
</textarea><br><br>
答案 5 :(得分:0)
这是因为$user_input
没有价值。在这种情况下,使用isset()
检查变量是否存在。
isset($user_input)
{
// your code
}
答案 6 :(得分:0)
当您的POST操作发生时,您的变量将填充数据,因此您必须检查它是否为空或是否为isset!
if (isset($user_input) & !empty($user_input)) {
echo $user_input;
}