window.location.replace(...) не могу привязать к окну, которое написано на php
Не могу решить такую задачу, есть форма написана на php, нужно чтоб после sent пользователя перебрасывало в другую вкладку и вернуться назад он не мог. Знаю что это можно реализовать средствами js, но не могу понять как прикрутить скрипт window.location.replace('...'); к данной форме. Помогите пожалуйста с утра сижу крыша едет
function email_form_submission($form) { if(!defined('PHP_EOL')) define('PHP_EOL', '\r\n'); $form_email = ((array_key_exists('Email', $_REQUEST) && !empty($_REQUEST['Email'])) ? cleanup_email($_REQUEST['Email']) : ''); $to = $form['email']['to']; $subject = $form['subject']; $message = get_email_body($subject, $form['heading'], $form['fields'], $form['resources']); $headers = get_email_headers($to, $form_email); $sent = @mail($to, $subject, $message, $headers); if(!$sent) die(get_form_error_response($form['resources']['failed_to_send_email'])); $success_data = array( 'redirect' => $form['success_redirect'] ); echo get_form_response(true, $success_data); |
Цитата:
И с чего вдруг $sent определяет баг в форме? Функция mail возвращает true если отправление было всего лишь принято для передачи, а false не означает, что отвергнуто по вине пользователя. Он то в чем виновен? define('PHP_EOL', "\r\n"); В одинарных кавычках это будет просто текст \r\n. |
Это только кусочек кода (могу скинуть весь код) . Но вы не поняли суть вопроса. Я хочу заменить текущий документ на документ по указанному url. После использования replace() страница не записывается в истории посещений. В частности, это значит, что посетитель не сможет использовать для возврата кнопку браузера "Назад". То есть я хочу использовать <script>window.opener.location.replace('http://google.com')</script> только не знаю как его прикурить к коду PHP
|
Цитата:
Тогда к чему вся эта глупость с запретом по причине не отправки сообщения sendmail? |
Вложений: 4
Во вложении все :)
|
Оно мне не нужно, я и без этого знаю что функция mail не производит никаких проверок. Спокойно можно отослать письмо по адресу as@as.as. Используя не sendmail, а SMTP еще что-то можно сделать, но...
Можно проверить функцией getmxrr(), но только почтовый ретранслятор, не более. Чтобы проверить есть ли адрес почтовый нужно иметь прямой доступ к порту 25, что вряд ли вам разрешит хостер. В общем ожидать от mail(), что адрес не верный, это полная чушь. А не "пускать" пользователя на страницу после определенного действия, так это просто перенаправить его, а не издеваться на клиенте над адресом. Тем более он может просто набрать адрес в адресной строке браузера и JS по барабану. //в самом начале кода, до любого вывода в браузер session_start(); if($_SESSION['done']) { header('location: url'); exit; } //основной код if(expert) { //что-то проверяем, и если сделано, то определяем перенаправление $_SESSION['done'] = 1; } Пока в сессии будет этот признак пользователь на эту страницу уже не попадет. Функция mail(), чтобы знать чего она возвращает. |
Цитата:
Цитата:
можно и в код php тогда так echo "<script>window.opener.location.replace('http://google.com')</script>"; хотя там выше написано можно и php перенаправить читай про функцию header(); |
у меня работает все корректно, когда вставляю в код перенаправление echo "<script>window.opener.location.replace('http://google.com')</script>"; перестает работать. Может не туда вставляю.. Просто уже с ума схожу второй день идет не могу решить задачу. Куда его вставить, чтоб он работал ?PHP файлы прикреплял выше
|
Цитата:
Цитата:
location.replace('http://google.com') -и на что заменяем? Читаем о replace. |
Цитата:
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 02:39. |