-6ren">
gpt4 book ai didi

php - undefined index 错误-调用变量后定义的索引

转载 作者:行者123 更新时间:2023-11-28 06:07:25 24 4
gpt4 key购买 nike

我有以下代码片段:

<div class="message_display_here">
<?php
// check if file is empty
if ($_FILES['attachment']['size'] == 0 && $_FILES['attachment']['error'] == 0) {
// no file attached, so do nothing
} else {
echo "
<form action='inc/download_attachment.php' method='post'>
<button type='submit' name='save'> Download</button>
</form>";
}
?>
</div>

<div id="write_message_area">
<?php
if ($user == "") {
// display nothing
} else {
echo "<input id='file-input name='attachment' type='file' style='margin-left:15px;'/>";
}
?>
</div>

你可以输入类型文件 attachment 是在这之后定义的:

if ($_FILES['attachment']['size'] == 0 && $_FILES['attachment']['error'] == 0){

但是不能将write_message_area中的内容移动到上面这行代码之上,因为它们是两个独立的div,会影响CSS。

澄清一下,我在这一行收到 undefined index 错误:

if ($_FILES['attachment']['size'] == 0 && $_FILES['attachment']['error'] == 0){

我知道我为什么会收到错误,但不知道如何在不将内容从一个 div 移动到另一个 div 的情况下修复它,我不想这样做。

编辑

为什么我有两种形式:

表格 1(在 write_message_area 中):

用户向另一个用户发送消息时需要表格 1。

<?php
echo "
<form action='messages.php?u=$user' method='post'>
<textarea name='msg_body' rows='3' maxlength='255' cols='110' placeholder='Send message...'></textarea>
<input type='submit' name='send' value='Send'/>
<input id='file-input' name='attachment' type='file' style='margin-left:15px;'/>
</form>";
?>

Form 2(位于message_displayed_here):

<form action='inc/download_attachment.php' method='post' enctype='multipart/form-data'>
<button type='submit' name='save'> Download</button>
</form>";

因此,用户使用表单 1 键入他们的消息并添加附件(如果他们愿意)。如果用户已上传附件,则表单 2 将显示在每个 single_message 帖子的 div 中。 Form 2 是一个按钮,允许用户单击,将发送的附件保存在他们的本地磁盘上。

最佳答案

首先,您的表单中没有有效的 enctype 来处理文件,因此添加它;这是必需的。

<form action='inc/download_attachment.php' method='post' enctype='multipart/form-data'>

引用:http://php.net/manual/en/features.file-upload.post-method.php

另外,老实说;我不知道您要对表单标签之外的输入做什么。输入需要是表单的一部分。

您可能想移动您的 </form>标记在输入之后。

此外,您这里缺少引号 <input id='file-input <<<
应该读作 <input id='file-input'


引用评论:

"You need to check for $_FILES['attachment'], not for $_FILES['attachment']['size']. Also, use if( isset($_FILES['attachment']) ). When you load the page, before submitting form, $_FILES has no index(es)."

"But - in fact - you have to remove the condition in that form, because your form is displayed only if a file is submitted, but if the form is not displayed, how you can submit file? Unless than submission form is in another page. – fusion3k"


编辑:仔细查看您的条件语句后。

你的逻辑不对。

['error'] == 0表示值:0;没有错误,文件上传成功。按照手册

所以摆脱它并检查是否为空,以及我在原始答案中已经说过的内容。

if (

!empty($_FILES['attachment'])
&& $_FILES['attachment']['size'] == 0


) {

// do something

}

或者,更改 ['error'] == 0)['error'] != 0)使用 !否定运算符。

然后检查错误级别。查阅手册:

添加error reporting到您的文件的顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Then the rest of your code

旁注:显示错误只应在试运行中进行,绝不能在生产中进行。

关于php - undefined index 错误-调用变量后定义的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36374311/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com