Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как открыт модальное окно с результатами (https://javascript.ru/forum/events/59955-kak-otkryt-modalnoe-okno-s-rezultatami.html)

olegalimov 04.12.2015 14:43

Как открыт модальное окно с результатами
 
Доброе время суток.
Помогите пожалуйста, есть скрипт на 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="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" type="submit" value="Проверить"></td>
<td class="result-domain">
<?
if(isset($_POST["domain"]) && strlen($_POST["domain"])>0 && isset($_POST["TLD"]) && is_array($_POST["TLD"]))
{
$target=$_POST["domain"];
$whois=new whois();
foreach($_POST['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">');
}
}
?>
</td>
</tr>
</table>
<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>
</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>
<td class ="table_cell-2">
<p class="zone-dom"><input type="checkbox" name="TLD[]" value=".рф" id="12"><label for="12">.рф</label></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>


не могу представить как это сделать.
подскажите только без библиотек jquery

Mess4me 04.12.2015 17:01

olegalimov,
не могли бы Вы немного детальней описать что надо )
Должно что то происходить при нажатии кнопки или как?

olegalimov 05.12.2015 08:16

Здравствуйте, после того как написали домен для проверки на занятость, нажимаем кнопку проверить, тут должно открывается окно с результатами проверки домена.
Вот как это реализовать?
Я не магу придумать как красива вывести результат проверки домена, может у кого есть идеи. поделитесь буду признателен. Вот сайт

laimas 05.12.2015 08:20

Красиво это как?
Заходим на любой whois сервис и смотрим - это просто список характеристик, каждая с новой строки. А красиво это как тогда?

olegalimov 05.12.2015 12:34

Как выше написал. так можно в новом окне?

laimas 06.12.2015 05:40

Цитата:

Сообщение от olegalimov
Как открыт модальное окно с результатами?

В общем-то никак, нет подходящего модального диалога для этого, который бы поддерживался всеми браузерами.
Если же имеется ввиду некая модная красивая рамочка на странице, то это просто слой позиционируемый абсолютно или фиксировано и помещаемый выше всех. К окну, а тем более модальности такая плюшка никакого отношения не имеет.

И чего надо?

olegalimov 06.12.2015 08:59

а если открыть новое отдельное окно? и там сделать вывод результата?
а как отключить на время скролинг страницы?

laimas 06.12.2015 09:21

Ну если нужно новое окно, пожалуйста, открывайте. Но это будет не модальное окно и такое окно имеет неприятное свойство, оно не обязано быть "поверх всех" - случайный щелчок вне его и окно "пропало".

window.open("url вашего сценария", "имя", "параметры окна")

olegalimov 06.12.2015 09:38

