ну можно. Удобно, да. Просто от инъекций всё равно надо защищаться вручную. PHP: $id = DB::insertID(" INSERT INTO `lots` SET `dkp` = '" . (int)$member->cid . "', `dkp_member` = '" . (int)$member->id . "', `dkp_lot_number` = NULL, `name`='" . DB::escape($_POST['name']) . "', `icon`='" . DB::escape($_POST['icon']) . "', `description`='" . DB::escape($_POST['description']) . "', `notprolong`=".(int)$notprolong.", `created`=NOW(), `type` = '" . DB::escape($_POST['type']) . "' "); --- Добавлено --- PHP: $list = DB::assoc_id('SELECT * FROM `table`'); foreach ($list as $k => $v) { что-то делаем; }
Мощно однако. Осталось это понять Пробую разобраться с сессией, а потом пытаться понять почему со вставками с phpmailer не работает основной код:/
А я не знаю где, на сессию не обращай внимания, я пытался просто убрать скрипты, и вопрос по той теме, а какая разница в скобках? https://php.ru/forum/threads/sessija-i-prisvaivanie-ej-skripta.58126/#post-467069 Код (Text): <?php require 'SiteController/AccountController/PHPMailerAutoload.php'; $mail = new PHPMailer(true); $mail->setFrom('admin@etrp.ru', 'Administrator'); $mail->addReplyTo('linker5211@gmail.com', 'Administrator'); class recovery extends str { protected function obr() { $mail = mysql_real_escape_string($_POST['email']); if(!empty($mail)) { $query = "SELECT `Mail` FROM `accounts` WHERE `Mail`='{$mail}' LIMIT 1"; $sql = mysql_query($query) or die(mysql_error()); if(mysql_num_rows($sql)==1) { $simvols = array ("0","1","2","3","4","5","6","7","8","9", "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"); for ($key = 0; $key < 6; $key++) { shuffle ($simvols); $string = $string.$simvols[1]; } $check = MD5($string); $newkey = mb_strtoupper($check); $query = "UPDATE `accounts` SET `Key`= '$newkey' WHERE `Mail`='{$mail}' "; $sql = mysql_query($query) or die(mysql_error()); $query = "SELECT `Mail` FROM `accounts` WHERE `Mail` ='{$mail}' LIMIT 1"; $sql = mysql_query($query) or die(mysql_error()); $row = mysql_fetch_assoc($sql); $mail = $row['Mail']; $mail->addAddress($mail); $mail->Subject = 'Запрос на восстановление пороля', 'Вы сделали запрос на восстановление пароля, ваш новый пароль: $string\n\nПожалуйста не отвечайте на данное письмо!'; $mail->send(); } catch (phpmailerException $e) { echo $e->errorMessage(); } catch (Exception $e) { echo $e->getMessage(); } $_SESSION['CheckRec'] = "Templates/FankyoCMS/vendor/recovery/success"; } else { $_SESSION['CheckRec'] = "Templates/FankyoCMS/vendor/recovery/failed"; } } } public function get_content() { include "SiteController/AccountController/recovery.php"; } } ?> Вот где ошибка?
PHP: $mail->send(); в примере и документации была проверка, отправлена письмо или возникла проблема, добавь её. и по пробуй отправить через SMTP, например yandex или mail.ru, так как проблема может быть в хостинге.
Ну вот код, пишет, что что-то не так, просто документацию по проверке я не нашел. Кажется я скоро достану тут всех, хех, на форуме стоит функция php(mail) и работает нормально, отправляет письма, вставляю тот же емейл адрес, но все равно жалуется. Порой мне достаточно одного верного варианта, чтобы потом не допускать ошибок.. Код (Text): <?php class recovery extends str { protected function obr() { $checkRec = [ 'success'=>'Templates/FankyoCMS/scripts/success.js', 'fail'=> 'Templates/FankyoCMS/scripts/failed.js', ]; $mail = mysql_real_escape_string($_POST['email']); if(!empty($mail)) { $query = "SELECT `Mail` FROM `accounts` WHERE `Mail`='{$mail}' LIMIT 1"; $sql = mysql_query($query) or die(mysql_error()); if(mysql_num_rows($sql)==1) { $simvols = array ("0","1","2","3","4","5","6","7","8","9", "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"); for ($key = 0; $key < 6; $key++) { shuffle ($simvols); $string = $string.$simvols[1]; } $check = MD5($string); $newkey = mb_strtoupper($check); $query = "UPDATE `accounts` SET `Key`= '$newkey' WHERE `Mail`='{$mail}' "; $sql = mysql_query($query) or die(mysql_error()); $query = "SELECT `Mail` FROM `accounts` WHERE `Mail` ='{$mail}' LIMIT 1"; $sql = mysql_query($query) or die(mysql_error()); $row = mysql_fetch_assoc($sql); $mail = $row['Mail']; $result = mail('admin@eternity-life.ru', $mail, 'message'); if($result) { echo 'все путем'; } else { echo 'что-то не так'; } mail($mail, "Запрос на восстановление пороля", "Вы сделали запрос на восстановление пароля, ваш новый пароль: $string\n\nПожалуйста не отвечайте на данное письмо!"); $checkRec[ $_SESSION['success'] ]; } else { $checkRec[ $_SESSION['failed'] ]; } } } public function get_content() { include "SiteController/AccountController/recovery.php"; } } ?>
Вот вся банальная проверка, потому что я не нашел мануал по проверке.. Код (Text): $result = mail('admin@eternity-life.ru', $mail, 'message'); if($result) { echo 'все путем'; } else { echo 'что-то не так'; }
А с ним страница даже не работает. Вот код с ним, на что сказали, что нужно проверить функцию mail->send(); на отправку, я проверил, что то где то не так, где я понять не могу..
в коде не вижу проверки, как я советовал через SMTP тоже не вижу, в тех поддержку ты не написал, по отладку не читал, похоже больше нечем тебе помочь.
С SMTP сейчас попробую конечно, а вот в тех поддержку писал, на что получил ответ "это делается в вашем скрипте".
пробуй, ну и отвечать мог бы на все вопросы. смени хостинг, создай простой скрипт только с отправкой почты, впиши туда данные и запусти, посмотри что выйдет.