Очередная порция ошибок в коде снова сводит с ума...
PHP Notice: Undefined index: submit on line 14
PHP Notice: Undefined index: name on line 105
PHP Notice: Undefined index: email on line 106
PHP Notice: Undefined index: theme on line 107
PHP Notice: Undefined index: text on line 108
Ну и собственно сам код:
<?php // 266
if(!$exe)
{
$title_normal[] = array(
'link' => $settings['patch_region'].$cat.'/',
'name' => $locale[266]
);
}
if($exe)
{
$form = true;
if($_POST['submit'] != "")
{
$err = array();
if(!isset($_POST['name'])) $_POST['name'] = "";
if(!isset($_POST['email'])) $_POST['email'] = "";
if(!isset($_POST['theme'])) $_POST['theme'] = "";
if(!isset($_POST['text'])) $_POST['text'] = "";
if($_POST['name'] == ""){$err[] = $locale[151];}
if($_POST['theme'] == ""){$err[] = $locale[601];}
if($_POST['email'] != "")
{
if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]/i", $_POST['email']))
{
$err[] = $locale[600];
}
}
else
{
$err[] = $locale[152];
}
if($_POST['text'] == ""){$err[] = $locale[153];}
$_POST['text'] = save_text($_POST['text']);
$text = "
<b>".$locale[281]."</b>: ".$_POST['name']."<br />
<b>".$locale[72]."</b>: ".$_POST['theme']."<br />
<b>".$locale[21]."</b>: ".$_POST['email']."<br />
<b>IP</b>: ".$settings['ip']."<br />
<hr>
".$_POST['text'];
if(!captcha($settings, 'check')){$err[] = $locale[46];}
if(count($err) > 0)
{
echo "
<center>
<div class='error alert' style='width: 500px; max-width: 100%;text-align: left;'>
<button class='close' data-dismiss='alert'>×</button>
<ul>
";
foreach($err as $v)
{
echo "
<li>".$v."</li>
";
}
echo "
</ul>
</div>
</center>
";
}
else
{
$form = false;
if(send_mail(EMAIL, $_POST['theme'], $text, array(), $_POST['email']))
{
echo "
<center>
<div class='ok' style='width: 500px; max-width: 100%;'>
".$locale[155]."
</div>
</center>
";
}
else
{
echo "
<center>
<div class='error alert' style='width: 500px; max-width: 100%;text-align:left;'><button class='close' data-dismiss='alert'>×</button>
".$locale[602]." ".EMAIL."
</div>
</center>
";
}
}
}
if($form)
{
echo "
<center>
<div class=\"mail_form\">
<form action='?' method='POST'>
<table border='0' class='table mail_table'>
<tr><td>".$locale[29]."</td><td><input name='name' type='text' value='".$_POST['name']."'></td></tr>
<tr><td>".$locale[26]."</td><td><input name='email' type='text' value='".$_POST['email']."'></td></tr>
<tr><td>".$locale[72]."</td><td><input name='theme' type='text' value='".$_POST['theme']."'></td></tr>
<tr><td>".$locale[74]."</td><td><textarea name='text' rows='5' wrap='on' style='min-height:80px'>".$_POST['text']."</textarea></td></tr>
<tr><td>".$locale[45]."</td>
<td><img class='captcha-mail' src='".$settings['patch']."captcha/".rand(0, 10000)."' width='80' height='40'><input name='captcha' type='text' value='' style='width:80px;height:40px;text-align:center;font-size:21px;'></td></tr>
</table>
<input name='submit' type='submit' value='".$locale[55]."' class='btn btn-success'>
</form>
</div>
</center>
";
}
}
?>
$_POST['submit'] != ""
Вот тут у Вас проверяется существующая переменная $_POST['submit'], а её нет
Проверяйте так:
if(isset($_POST['submit'])){}
или так:
if(!empty($_POST['submit'])){}
А если Вам все же надо сравнить - то уже в условии этого if-а при удачной проверке - сравнивайте. т.е.
if(!empty($_POST['submit'])){
if($_POST['submit'] != ''){}
}
В данном случае ошибка говорит вам о том, что вы пытаетесь вызывать неопределенные ключи массива.
Если используете PHP >= 7 можно решить оператором объединения с null ??
- Он возвращает первый операнд, если он задан и не равен NULL, а в обратном случае возвращает второй операнд:
if($_POST['submit'] ?? '') {
}
if($_POST['name'] ?? $_POST['email'] ?? $_POST['theme'] ?? $_POST['text'] ?? '') {
}
Или сразу определить и проверить в переменных, а дальше уже через if:
$name = $_POST['name'] ?? '';
$email = $_POST['email'] ?? '';
$theme = $_POST['theme'] ?? '';
$text = $_POST['text'] ?? '';
if(!$name) {
//...
} else if(!$email) {
//...
} else if(!$theme) {
//...
} else if(!$text) {
//...
} else {
//...
}
Если используете php < 7, для проверки на то, что переменная или значение массива не пустое, воспользоваться конструкцией empty
.
if(empty($_POST['submit'])) {
//переменная пуста
}
if(!empty($_POST['submit'])) {
//переменная не пуста
}
isset
работает немного по другому, советую посмотреть таблицу сравнения типов
.
На заметку:
Поддерживает оператор and so on
.
if(isset($_POST['name'], $_POST['email'], $_POST['theme'], $_POST['text'])) {
//...
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
LinuxПроект kaitai, файлы он сгенерировал, поэтому проблем с хедерами и вообще с кодом быть вроде не должно
Как перевести строку типа string s = "000000000000f8bf" в значение double? Я знаю как прочитать с файла такое значение, и правильно перевестиА как со строкой...
Нужно чтобы могли быть введены только русские или английские буквы в верхнем и нижнем регистре, а также символы пробел или дефис