2013-04-11 7 views
0

Я пытался найти способ сделать это, но, похоже, не может представить себе чистый, простой способ. Когда пользователь отправляет форму (скажем, регистрационную форму), форма проверяет следующим образом:Идеальный способ включения определенных файлов

$('form').submit(function(e) { 
     e.preventDefault(); 
     var $formId = $(this).attr('id'); 
     $.ajax({ 
      url : "validation_check.php", 
      type : "POST", 
      data : $("#" + $formId).serialize(), 
      success : function(data) { 
       $('#' + $formId + ' :input.form_errors').removeClass('form_errors'); 
       data = $.parseJSON(data); 
       if (jQuery.isEmptyObject(data)) { 
        document.forms[$formId].submit(); 
       } else { 
        $.each(data, function(i, item) { 
         $('#' + $formId + ' :input#' + i).addClass('form_errors'); 
        }); 
       } 
      } 
     }); 
    }); 

validation_check.php просто делает:

echo json_encode(validate($_POST)); 

И, наконец, функция validate()

$errors = array(); 

// need to only include if on the registration page 
include_once 'register.val.php'; 

if (isset($data['email']) && ($data['email'] == '' || filter_var($data['email'], FILTER_VALIDATE_EMAIL) == false)) { 
     $errors['email'] = 'Not a valid email'; 
} 

return $errors; 

include_once 'register.val.php'; просто содержит некоторые операторы if, такие как электронная почта, указанная выше. Мой вопрос в том, как я могу определить, какой файл я бы хотел включить? Если я зарегистрируюсь, я просто хочу включить register.val.php. Если я сохраню информацию, я просто хочу включить edit.val.php. Любые идеи по аккуратным чистым способом сделать это?

+0

как о скрытом поле «задача», в котором вы определяете, находитесь ли вы в режиме редактирования или сохранения, тогда вы можете включить использование функции if/else :) – Xavjer

+0

@Xavjer Я подумал об этом, но каждый может изменить код html через консоли браузера и измените значение. – SeanWM

+0

, конечно, они могут, но всегда думайте, что вам все равно придется пересматривать. Никогда не проверяйте только использование javascript, а затем передавайте аргументы как правильные. Используйте его только для проверки более удобной работы без перезагрузки страницы каждый раз с помощью javascript. Revalidate в вашем phpcode b4 save :) javascript можно легко обойти – Xavjer

ответ

1

Проходят $ _GET в свой сценарий под названием действия со значением либо зарегистрировать или изменить:

validation_check.php?action=register 

И тогда вы можете сделать, если (или переключатель, если вы хотите добавить дополнительные действия)

if($_GET['action'] === 'register') 
    include_once('register.val.php'); 
else 
    include_once('edit.val.php'); 

Вы также можете отправить действие через сообщение, если вы так склонны.

+0

Ах да, это вариант, я думаю. Я [проверял] (http://jsfiddle.net/8rPXW/) здесь, и он может работать. Это может быть единственный вариант, который у меня есть. – SeanWM

+0

Я делаю это много в моих проектах по разным причинам ... Еще один способ, который может работать, если вы сохраняете их в базе данных, вы можете запросить базу данных, чтобы узнать, существует ли пользователь уже. – eidsonator

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