У меня есть код, который выглядит так, чтобы запустить скрипт для отправки заказа.
include('../../auto/util.php');
if (!isValidFileName($_FILES['file-1']['tmp_name']) | !isValidFileName($_FILES['file-2']['tmp_name']))
{
echo "Invalid filename, <a href='index.php'>try again</a>.";
}
else if (count($_FILES) === 0)
{
echo "Your files failed to upload, likely because together they exceeded 15MB. Please submit the order manually to <a href=\"mailto:[email protected]\">[email protected]</a>";
}
else
{
newOrder_broker();
}
Я получаю сообщение об ошибке для неопределенного индекса файла-1 и файла-2, если есть загруженные файлы. Я получаю ту же ошибку, если файлы не загружены, но код работает и вводит порядок по мере необходимости.
Мой HTML выглядит так:
<form id="docContainer" enctype="multipart/form-data" method="POST" action="newOrder_broker.php"
И отправка в HTML выглядит так:
<div id="fb-submit-button-div" class="fb-item-alignment-left">
<button class="fb-button-special" id="fb-submit-button" style="background-image: url(theme/default/images/btn_submit.png);" onclick="checkShipTo();">Submit</button>
</div>
Если файлов нет, я не хочу, чтобы это останавливало процесс.
HTML-код формы:
<body onload="checkCustoms()">
<!-- Start of the body content for CoffeeCup Web Form Builder -->
<?php include("alert.php"); ?>
<form id="docContainer" enctype="multipart/form-data" method="POST" action="newOrder_broker.php"class="fb-100-item-column fb-toplabel selected-object" style="" data-form="manual_iframe">
<!-- // lots of form fields here here -->
<br />
<div id="item17" class="fb-item fb-50-item-column" style="opacity: 1; ">
<div class="fb-grouplabel">
<label id="item17_label_0" style="display: inline; ">
Upload front (Maximum size: 15MB)
</label>
<input type="checkbox" class="saveCheck" id="file-1-check" />
</div>
<div class="fb-button">
<input type="file" id="file-1" data-hint="" name="file-1-upload" onchange="readURL(this);" />
</div>
<br />
<img id="file-1-upload" src="#" alt="Preview (front)" width="200"/>
</div>
<div id="item31" class="fb-item fb-50-item-column" style="opacity: 1; ">
<div class="fb-grouplabel">
<label id="item31_label_0" style="display: inline; ">
Upload back (Maximum size: 15MB)
</label>
<input type="checkbox" class="saveCheck" id="file-2-check" />
</div>
<div class="fb-button">
<input type="file" id="file-2" data-hint="" name="file-2-upload" onchange="readURL(this);" />
</div>
<br />
<img id="file-2-upload" src="#" alt="Preview (back)" width="200" />
</div>
<div id="fb-submit-button-div" class="fb-item-alignment-left">
<button class="fb-button-special" id="fb-submit-button" style="background-image: url(theme/default/images/btn_submit.png);" onclick="checkShipTo();">Submit</button>
</div>
<button type="reset" onclick="localStorage.clear(); location.reload();">Reset</button>
<input type="hidden" name="fb_form_custom_html" />
<input type="hidden" name="fb_form_embedded" />
</form>
Итак, я изменил имя на «файл-1» и «файл-2». Я также добавил позицию массива [0], но все еще получаю:
Notice: Undefined index: file-1 in /home/prima2go/public_html/broker/sdp/newOrder_broker.php on line 6
Notice: Undefined index: file-2 in /home/prima2go/public_html/broker/sdp/newOrder_broker.php on line 6
Your files failed to upload, likely because together they exceeded 15MB. Please submit the order manually to [email protected]
<input type="file" id="file-1" data-hint="" name="file-1" onchange="readURL(this);" />
if (!isValidFileName($_FILES['file-1'][0]['tmp_name']) | !isValidFileName($_FILES['file-2'][0]['tmp_name']))
В вашей форме отсутствуют входные данные с типом «файл». Ввод должен выглядеть примерно так:
<input type="file" value="">
Без этих входов ваш PHP не установит $_FILES
массив, таким образом, получая ошибки, которые у вас есть.
Обновить:
Теперь, когда я вижу всю вашу форму, я замечаю, что ваши входные данные файла выглядят так:
<input type="file" id="file-1" name="file-1-upload" />
<input type="file" id="file-2" name="file-2-upload" />
Это означает, что вам нужно получить доступ к ним через PHP, используя name
атрибут, как это:
$_FILES['file-1-upload']['tmp_name']
$_FILES['file-2-upload']['tmp_name']
Других решений пока нет …