2016-06-03 1 views
-2

Я хочу проверить, существует ли электронная почта в таблице или нет. Я использую bootstrap formValidator library, с удаленным методом, , но не приносит никакого правильного результата. Он всегда показывает одно и то же сообщение, независимо от того, неправильно оно или нет, не знаете, что случилось. remote.phpПроверьте, что он уже существует в базе данных, используя json, возвращающий данные из базы данных,

<?php 
include("dbcontroller"); 
$dbhandle=new DBcontroller(); 
header('Content-type: application/json'); 

include("connect.php"); 
$sql="select * from members"; 
$temp=array(); 
$result=$db_handle->runQuery($sql); 
foreach($result as $row) 
{ 
    $temp[]=$row['email']; 
} 


$valid = true; 

if (isset($_POST['email'])) { 
    $email = $_POST['email'][0]; 
    foreach ($temp as $k => $v) { 
     if ($email == $v) { 
      $valid = false; 
      break; 
     } 
    } 
} 

echo json_encode(array(
    'valid' => $valid, 
)); 
?> 

form.php

<div class="form-group"> 
    <label class="col-lg-2 control-label">Email</label> 
    <div class="col-lg-8"> 
      <input type="text" placeholder="Email" id="e_mail" class="form-control" name="email[]" autocomplete="off"/> 
    </div> 
</div> 

Javascript файл

'emaill[]': { 
       validators: { 
         notEmpty: { 
          message: 'The email address is required and can\'t be empty' 
         }, 
         emailAddress: { 
          message: 'The input is not a valid email address' 
         }, 
         remote: { 
         message: 'The email is already exist. you are already a registered user. please try to login?', 
         url: 'remote.php', 
         data:{ 
         type:'email' 
         }, 
         type: 'POST', 
         delay: 2000 
         } 
        } 
       } 
+1

форматирование кода страшен , почему вы ожидаете, что кто-то это прочитает? 'select *' is bad; «javascript file» не является полным файлом javascript. мы не знаем, какой валидатор вы используете для этого объекта. ключ валидатора - 'emaill []' с двумя символами 'l', но ваше свойство ввода' name' - 'email []' с одним 'l'. – naomik

+0

ну, поиск в php вместо sql - один из способов избежать инъекций ... – dandavis

ответ

0

Почему вы не делаете чек в ваш запрос?

$sql = "SELECT email FROM members WHERE email = '".$_POST['email']."'"; 

Теперь вы только должны проверить, если он возвращает более 0 результат:

$valid = false; 
$result=$db_handle->runQuery($sql); 
if(sizeOf($results) > 0) { 
    $valid = true; 
} 

Хотя вы, вероятно, должны избежать инъекции $ _POST Избегать SQL ;-)

+0

использовать счет (электронная почта), лучше, чем проверить размер я думаю –

+0

sizeOf() ist просто псевдоним для count. Таким образом, они оба одинаковы;) – l0rdseth

+0

Я имею в виду, по запросу 'SELECT count (email) FROM members WHERE email = '". $ _ POST [' email ']. "'"; ' –

Смежные вопросы