popup подвергают блокировке.
У вас кто определяет занятость домена - сервер, клиент лишь делает запрос имени. Поэтому на странице должна быть форма отправляющая введенное в сценарий, код которого показан. Нужно только блокировать отправку формы, открывать новое окно, и его в url запрашивающий этот сценарий (страницу) подставлять параметр "domain". В РНР коде изменить метод с $_POST на $_GET. Выше приведенный код и будет открыт в новом окне.
window.open("path/name.php?domain=" + значение_из_формы, "имя", "параметры окна")
|
Вот написал все равно не работает?
<form class="form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="domain" id="domain">
<table>
<tr>
<td class ="table_name">Введите имя домена:</td>
<td><input class="name-dom" style="height:38px" name="domain" type="text" /></td>
<td><input class="button-test" onclick="location.href='#openModal'" type="submit" value="Проверить"></td>
<div id="openModal" class="modalDialog">
<div>
<a href="#close" title="Закрыть" class="close">X</a>
<?
if(isset($_GET["domain"]) && strlen($_GET["domain"])>0 && isset($_GET["TLD"]) && is_array($_GET["TLD"]))
{
$target=$_GET["domain"];
$whois=new whois();
foreach($_GET['TLD'] AS $tldz)
{
echo($target.$tldz." - ");
$whois->zonelookup($target.$tldz);
if($whois->ERROR==0)
{
if(is_array($whois->RAWINFO) && count($whois->RAWINFO)>7 && $whois->FOUND==1)
{
echo nl2br("занят,") ;
}else
{
echo("свободен,");
}
}else
{
echo("ошибка запроса");
}
echo('<br style="display:inline">');
}
}
?>
</div>
</div>
<td class="result-domain"></td>
</tr>
</table>
может дело в том что у меня сам скрипт и форма в одном файле? я не много не понимаю Цитата:
|
Цитата:
<?
if($domain = trim($_GET["domain"])) { //а не strlen($_GET["domain"])>0
//выполнение сценария,
//а ответ обязательно с выходом
exit('строка результата');
}
далее html-код страницы, включая форму и т.д...
Кроме этого, мало не отправлять форму, нужно еще и запрещать ее повторную отправку пока открыто новое окно. |
разделил получилось так
<?
set_time_limit(0);
require_once("doain.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<html>
<title>Проверка доменного имени</title>
</head>
<body>
<div class="dom-fon">
<form class="form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get" name="domain" id="domain">
<table>
<tr>
<td class ="table_name">Введите имя домена:</td>
<td><input class="name-dom" style="height:38px" name="domain" type="text" /></td>
<td><input class="button-test" onclick="window.open("domain.php?domain=" + значение_из_формы, "имя", " style="width:600px; height:700px")
type="submit" value="Проверить"></td>
<div id="openModal" class="modalDialog">
<div>
<a href="#close" title="Закрыть" class="close">X</a>
<p>
<?
if(isset($_GET["domain"]) && strlen($_GET["domain"])>0 && isset($_GET["TLD"]) && is_array($_GET["TLD"]))
{
$target=$_GET["domain"];
$whois=new whois();
foreach($_GET['TLD'] AS $tldz)
{
echo($target.$tldz." - ");
$whois->zonelookup($target.$tldz);
if($whois->ERROR==0)
{
if(is_array($whois->RAWINFO) && count($whois->RAWINFO)>7 && $whois->FOUND==1)
{
echo("занят,") ;
}else
{
echo("свободен,");
}
}else
{
echo("ошибка запроса");
}
echo('<br style="display:inline">');
}
}
?>
</p>
</div>
</div>
<td class="result-domain"></td>
</tr>
</table>
<br />
<table>
<tr>
<td class ="table_butt-1"><input type="button" onClick="sel('checked')" value="Выбрать все" /></td>
<td class ="table_butt-2"><input type="button" onClick="sel()" value="Снять все" /></td>
<td><input type="button" value="Заказать домен" class="button-domain" onClick="window.open('http://panel.webvm.ru/OFFERTA/offerta_add_select_type.khtml','_blank')" /></td>
</tr>
</table>
<table class="prise-domain-teble">
<tr class ="table_string">
<td class ="table_cell-1">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".ru" id="11"><label for="11">.ru</label></p>
<p class="price-yer">Цена 1 год <br /> 90 Р</p>
<p class="price-too">Продление на год 90 Р<br></p></td>
<td class ="table_cell-2">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".рф" id="12"><label for="12">.рф</label></p>
<p class="price-yer">Цена 1 год 100 Р</p>
<p class="price-too">Продление на год 100 Р<br></p></td>
<td class ="table_cell-3">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".москва" id="13"><label for="13">.москва</label></p>
<p class="price-yer">Цена 1 год 385 Р</p>
<p class="price-too">Продление на год 385 Р<br></p></td>
<td class ="table_cell-4">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".moscow" id="14"><label for="14">.moscow</label></p>
<p class="price-yer">Цена 1 год 385 Р</p>
<p class="price-too">Продление на год 385 Р<br></p></td>
<td class ="table_cell-5">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".su" id="15"><label for="15">.su</label></p>
<p class="price-yer">Цена 1 год 390 Р</p>
<p class="price-too">Продление на год 390 Р<br></p></td>
<td class ="table_cell-6">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".net" id="16"><label for="16">.net</label></p>
<p class="price-yer">Цена 1 год 895 Р</p>
<p class="price-too">Продление на год 995 Р<br></p></td>
<td class ="table_cell-7">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".name" id="17"><label for="17">.name</label></p>
<p class="price-yer">Цена 1 год 795 Р</p>
<p class="price-too">Продление на год 895 Р<br></p></td>
<td class ="table_cell-8">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".kz" id="18"><label for="18">.kz</label></p>
<p class="price-yer">Цена 1 год 600 Р</p>
<p class="price-too">Продление на год 600 Р<br></p></td>
</tr>
<tr class ="table_string">
<td class ="table_cell-1">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".com" id="19"><label for="19">.com</label></p>
<p class="price-yer">Цена 1 год 895 Р</p>
<p class="price-too">Продление на год 995 Р<br></p></td>
<td class ="table_cell-2">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".tel" id="20"><label for="20">.tel</label></p>
<p class="price-yer">Цена 1 год 1395 Р</p>
<p class="price-too">Продление на год 1395 Р<br></p></td>
<td class ="table_cell-3">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".info" id="21"><label for="21">.info</label></p>
<p class="price-yer">Цена 1 год 895 Р</p>
<p class="price-too">Продление на год 995 Р<br></p></td>
<td class ="table_cell-4">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".us" id="22"><label for="22">.us</label></p>
<p class="price-yer">Цена 1 год 690 Р</p>
<p class="price-too">Продление на год 690 Р<br></p></td>
<td class ="table_cell-5">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".org" id="23"><label for="23">.org</label></p>
<p class="price-yer">Цена 1 год 895 Р</p>
<p class="price-too">Продление на год 995 Р<br></p></td>
<td class ="table_cell-6">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".biz" id="24"><label for="24">.biz</label></p>
<p class="price-yer">Цена 1 год 895 Р</p>
<p class="price-too">Продление на год 995 Р<br></p></td>
<td class ="table_cell-7">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".in" id="25"><label for="25">.in</label></p>
<p class="price-yer">Цена 1 год 1199 Р</p>
<p class="price-too">Продление на год 1199 Р<br></p></td>
<td class ="table_cell-8">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".mobi" id="26"><label for="26">.mobi</label></p>
<p class="price-yer">Цена 1 год 1499 Р</p>
<p class="price-too">Продление на год 1499 Р<br></p></td>
</tr>
<tr class ="table_string">
<td class ="table_cell-1">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".ws" id="27"><label for="27">.ws</label></p>
<p class="price-yer">Цена 1 год 1499 Р</p>
<p class="price-too">Продление на год 1499 Р<br></p></td>
<td class ="table_cell-2">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".asia" id="28"><label for="28">.asia</label></p>
<p class="price-yer">Цена 1 год 1400 Р</p>
<p class="price-too">Продление на год 1400 Р<br></p></td>
<td class ="table_cell-3">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".bz" id="29"><label for="29">.bz</label></p>
<p class="price-yer">Цена 1 год 1500 Р</p>
<p class="price-too">Продление на год 1500 Р<br></p></td>
<td class ="table_cell-4">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".cc" id="30"><label for="30">.cc</label></p>
<p class="price-yer">Цена 1 год 1699 Р</p>
<p class="price-too">Продление на год 1699 Р<br></p></td>
<td class ="table_cell-5">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".me" id="31"><label for="31">.me</label></p>
<p class="price-yer">Цена 1 год 1996 Р</p>
<p class="price-too">Продление на год 1996 Р<br></p> </td>
<td class ="table_cell-6">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".tv" id="32"><label for="32">.tv</label></p>
<p class="price-yer">Цена 1 год 2299 Р</p>
<p class="price-too">Продление на год 2299 Р<br></p></td>
<td class ="table_cell-7">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".mn" id="33"><label for="33">.mn</label></p>
<p class="price-yer">Цена 1 год 3199 Р</p>
<p class="price-too">Продление на год 3199 Р<br></p></td>
<!-- <td class ="table_cell-8" style="width: 150px;" align="center"> <p><input type="checkbox" name="TLD[]" value=".moscow" ><label>.moscow</label></p>
<p>Цена 1 год 385 Р</p>
<p>Продление на год 385 Р<br></p>
</td> -->
</tr>
</table>
</form>
<script>
function sel(opt) {
var checks = document.getElementById('domain').getElementsByTagName('input');
for (var i = 0; i < checks.length; i++) {
var check = checks[i];
check.checked = opt;
}
}
</script>
</div>
</body>
</html>
Я не понял что где мне поменять? вы напишите пожалуйста. |
Может все таки Ajax?
Не знаю куда "здесь", я понятия не имею что это за таблица, какое отношение она ко всему имеет и т.д. А суть запроса я показал, это тот участок кода, который обрабатывает запрос на занятость домена. Сперва прочесть это http://javascript.ru/window-open, ибо вы пишите отсебятину. |
эта таблица цен она не какого отношения не имеет.
скрипт перестал работать. про window-open читал. вот сайт на котором идет разработкаhttp://oleg.webvm.ru |
Цитата:
Помогите пожалуйста!! |
Как какое, конечно поля, в которое пользователь вводит имя домена. Но не стоит этого делать таким путем:
<input class="button-test" onclick="window.open("domain.php?domain=" + значение_из_формы, "имя", " style="width:600px; height:700px") type="submit" value="Проверить"> и вот таким: <input type="button" value="Заказать домен" class="button-domain" onClick="window.open('http://panel.webvm.ru/OFFERTA/offerta_add_select_type.khtml','_blank')" /> Причем и форма, и поле формы у вас имеют одно имя, что не страшно, но можно и запутаться в скрипте своем. Уж коли такая любовь к окнам, то нужно же этим процессом как-то управлять, иначе есть риск запутаться пользователю в этих окнах. Лучше обрабатывать событие onsubmit формы, назначив функцию обработчика, и передавая в нее форму: <form class="form" action="<?php echo $_SERVER['PHP_SELF']; ?>"
function_name(f) {
var e = "", url;
//если проверки занятости, то проверить заполнено ли поле
if(f.name=='formdomain') {
var v = f.domain.value.replace(/^\s+|\s+$/, ''; //это значение поля ввода, в котором нужно вырезать крайние пробелы, и только затем проверить и отправлять
if(!v) e = "Заполните поле!"; //ошибка
else url = f.action + "?domain=" + v;
//и это только минимум, а ведь не каждый символ разрешен для домена, то есть и это еще надо проверять
}
//если нет ошибок в форме
//то нужно сделать неактивными кнопки их отправки
//так как каждый запрос, это время, а не мгновенная реакция сервера, и пользователь может сколько угодно раз отправлять форму
return false; //блокировка отправки формы
}
У вас в одной форме можно породить два окна, поэтому вполне возможен бардак. А чтобы его исключить, заказать домен можно будет только в том случае, если проверка занятости вернула добро, то есть предполагается диалог предварительный, и такой диалог, учитывая проверки на доступные символы, вести на основе нового окна, это кошмар. Ajax здесь нужен. Обработчик же формы на сервере должен быть в самом начале кода, если запросы к той же странице, что выдает и весь ее контент. Вы же упорно его вставляете в общий html-поток, хотя какова структура кода должна быть, я показывал. |
Цитата:
|
Что-то совсем туго. У меня нет сейчас достаточно времени, чтобы буквально все рассказывать и показывать.
Ищите в сети типа вплывающие подсказки на JQ, но простые примеры, а не плагины, вот по этому принципу и делается. Коли так туго, то используйте JQ, в котором есть и методы Ajax, изучайте примеры и используйте. Именно это нужно, и гораздо удобнее нежели window.open, чтобы организовать диалог проверки корректного ввода домена и его занятости. Ведь не обязательно пользователь нажмет "Проверить", может и забыть, значит потребуется механизм, который за этим будет следить и не даст сделать заказ пока не будет проверен домен указанный, если для этого задействовать окно, то это будет полный кошмар. В общем изучайте, пробуйте, пишите код, а подправить ошибки на форуме помогут. |
| Часовой пояс GMT +3, время: 02:33. |