2014-12-16 3 views
0

Я изучаю php и mysqli (оба из них идут хорошо), и я тоже пытаюсь изучить Javascript, но я полностью теряюсь с помощью Javascript, и я понятия не имею, где я ошибаюсь. У меня есть форма для изменения адреса электронной почты, проверка php работает нормально, но я не могу заставить javascript работать. Я был бы очень признателен, если бы кто-нибудь мог сказать мне, где я ошибаюсь в этом сценарии. Заранее спасибо.слияние javascript в php

<!DOCTYPE html> 
<html lang="en"> 
      <head> 

     <?php 
      ob_start(); 
      session_start(); 
      $timeout = 1800; // Number of seconds until it times out. 

      if (isset($_SESSION['user_id'])){ 
       if(isset($_SESSION['timeout'])) { 
        $duration = time() - (int)$_SESSION['timeout']; 
        if($duration > $timeout) { 
         session_destroy(); 

        } 
       } 
      }else{ 
       Header("Location: login.php"); 
      } 

      ob_end_flush(); 

      // Update the timout field with the current time. 
      $_SESSION['timeout'] = time(); 

     ?> 

     <script type="text/javascript"> 
     function validate(form){ 
     fail = validateEmail(form.email.value) 
     if (fail == "") return true 
     else {alert(fail); return false} 
     } 

    </head> 

      <body> 
       <div class="content_two"> 

        <?php 
         ob_start(); 
         require_once ('mysqli_connect.php'); 
         $errors = array(); 
         $trimmed = array_map('trim', $_POST); 

         if (isset($_POST['submitted'])){ 
          $em = FALSE; 

          if (preg_match ('/^([a-zA-Z0-9._%-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})*$/',$trimmed['email'])){ 
           $em = mysqli_real_escape_string ($dbc,$trimmed['email']); 
          }else{ 
           $errors[] = 'Please enter a valid email address<br>'; 
          } 


          if (empty($errors)) { 
           $q = "UPDATE users SET email = '$em' WHERE user_id={$_SESSION['user_id']} LIMIT 1"; 
           $r = mysqli_query ($dbc, $q); 

           if (mysqli_affected_rows($dbc) == 1){ 
            $url = 'myaccount.php'; 

            ob_end_clean(); 
            header("Location: $url"); 
           }else{ 
            echo 'update issue'; 
           } 
          }else{ 
           foreach ($errors as $msg){ 
            echo " - $msg<br/>"; 
           } 
          } 

          mysqli_close($dbc); 
         } 
        ?> 

        <form action="my_account_c_email.php" method="post" onSubmit="return validate(this)"> 
         <p><label for="email">* Email</label><input type="text" name="email" size="50" maxlength="50" value="<?php if(isset($_POST['email'])) echo $_POST['email']; ?>"/></p> 
         <p><input type="submit" name="submit" value="Update" id="button"/></p> 
         <input type="hidden" name="submitted" value="TRUE"/> 
        </form> 

        <script type="text/javascript"> 
        function validateEmail(field) { 
        if (field == "") return "No email enetered".\\n" 
        return"" 
        } 
        </script> 
      </body> 

    </html> 

ответ

0

заменить верхнюю функцию как этот

<script type="text/javascript"> 
 
     function validateOld(form){ 
 

 
      if (form.email.value != "") { 
 
      return true; 
 
      }else { 
 
      alert("No email enetered"); return false; 
 
        
 
      } 
 
     } 
 

 
</script>

нет необходимости второго сценария удалить, что "validateEmail" функция

лучший способ для проверки электронной почты является

function validate(form){ 
 

 
      if (validateEmail(form.email.value)) { 
 
      return true; 
 
      }else { 
 
      alert("Email address is not valid!"); return false; 
 
        
 
      } 
 
     } 
 

 
function validateEmail(email) { 
 
    var re = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
 
    return re.test(email); 
 
}
<form action="my_account_c_email.php" method="post" onSubmit="return validate(this)"> 
 
         <p><label for="email">* Email</label><input type="text" name="email" size="50" maxlength="50" value=""/></p> 
 
         <p><input type="submit" name="submit" value="Update" id="button"/></p> 
 
         <input type="hidden" name="submitted" value="TRUE"/> 
 
        </form>

+0

'Uncaught SyntaxError: Неожиданный токен>' – Quentin

+0

Извините, я обновил сообщение, зарегистрируйтесь сейчас – saqibahmad

+0

Спасибо, я пробовал это, и он не работает – ZMB

0

ошибки Синтаксис:

if (field == "") return "No email enetered".\\n" 
         ^--start string 
              ^--end string 
              ^^^^-- huh? 

Так что это плохо JavaScript, весь блок сценария убивают, а функция Validate никогда не определяется.

+0

Важно использовать консоль JavaScript вашего браузера, которая покажет вам ошибки JavaScript, подобные этим. Попытка выполнить JavaScript-программирование, не открывая консоль в любое время, сходит с ума. –

+0

Спасибо, Джордан, я не знал об этой функции – ZMB