Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: проверка адреса при регистрации аджаксом(ajax)
 
 автор: ronin   (17.07.2008 в 15:32)   письмо автору
 
 

Здравствуйте!
собрал для примера форму регистрации, эту тему размещаю для того чтобы Вы посмотрели нет ли ошибок и как пример взаимодействия ajax,php,mysql
проверку джавой-скриптом полей опускаю, также как механизм заноса информации в базу.
регистрация:

<form name="form1"  method="POST" action="" >
Адрес<input type=text name="email" onchange='getName()' 
value="<?echo ($_POST['email'])?>"><div id="from_ajax">&nbsp;</div> <br>
Поле<input type=text name="field" value="<?echo ($_POST['field'])<br>

<
input type="submit" value="Вперед!">

файл js:

var req;

function getName()
{
    url = 'http://localhost/ajax/name.php?email='; 
    if (window.XMLHttpRequest)
    {
        req = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {

        req = new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (req)
    {

            req.onreadystatechange = processReqChange;
            req.open("GET", url+form1.email.value, true);
            req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
            req.send();
    }

}
function  processReqChange()
{

    ab = window.setTimeout("req.abort();", 5000);
    if (req.readyState == 4)
    {
        clearTimeout(ab);

        // only if "OK"
        if (req.status == 200)
        {

        //  document.form1.email.value =(req.responseText);           document.getElementById("from_ajax").innerHTML = (req.responseText);
        }
        else
        {
            alert("Error:\n" + req.statusText);
        }
    }
}

файл php

<?php
#  источник:
# GeorgeIV
# mechanic
#http://softtime.ru/forum/read.php?id_forum=1&id_theme=55228
 
header("Content-type: text/html; charset=windows-1251");
 
header("Cache-Control: no-store, no-cache, must-revalidate");
 
header("Cache-Control: post-check=0, pre-check=0"false);
               
$email=$_GET[email];
require_once(
"configuration.php");
$query "SELECT * FROM users
          WHERE email LIKE '
$email' ";
$ath mysql_query($query);
if(
$ath)
  {
    if(
mysql_num_rows($ath)>0)
    {
    echo 
"Адрес $email есть.";

    }
    else
    {
       echo 
"Адрес $email нет.";
            }
  }
?>

   
 
 автор: GeorgeIV   (17.07.2008 в 15:40)   письмо автору
 
   для: ronin   (17.07.2008 в 15:32)
 

если я вобью ручками в форму email=a' or '1'='1 как у тебя отреагирует проверка? я не вижу проверки полученного $email перед передачей в запрос.

   
 
 автор: ronin   (17.07.2008 в 16:19)   письмо автору
 
   для: GeorgeIV   (17.07.2008 в 15:40)
 

дополнение в файл php:

if (!get_magic_quotes_gpc())
  {
    $email= trim(mysql_escape_string($email));
  }
if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email))
      {
       echo "<LI>некорректный адрес - введите e-mail в виде:<i>something@server.com</i>";
       exit();
      }

   
 
 автор: GeorgeIV   (17.07.2008 в 16:30)   письмо автору
 
   для: ronin   (17.07.2008 в 16:19)
 

лучше не exit, а перенаправить на страницу с вводом логина, человек может просто ошибиться и каждый раз открывать страницу ему может и не захотеться

   
 
 автор: ronin   (17.07.2008 в 16:36)   письмо автору
 
   для: GeorgeIV   (17.07.2008 в 16:30)
 

это php страница и не показывается!!!
человек видит только страницу с формой, а результат из php файла в том числе просьбу исправить адрес выдает аджакс,
Значительная часть скрипта базируется на Вашем сообщение
[url]
http://softtime.ru/forum/read.php?id_forum=1&id_theme=55228
[/url]
:)

   
 
 автор: GeorgeIV   (17.07.2008 в 16:38)   письмо автору
 
   для: ronin   (17.07.2008 в 16:36)
 

понял, у тебя же аякс :-)

   
 
 автор: ronin   (17.07.2008 в 17:40)   письмо автору
 
   для: GeorgeIV   (17.07.2008 в 16:38)
 

странное дело залил все это на сервер - и пошла потеха:
т.е в файле js если путь прописан как www.site.ru то срабатывает, не срабатывает если зайти site.ru
Плюс скрипт срабатывает только раз, повторно только после перезагрузки!
Я видимо что не так сделал в файле js так как как скрипт не работает в FF как сервере так и на локалхосте:)

   
 
 автор: GeorgeIV   (17.07.2008 в 17:43)   письмо автору
 
   для: ronin   (17.07.2008 в 17:40)
 

если www.site.ru и site.ru обрабатываются по разному, значит так настроен сервер

   
 
 автор: ronin   (17.07.2008 в 17:49)   письмо автору
 
   для: GeorgeIV   (17.07.2008 в 17:43)
 

Я видимо что не так сделал в файле js так как как скрипт не работает в FF как сервере так и на локалхосте:)

   
 
 автор: GeorgeIV   (17.07.2008 в 17:53)   письмо автору
 
   для: ronin   (17.07.2008 в 17:49)
 

а вчем нибудь работает?

   
 
 автор: ronin   (18.07.2008 в 09:58)   письмо автору
 
   для: GeorgeIV   (17.07.2008 в 17:53)
 

на локалхосте в IE - супер! А на сервере в том же IE - только при первом обращении, потом нужно перезагружать страницу.

   
 
 автор: GeorgeIV   (18.07.2008 в 10:41)   письмо автору
 
   для: ronin   (18.07.2008 в 09:58)
 

кусок с формой приведи

   
 
 автор: ronin   (18.07.2008 в 11:47)   письмо автору
 
   для: GeorgeIV   (18.07.2008 в 10:41)
 


<form name="form1"  method="POST" action="newaccount.php?<?echo $SID?>&action=send" onsubmit="return Validator(this)">
<table class=table border="0" align="center" >


<tr>
<td >Мыло:</td><td ><input type=text name="email" onchange='getName()' value="<?echo ($_POST['email'])?>"><div id="from_ajax">&nbsp;</div> <br>
<script language="javascript">
        editor_generate('email');
</script></td><td>&nbsp;</td>
</tr>
<tr>
<td >Картинка:</td><td><img src="random_image.php?<?echo $SID?>" border="0"></td>
<td><input type="text" name="code" value="<?echo htmlspecialchars(stripslashes($_POST['code']))?>"></td>
</tr> </div>
<tr>
<td colspan=2 align="center"><input type="submit" value="Зарегистрироваться!"></td>
</tr>
</table>
 </form>

   
 
 автор: GeorgeIV   (18.07.2008 в 11:59)   письмо автору
 
   для: ronin   (18.07.2008 в 11:47)
 

проблема может быть в кэшировании

   
 
 автор: ronin   (18.07.2008 в 12:24)   письмо автору
 
   для: GeorgeIV   (18.07.2008 в 11:59)
 

http://softtime.ru/forum/read.php?id_forum=1&id_theme=55228

вернулся к первоисточнику - он тоже не работает в FF

   
 
 автор: ronin   (18.07.2008 в 13:08)   письмо автору
 
   для: ronin   (18.07.2008 в 12:24)
 

Все пробую - не помогает!
http://softtime.ru/forum/read.php?id_forum=4&id_theme=53317

   
 
 автор: ronin   (18.07.2008 в 13:35)   письмо автору
 
   для: ronin   (18.07.2008 в 13:08)
 

УРА!!! Нашел!!!
там где джава-скрипт

req.send();

нужно поменять на :

req.send(null);

:)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования