Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.09.2016, 18:23
Новичок на форуме
Отправить личное сообщение для Million Посмотреть профиль Найти все сообщения от Million
 
Регистрация: 08.09.2016
Сообщений: 9

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);
Ответить с цитированием
  #2 (permalink)  
Старый 08.09.2016, 18:44
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Million
Знаю что это можно реализовать средствами js
А что средств сервера для этого не хватает?
И с чего вдруг $sent определяет баг в форме? Функция mail возвращает true если отправление было всего лишь принято для передачи, а false не означает, что отвергнуто по вине пользователя. Он то в чем виновен?

define('PHP_EOL', "\r\n");


В одинарных кавычках это будет просто текст \r\n.

Последний раз редактировалось laimas, 08.09.2016 в 18:49.
Ответить с цитированием
  #3 (permalink)  
Старый 08.09.2016, 20:06
Новичок на форуме
Отправить личное сообщение для Million Посмотреть профиль Найти все сообщения от Million
 
Регистрация: 08.09.2016
Сообщений: 9

Это только кусочек кода (могу скинуть весь код) . Но вы не поняли суть вопроса. Я хочу заменить текущий документ на документ по указанному url. После использования replace() страница не записывается в истории посещений. В частности, это значит, что посетитель не сможет использовать для возврата кнопку браузера "Назад". То есть я хочу использовать <script>window.opener.location.replace('http://google.com')</script> только не знаю как его прикурить к коду PHP
Ответить с цитированием
  #4 (permalink)  
Старый 08.09.2016, 20:15
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Million
Но вы не поняли суть вопроса.
Это вы не понимаете, что функция mail вообще ничего не проверяет, и sendmail не проверяет существует ли такой адрес. Ошибку, по которой sendmail не принял письмо для отправки можно узнать только по логам, но это никак не будет ошибка о том, что юзер ввел неверный адрес. Это ваша забота не допускать некорректные.

Тогда к чему вся эта глупость с запретом по причине не отправки сообщения sendmail?
Ответить с цитированием
  #5 (permalink)  
Старый 08.09.2016, 20:54
Новичок на форуме
Отправить личное сообщение для Million Посмотреть профиль Найти все сообщения от Million
 
Регистрация: 08.09.2016
Сообщений: 9

Во вложении все
Вложения:
Тип файла: txt form_check.txt (3.3 Кб, 1 просмотров)
Тип файла: txt form_process.txt (9.0 Кб, 1 просмотров)
Тип файла: txt form_throttle.txt (2.7 Кб, 1 просмотров)
Тип файла: txt form-u269.txt (1.8 Кб, 2 просмотров)
Ответить с цитированием
  #6 (permalink)  
Старый 08.09.2016, 21:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Оно мне не нужно, я и без этого знаю что функция 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(), чтобы знать чего она возвращает.

Последний раз редактировалось laimas, 08.09.2016 в 21:22.
Ответить с цитированием
  #7 (permalink)  
Старый 09.09.2016, 02:58
Профессор
Отправить личное сообщение для psiklop Посмотреть профиль Найти все сообщения от psiklop
 
Регистрация: 04.03.2015
Сообщений: 163

Сообщение от laimas
Оно мне не нужно, я и без этого знаю что функция mail не производит никаких проверок.
и как ты узнал что там проверяется и зачем? никто же вообще вроде не писал про проверку ящика на существование? mail же может вернуть и false и я там увидел только лишь, что если false то один код, true - другой

Сообщение от Million
<script>window.opener.location.replace('http://google.com')</script> только не знаю как его прикурить к коду PHP
дописать куда надо и все после "?>"
можно и в код php тогда так echo "<script>window.opener.location.replace('http://google.com')</script>";

хотя там выше написано можно и php перенаправить читай про функцию header();
Ответить с цитированием
  #8 (permalink)  
Старый 09.09.2016, 09:34
Новичок на форуме
Отправить личное сообщение для Million Посмотреть профиль Найти все сообщения от Million
 
Регистрация: 08.09.2016
Сообщений: 9

у меня работает все корректно, когда вставляю в код перенаправление echo "<script>window.opener.location.replace('http://google.com')</script>"; перестает работать. Может не туда вставляю.. Просто уже с ума схожу второй день идет не могу решить задачу. Куда его вставить, чтоб он работал ?PHP файлы прикреплял выше
Ответить с цитированием
  #9 (permalink)  
Старый 09.09.2016, 10:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Million
у меня работает все корректно
Ну просто охренеть, по другому и не скажешь. Вы даже не понимаете почему такое не возможно.

Сообщение от Million
когда вставляю в код перенаправление echo "<script>window.opener.location.replace('http://google.com')</script>"; перестает работать.
И что это? Что вы вообще хотите - перенаправить пользователя (а данном случае закрыть вход по конкретному url), или же и это, и еще что-то?

location.replace('http://google.com') -и на что заменяем? Читаем о replace.
Ответить с цитированием
  #10 (permalink)  
Старый 09.09.2016, 10:36
Профессор
Отправить личное сообщение для psiklop Посмотреть профиль Найти все сообщения от psiklop
 
Регистрация: 04.03.2015
Сообщений: 163

Сообщение от Million
die(get_form_error_response($form['resources']['failed_to_send_email']));
ну если после этого вставить точно не перенаправит - die завершает скрипт

Сообщение от Million
<script>window.opener.location.replace('http://google.com')</script>
.opener может тут и не надо?
Сообщение от Million

echo get_form_response(true, $success_data);
а если удачно что там выводится, оно нужно? если нужно просто перенаправить
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
window.location.replace(...) не могу привязать к окну, которое написано на php Million Javascript под браузер 2 09.09.2016 14:59
JS + PHP - не могу подружить их. AciDWarrioR Общие вопросы Javascript 13 01.03.2016 14:06
Не могу вывести массив в js-те из php json_encode A1x1On AJAX и COMET 0 27.12.2011 04:05
Не могу вывести php картинку через create Samurai Общие вопросы Javascript 5 29.09.2011 00:23