написал вот так не работает, почему?
<!DOCTYPE html>
<head>
	<title>Создаем модальное окно на HTML5 и CSS3</title>
	<meta charset="utf-8">
	
	<style>
	.modalDialog {
		position: fixed;
		font-family: Arial, Helvetica, sans-serif;
		top: 0;
		right: 0;
		bottom: 0;
		left: 0;
		background: rgba(0,0,0,0.8);
		z-index: 99999;
		-webkit-transition: opacity 400ms ease-in;
		-moz-transition: opacity 400ms ease-in;
		transition: opacity 400ms ease-in;
		display: none;
		pointer-events: none;
	}

	.modalDialog:target {
		display: block;
		pointer-events: auto;
	}

	.modalDialog > div {
		width: 400px;
		position: relative;
		margin: 10% auto;
		padding: 5px 20px 13px 20px;
		border-radius: 10px;
		background: #fff;
		background: -moz-linear-gradient(#fff, #999);
		background: -webkit-linear-gradient(#fff, #999);
		background: -o-linear-gradient(#fff, #999);
	}

	.close {
		background: #606061;
		color: #FFFFFF;
		line-height: 25px;
		position: absolute;
		right: -12px;
		text-align: center;
		top: -10px;
		width: 24px;
		text-decoration: none;
		font-weight: bold;
		-webkit-border-radius: 12px;
		-moz-border-radius: 12px;
		border-radius: 12px;
		-moz-box-shadow: 1px 1px 3px #000;
		-webkit-box-shadow: 1px 1px 3px #000;
		box-shadow: 1px 1px 3px #000;
	}

	.close:hover { background: #00d9ff; }
	</style>
</head>

<body>
<table>
<tr>
<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>
<p>
		<?
if(isset($_POST["domain"]) && strlen($_POST["domain"])>0 && isset($_POST["TLD"]) && is_array($_POST["TLD"]))
{
$target=$_POST["domain"];
$whois=new whois();
foreach($_POST['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>
</tr>
</table>
</body>
</html>

olegalimov 06.12.2015 09:47

Цитата:

Сообщение от laimas (Сообщение 398897)
window.open("url вашего сценария", "имя", "параметры окна")

можно по подробней применима к моему скрипту!
а window.open не блокируется браузерами?

laimas 06.12.2015 10:31

popup подвергают блокировке.

У вас кто определяет занятость домена - сервер, клиент лишь делает запрос имени. Поэтому на странице должна быть форма отправляющая введенное в сценарий, код которого показан. Нужно только блокировать отправку формы, открывать новое окно, и его в url запрашивающий этот сценарий (страницу) подставлять параметр "domain". В РНР коде изменить метод с $_POST на $_GET. Выше приведенный код и будет открыт в новом окне.

window.open("path/name.php?domain=" + значение_из_формы, "имя", "параметры окна")

olegalimov 06.12.2015 12:01

Вот написал все равно не работает?
<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>


может дело в том что у меня сам скрипт и форма в одном файле?

я не много не понимаю
Цитата:

window.open("path/name.php?domain=" + значение_из_формы, "имя", "параметры окна")
window.open("path/name.php?domain=" у меня нет страничке url он должен же сам создать. какое значение формы в данном случае писать?

laimas 06.12.2015 12:27

Цитата:

Сообщение от olegalimov
может дело в том что у меня сам скрипт и форма в одном файле?

А разделить сложно? Открываемое окно должно запрашивать php-код, который вернет результат. Да и в одном файле не есть проблема, если запрос клиента и возврат ответа поместить в начале, то есть:

<?
if($domain = trim($_GET["domain"])) { //а не strlen($_GET["domain"])>0
    //выполнение сценария,
    //а ответ обязательно с выходом
    exit('строка результата');
}
далее html-код страницы, включая форму и т.д...


Кроме этого, мало не отправлять форму, нужно еще и запрещать ее повторную отправку пока открыто новое окно.

olegalimov 06.12.2015 13:25

разделил получилось так
<?
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>


Я не понял что где мне поменять?
вы напишите пожалуйста.

laimas 06.12.2015 13:40

Может все таки Ajax?

Не знаю куда "здесь", я понятия не имею что это за таблица, какое отношение она ко всему имеет и т.д. А суть запроса я показал, это тот участок кода, который обрабатывает запрос на занятость домена.

Сперва прочесть это http://javascript.ru/window-open, ибо вы пишите отсебятину.

olegalimov 06.12.2015 14:09

эта таблица цен она не какого отношения не имеет.
скрипт перестал работать.
про window-open читал. вот сайт на котором идет разработкаhttp://oleg.webvm.ru

olegalimov 06.12.2015 15:11

Цитата:

Сообщение от laimas (Сообщение 398901)
window.open("path/name.php?domain=" + значение_из_формы, "имя", "параметры окна")

какое значение_из_формы мне писать?

Помогите пожалуйста!!

laimas 07.12.2015 00:05

Как какое, конечно поля, в которое пользователь вводит имя домена. Но не стоит этого делать таким путем:

<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']; ?>" method="get" name="formdomain" id="domain" onsubmit="return function_name(this)"> - по умолчанию форма отправляется методом GET, а ID для формы здесь вряд ли потребуется. А в функции function_name(f):

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-поток, хотя какова структура кода должна быть, я показывал.

olegalimov 07.12.2015 09:39

Цитата:

Сообщение от laimas (Сообщение 398890)
Если же имеется ввиду некая модная красивая рамочка на странице, то это просто слой позиционируемый абсолютно или фиксировано и помещаемый выше всех.

а как это сделать? у меня не выходит результат скролинг возвращает страничку верх.

laimas 07.12.2015 14:02

Что-то совсем туго. У меня нет сейчас достаточно времени, чтобы буквально все рассказывать и показывать.
Ищите в сети типа вплывающие подсказки на JQ, но простые примеры, а не плагины, вот по этому принципу и делается.
Коли так туго, то используйте JQ, в котором есть и методы Ajax, изучайте примеры и используйте. Именно это нужно, и гораздо удобнее нежели window.open, чтобы организовать диалог проверки корректного ввода домена и его занятости. Ведь не обязательно пользователь нажмет "Проверить", может и забыть, значит потребуется механизм, который за этим будет следить и не даст сделать заказ пока не будет проверен домен указанный, если для этого задействовать окно, то это будет полный кошмар.

В общем изучайте, пробуйте, пишите код, а подправить ошибки на форуме помогут.

olegalimov 07.12.2015 14:48

я вам уже говорил что при подключении библиотек jq у сайта пропадает скролл! в это форме есть javascript который отвечает за выделения всех чек боксов.
мне просто не нравится как сейчас выдает результат проверки.

laimas 07.12.2015 15:49

Ну так покажите код свой, что там за скролл, подскажут причину.

Ну если вы не знаете ну практически ничего, и как сделать абсолютное позиционирование чтобы слой "типа окно" показать, и с JS проблемы, используйте хоть JQ, он во многом "за вас думать будет", и сделать плавный скролл на нем тоже не проблема.

olegalimov 07.12.2015 16:19

скрол не мой скрипт, а разработчика шаблона joomla 3

laimas 07.12.2015 17:00

Значит используйте это, если не можете разобраться сами с джумлой.

olegalimov 07.12.2015 17:06

Вы писали:
Цитата:

Сообщение от laimas (Сообщение 398901)
В РНР коде изменить метод с $_POST на $_GET. Выше приведенный код и будет открыт в новом окне.

я исправил но не работает.
<?
set_time_limit(0);
require_once("doain.php");
?>
<!DOCTYPE html>
<head>
	<title></title>
	<meta charset="utf-8">
	
	<style>
	.modalDialog {
		position: fixed;
		font-family: Arial, Helvetica, sans-serif;
		top: 0;
		right: 0;
		bottom: 0;
		left: 0;
		background: rgba(0,0,0,0.8);
		z-index: 99999;
		-webkit-transition: opacity 400ms ease-in;
		-moz-transition: opacity 400ms ease-in;
		transition: opacity 400ms ease-in;
		display: none;
		pointer-events: none;
	}

	.modalDialog:target {
		display: block;
		pointer-events: auto;
	}

	.modalDialog > div {
		width: 400px;
		position: relative;
		margin: 10% auto;
		padding: 5px 20px 13px 20px;
		border-radius: 10px;
		background: #fff;
		background: -moz-linear-gradient(#fff, #999);
		background: -webkit-linear-gradient(#fff, #999);
		background: -o-linear-gradient(#fff, #999);
	}

	.close {
		background: #606061;
		color: #FFFFFF;
		line-height: 25px;
		position: absolute;
		right: -12px;
		text-align: center;
		top: -10px;
		width: 24px;
		text-decoration: none;
		font-weight: bold;
		-webkit-border-radius: 12px;
		-moz-border-radius: 12px;
		border-radius: 12px;
		-moz-box-shadow: 1px 1px 3px #000;
		-webkit-box-shadow: 1px 1px 3px #000;
		box-shadow: 1px 1px 3px #000;
	}

	.close:hover { background: #00d9ff; }
	</style>
</head>

<body>
<table>
<tr>

<div class="dom-fon">
<form class="form" action="<?php echo $_SERVER['PHP_SELF']; ?>" 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>
<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>
</tr>
</table>
<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>
</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>
</body>
</html>


да.. я не учился в институтах. по своей инвалидности, я самоучка.
этот скрипт без рhр открывает слой

laimas 07.12.2015 17:52

А я думаете кафедру РНР/JS заканчивал? :) Хотя учился и в училище, а потом и в институте, но специальности не относятся напрямую к программированию.

Да дело даже не в языке как таковом. У вас ведь сама логика страдает, а за этим огрехи и в коде.

Нужно проверить занятность домена, это первая задача, и пока она не будет выполнена, дальнейшие действия клиента должны игнорироваться, и вообще не разрешаться заказ домена, даже кнопки таковой на клиент не должно быть.

А что у вас? Ну зачем при проверке занятости домена isset($_GET["TLD"]), это какое отношение имеет к имени домена?
А об этом я уже писал strlen($_GET["domain"])>0, вы упорно эту глупость повторяете в коде своем. Ну введу я имя состоящее из одних N пробелов, и длина строки будет больше 0, но разве это имя? Удалять надо крайние пробелы, и если после этого строка не пуста, то проверять на корректность доступных символов, ну не может быть домен и как ",.,.,.....,,,...".

И показывал ведь, что если обращение проверки и прочие идут к одной и той же странице, то обработчики этого должны быть в самом начале кода:

<?php
if($domain = trim($_GET["domain"])) { //Обрезали крайние пробелы, если строка не пустая после этого, далее
//здесь нужно оправлять переменную $domain в функцию (ибо проверять это нужно будет постоянно, до тех пор пока клиент не закажет домен, то есть при каждом приеме данных от него), которая будет проверять корректность ввода
//и уже результат этой проверки и определит дальнейшие действия - или ошибка, или разрешить заказ
//окончание такого блока кода всегда должно заканчиваться выходном - exit, иначе пользователю будет возвращаться вывод страницы.
}

//это я не знаю зачем нужно, если нужно, значит нужно
set_time_limit(0);
require_once("doain.php"); //ошибка в имени, если только не случайность
?>

а далее код самой страницы,

<!DOCTYPE html>
<head>
<title></title>
<meta charset="utf-8">
<style>
.modalDialog
.....
</head>
<body>
<table>
<tr>
<div class="dom-fon">
<form class="form" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="domain" id="domain">
<table>
<tr>
<td class ="table_name">Введите имя домена:</td>
......
//но бузе РНР кода
if(isset($_GET["domain"]) && strlen($_GET["domain"])>0 && isset($_GET["TLD"]) && is_array($_GET["TLD"]))
{
$target=$_GET["domain"];
.... траля-ля

Понимаете для чего такая конструкция? А для того, что при открытии страницы нет запросов $_GET["domain"] и т.п., и РНР код в начале страницы обрабатывающий запросы клиента, то есть диалог с клиентом после загрузки страницы, не будет исполнятся, клиент просто получит страницу, а при наличии этих запрос будет работать код обслуживающий все диалоги с пользователем.

И я об этом уже не первый раз говорю, вы же "правите", но не понятно что, вы сперва поймите суть работы. А еще лучше сначала обдумать задачу в целом, затем разбить ее на ключевые моменты, которые и определят структуру кода. Структура кода, а сие каждая подзадача будут определять необходимый инструментарий языка (конструкции, функции), а это в купе нужно решать с набором, который нужно будет иметь на клиенте - элементы, методы, фичи всякие (типа панелей и прочих плюшек). А так как проверка данных от клиента, это постоянная и первостепенная задача сервера, и данные нужно проверять в два этапа - сперва занятость, разрешено далее, затем опять занятость и выбрано ли еще обязательное для заказа, и т.д.., то диалог подразумевает постоянную динамику, а для нее window.open ну совсем не лучшее решение.

А уж после этого можно углубляться в мелочи, что будет лучше for или whie, и т.п. Вы же пытаетесь решать задачу не от общего к частному, а наоборот, от мелочей, а об общем даже и представления нет. В общем же ой как далеко до языка программирования, а им может быть какой угодно, хоть Бейсик. :)

olegalimov 08.12.2015 09:19

В этом скрипте нет заказа домена, это просто кнопка с адресом.
Заказ идет в биллинг программе.
Сам скрипт лежит вот здесь http://youon.ru/Web/%D0%94%D0%BB%D1%...i-domena-whois

Если я вас правильно понял то, мне нужно почти весь скрипт переделать.

olegalimov 08.12.2015 11:32

написал но наверняка не правильно.
<?
if($domain = trim($_GET["domain"]))
$domain==null
 {
 alert ("Нет указан домен!");
 return;
 }
if ($domain=='')
 {
 alert ("Нет указан домен!");
 return;
 }
var domain = document.getElementById('domain').value;
var ext = document.getElementById('ext').value;
var domname = domain + ext;
var url="whois.php?domain="+domname;
url=url+"&sid="+Math.random();
xmlHttps.onreadystatechange = function stateChanged()
{
if (xmlHttps.readyState==4 || xmlHttps.readyState=="complete")
 {
 document.getElementById("txtHint").innerHTML=xmlHttps.responseText;
 }
 else
 {
 document.getElementById("txtHint").innerHTML='<div id="txtHint"><div class="dt-sc-info-box"><p>Загрузка информации ...</p></div></div>';
 
 }
}
xmlHttps.open("GET",url,true);
xmlHttps.send(null); 
  })
 
function GetXmlHttpObject()
{
var xmlHttps=null;
try
 {
 // Firefox, Opera 8.0+, Safari
 xmlHttps=new XMLHttpRequest();
 }
catch (e)
 {
 //Internet Explorer
 try
  {
  xmlHttps=new ActiveXObject("Msxml2.XMLHTTP");
  }
 catch (e)
  {
  xmlHttps=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
return xmlHttps;
}

set_time_limit(0);
require_once("whois.php");
?>
<!DOCTYPE html>
<head>
	<title></title>
	<meta charset="utf-8">
	
	<style>
	.modalDialog {
		position: fixed;
		font-family: Arial, Helvetica, sans-serif;
		top: 0;
		right: 0;
		bottom: 0;
		left: 0;
		background: rgba(0,0,0,0.8);
		z-index: 99999;
		-webkit-transition: opacity 400ms ease-in;
		-moz-transition: opacity 400ms ease-in;
		transition: opacity 400ms ease-in;
		display: none;
		pointer-events: none;
	}

	.modalDialog:target {
		display: block;
		pointer-events: auto;
	}

	.modalDialog > div {
		width: 400px;
		position: relative;
		margin: 10% auto;
		padding: 5px 20px 13px 20px;
		border-radius: 10px;
		background: #fff;
		background: -moz-linear-gradient(#fff, #999);
		background: -webkit-linear-gradient(#fff, #999);
		background: -o-linear-gradient(#fff, #999);
	}

	.close {
		background: #606061;
		color: #FFFFFF;
		line-height: 25px;
		position: absolute;
		right: -12px;
		text-align: center;
		top: -10px;
		width: 24px;
		text-decoration: none;
		font-weight: bold;
		-webkit-border-radius: 12px;
		-moz-border-radius: 12px;
		border-radius: 12px;
		-moz-box-shadow: 1px 1px 3px #000;
		-webkit-box-shadow: 1px 1px 3px #000;
		box-shadow: 1px 1px 3px #000;
	}

	.close:hover { background: #00d9ff; }
	</style>
</head>

<body>
<table>
<tr>

<div class="dom-fon">
<form class="form" action="<?php echo $_SERVER['PHP_SELF']; ?>" 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>
<p>
		<?
if(isset($_GET["domain"]) && 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>
</tr>
</table>
<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="ext"><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="ext"><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="ext"><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="ext"><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="ext"><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="ext"><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="ext"><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="ext"><label for="18">.kz</label></p>
<p class="price-yer">Цена 1 год 600 Р</p>
<p class="price-too">Продление на год 600 Р<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>
</body>
</html>

laimas 08.12.2015 14:46

Конечно не правильно, во-первых общее - если асинхронный диалог, то я не вижу чтобы вы свой РНР код проверки домена перенесли в него. Во вторых - if($domain = trim($_GET["domain"])) означает, обрезать карйние пробелы суперглобалльной переменной $_GET["domain"] и результат этой операции присвоить переменной $domain так как она может использоваться далее неоднократно. А условие if проверяет истинна ли переменная $domain, не пустая ли, не равна 0 (если бы это были числа), и если нет, то выполняется то, что в фигурных скобках.
Зачем же же еще и этот никчемный сыр-бор:

$domain==null
{
alert ("Нет указан домен!");
return;
}
if ($domain=='')
{
alert ("Нет указан домен!");
return;
}

да еще никоим образом к РНР отношения не имеющий? Вы пытаетесь скрестить два языка, РНР и JS?

Вы открыли тегом РНР php код, кусочек что я написал, а все далее шпарите от Javascript.

Здесь скачиваем толмуты по РНР и изучаем, синтаксис, конструкции, функции, по крайней мере те, что используете. Иначе за вас никто ничего делать не будет, здесь же не кафедра со студентами, здесь форум помогающий в конкретном коде, а вас то учить еще надо.

olegalimov 09.12.2015 12:51

a так?

<?
if($domain = trim($_GET["domain"]))
$domain = $_GET["domain"];
{
$domain >0;
}
else
{
echo (<div id="openModal">"Нет указан домен!"</div>);
exit ();
}
var domname = domain + ext;
var url="whois.php?domain="+domname;

laimas 09.12.2015 16:14

Будем гадать? :)

Вы хотя бы вникайте в то, что вам пишут, а написано было следующее:

if($domain = trim($_GET["domain"])) означает, обрезать карйние пробелы суперглобалльной переменной $_GET["domain"] и результат этой операции присвоить переменной $domain так как она может использоваться далее неоднократно.

То есть сразу в условии if() избавились от пробелов и присвоили это $domain, $domain уже равно тому, что было в $_GET["domain"]. Вопрос - зачем же вы после условия опять присваиваете значение $_GET["domain"] переменной $domain (переопределяете ее), и что самое ужасное, если $_GET["domain"] равна куче пробелов, то весть труд в условии $domain = trim($_GET["domain"]) псу под хвост. А вместо этого, после, бог знает зачем, переопределения, ваша любимая проверка:

$domain >0;

Вопрос - что есть имя домена, это строка или число? Наверное же строка, так как кого черта вы упорно проверяете на 0, о чем я вам уже не раз говорю? В помойку эту проверку, не место ей в тут в данном случае.

Нет в РНР:

var domname = domain + ext;
var url="whois.php?domain="+domname;


Без предшествующего $ domname будет означать константу, но константы в РНР объявляют не так. Эти две строки кода из Javascript, а вы их опять тулите в РНР.

Я дал вам ссылку на CHM справку, на русском, удобную, скачивайте и начинайте изучать основы. В противном случае на вас никто впустую не будет тратить время. Если же нужно срочно сделать, то заказывайте работу, сделают, но платно.

Хотите сами, учитесь, и если на том что пишите, для начала разберитесь в конце концов где есть код РНР и где он исполняется, а где Javascript, и где ему работать? Прочесть и понять как же все это должно работать (общее). Хотя бы это, разберетесь, тогда можно и пример показать, иначе смысла не имеет.

Mess4me 10.12.2015 13:03

laimas,
это надо любить, чтобы столько объяснять )

laimas 10.12.2015 13:57

Цитата:

Сообщение от olegalimov
по своей инвалидности, я самоучка.


Почему бы не помочь пояснив что-то, но реальность такова, что не хватает времени, должно быть движение с другой стороны. А там с движением туговато. )

Ну и не посылать же человека.


Часовой пояс GMT +3, время: 06:00.