07.02.2018, 20:13
|
Интересующийся
|
|
Регистрация: 27.01.2018
Сообщений: 29
|
|
Проверка на обращение к файлу
Здравствуйте. Можно ли сделать проверку на обращение к .php файлу? То есть, если обращение происходит, то выполняется определенное действие для пользователя, который обратился к файлу?
|
|
07.02.2018, 20:21
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от xlebosolniy
|
Можно ли сделать проверку на обращение к .php файлу?
|
Можно, но выполнить какие-то действия можно при асинхронном запросе, в противном случае отменять действие по умолчанию, выполнить что-то, затем только переход по запрошенному адресу.
|
|
07.02.2018, 20:28
|
Интересующийся
|
|
Регистрация: 27.01.2018
Сообщений: 29
|
|
А есть пример этой проверки обращения?
|
|
07.02.2018, 20:41
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Запрашиваемый URL и проверяйте, а вот что это за запрос, чтобы приводить пример неизвестно. Описывайте задачу полностью что и как, приводя примеры своего кода.
|
|
07.02.2018, 20:50
|
Интересующийся
|
|
Регистрация: 27.01.2018
Сообщений: 29
|
|
Если идет обращение к файлу forms.php, то должно срабатывать перенаправление location.href = '#Modal';
пытался делать перенаправление через header('location'), использовал все возможные средства, ничего не помогает, думаю может такое решение хоть как-то поможет
|
|
07.02.2018, 20:58
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от xlebosolniy
|
пытался делать перенаправление через header('location')
|
Так вам на сервере это надо определить? Код показывать надо. Что запрашивает - ссылка, в которой такой URL или нечто иное?
|
|
07.02.2018, 21:11
|
Интересующийся
|
|
Регистрация: 27.01.2018
Сообщений: 29
|
|
Если пользователь отправляет сообщение в форме обратной связи, то идет обращение к файлу forms.php, если обращение произошло, то нужно его перенаправить на другую страницу.
Пытаюсь сделать таким образом:
[SPOILER]
<?php
header('location: http://f0184040.xsph.ru/#openModal');
$backurl="/index.php#openModal";
$name=$_POST['name'];
$phone=$_POST['phone'];
$email=$_POST['email'];
$service=$_POST['service'];
$inn=$_POST['inn'];
$auction=$_POST['auction'];
$period=$_POST['period'];
$amount=$_POST['amount'];
$mess=$_POST['mess'];
$dopinf=$_POST['dopinf'];
$to .= "<mail@mail.ru>";
$subject = "Заявка с сайта";
if (!empty($name))
{
$msg =$msg."\nИмя: ".$name;
}
if (!empty($phone))
{
$msg =$msg."\nТелефон для связи: ".$phone;
}
if (!empty($email))
{
$msg =$msg."\nEmail: ".$email;
}
if (!empty($service))
{
$msg =$msg."\nТип услуг: ".$service;
}
if (!empty($inn))
{
$msg =$msg."\nИНН: ".$inn;
}
if (!empty($auction))
{
$msg =$msg."\nСсылка или № аукциона: ".$auction;
}
if (!empty($period))
{
$msg =$msg."\nСрок гарантии: ".$period;
}
if (!empty($amount))
{
$msg =$msg."\nСумма обеспечения: ".$amount;
}
if (!empty($mess))
{
$msg =$msg."\nСообщение / вопрос: ".$mess;
}
if (!empty($dopinf))
{
$msg =$msg."\n ".$dopinf;
}
$headers = array();
$headers[] = "Content-type: text/plain; charset=utf-8";
$headers[] = "From:admin";
$headers[] = "Reply-To: Заявка";
if (mail($to, $subject, $msg, implode("\r\n", $headers) ))
{
//////////////////////////////////////////////
$txt="$name,$phone,$email
";
$fp = fopen("mail.txt", "a+");
$fw = fwrite($fp, $txt);
fclose($fp);
/////////////////////////////////////////////
echo "location.href = '#openModal'";}
else { echo "False"; }
/*echo "<script language='Javascript'>
window.location = '/index.php#openModal'
</script>";
*/
?>
[/SPOILER]
Использую header('location') - не работает
Пытаюсь так сделать:
if (mail($to, $subject, $msg, implode("\r\n", $headers) ))
{
//////////////////////////////////////////////
$txt="$name,$phone,$email
";
$fp = fopen("mail.txt", "a+");
$fw = fwrite($fp, $txt);
fclose($fp);
/////////////////////////////////////////////
echo "location.href = '#openModal'";}
else { echo "False"; }
Тоже не работает.
Вот у меня и появился вопрос, возможно ли и насколько качественно будет если сделать через js проверку на обращение к файлу forms.php, если обращение произошло, то применяется перенаправление location.href = '#openModal';
|
|
07.02.2018, 21:25
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от xlebosolniy
|
Если пользователь отправляет сообщение в форме обратной связи, то идет обращение к файлу forms.php, если обращение произошло, то нужно его перенаправить на другую страницу.
|
Если обращение произошло, а значит пользователь на странице forms.php и если перенаправить, на этой странице требуется только такой код:
header('location:/index.php#openModal');
exit;
А еще проще прописать такое перенапрваление в .htaccess, если исходить из вашей логики.
Но как же тогда можно попасть на страницу forms.php?
Вы ничего не путаете в пояснении, может быть перенаправление нужно если запрос страницы без отправления формы?
|
|
07.02.2018, 21:34
|
Интересующийся
|
|
Регистрация: 27.01.2018
Сообщений: 29
|
|
Делаю так, перенаправление не работает.
Заполняем и отправляем форму:
<form id="oboloc" class="form-horizontal" method="post" action="forms.php">
<input class="type" name="type" value="1" type="hidden">
<div>
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 f-group var0 var1 var2 var3">
<input type="text" class="form-control" name="name" placeholder="Контактное лицо" required>
</div>
</div>
<div>
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 f-group var1 var2 var3">
<input type="text" class="form-control phone or" name="phone" placeholder="Телефон с кодом или" required>
</div>
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 f-group var0 var1 var2 var3">
<input type="text" class="form-control email or" name="email" placeholder="e-mail" required>
</div>
</div>
<div>
<div class="col-sm-12 col-md-12 col-lg-12 f-group var2 var3">
<input type="text" class="form-control only-numbers inn" name="inn" maxlength="12" placeholder="ИНН" required>
</div>
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 f-group var2 var3">
<input type="text" class="form-control" name="auction" placeholder="Ссылка или № аукциона" required>
</div>
</div>
<div>
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 f-group var0 var1 var2 var3">
<textarea class="form-control" name="mess" placeholder="Сообщение / вопрос"></textarea>
</div>
</div>
<div id="kn001" class="f-group var0 var1 var2 var3">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 center">
<input type="button" class="btn btn-primary form" value="Отправка">
<input type="reset" class="btn btn-default" value="Очистить форму">
</div>
</div>
</form>
action="forms.php" - получается попадаем на эту страницу, которая отправляет сообщение.
Сообщение отправилось, нужно перенаправить на страницу #openModal, чтобы проинформировать отправителя о том, что его заявка отправлена. Способами описанными выше не получается это сделать
|
|
07.02.2018, 22:13
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Я вас же спрашиваю об отправке формы, а вы кодом отвечаете. Вопрос отношения к JS не имеет, не в этом разделе его надо было задавать.
header('location: http://f0184040.xsph.ru/#openModal');
и далее код, это уже неверно, обязательно нужно делать выход - exit; после передачи заголовка.
Но что это за заголовок? А это что означает - action="forms.php" - получается попадаем на эту страницу, которая отправляет сообщение.? Как это, если не видно асинхронных запросов, а значит с этой страницы либо уйти на другую, либо нет смысла в таком перенаправлении.
echo "location.href = '#openModal'"; - а это попытка тогда чего? Во-первых работать не будет, ибо это просто строка, а не js-код. Во-вторых как одним значением можно определить два состояния - первый заголовок с #openModal, и вторая попытка тоже с #openModal?
Вообще по уму должно быть так - страница должна отвечать только на POST запросы, то есть если вызов ее будет через адресную строку, то либо перенапрваление, либо выход и ..., решайте.
if($_SERVER['REQUEST_METHOD']=='POST') {
//основной код
//Здесь же и перенаправления, и если #openModal запускает на клиенте окно сообщений, и нужно передать их два,
//то это либо два перехода по разным адресам, либо на один и тот же адрес,
//но с передачей дополнительного параметра определяющего текст сообщения.
//Если такой параметр нежелателен в адресе, можно передать через сессию.
//Не самый лучший вариант и разумнее ограничится одним сообщением - результатом "принято и свяжемся".
//А вот если форма отправляется асинхронным запросом (ajax), тогда возможны любые диалоги
//и передавать хеш в адресе не потребуется
} //else ...
Надеюсь правильно понял, чего делается.
|
|
|
|