2013-10-08 2 views
1

Я новичок в проверке php. Я работаю над формой регистрации, которая будет проходить через php-скрипт для проверки базы данных с двумя необязательными переменными ac_title и email после проверки ошибок. Он вставляет данные в базы данных. Имя файла: formvu.php, затем оно переместится на activate.php. У меня возникла проблема в том, что если я используюКнопка отправки не проверяет скрипт php.

<form name="fone" method="post" onsubmit="return validateform(fone)" action="activate.php"> 

Форма игнорирует скрипт php и перейдет на следующую страницу. Buh, когда я буду использовать это:

<form name="fone" method="post" onsubmit="return validateform(fone)" action="<?php $_SERVER['PHP_SELF']?> "> 

Теперь на странице будут запущены все ошибки и команды php.

Вот весь мой код PHP:

<?php 
    if($_SERVER["REQUEST_METHOD"] == "POST") 
    { 
     $nun=$_POST['account']; 
     $em=$_POST['email']; 
     $register="SELECT ac_title,email FROM register"; 
     $query=mysql_query($register); 
     while ($row= mysql_fetch_array($query)) 
     { 
      if ($nun == $row['ac_title']) 
      { 
       print "<span class=\"phclass\"><br/><b> 
        Your Account Title :</b></span>"." '"."<span class=\"ahclass\"><b>$nun</b></span>"."'". 
        " <span class=\"phclass\"><b>already exsist, please choose different.</b></span><br/>"; 
      } 

      if($em == $row['email']) 
      { 
       print "<span class=\"phclass\"><b><br/>Your Email:</b> 
        </span>"." "."<span class=\"phclass\"><b> $em</b></span>"."<span class=\"phclass\"> 
        <b> already exsist, please visit <a href=\"resetpassword.html\"> 
        Forget password</a></b></span><br/>"; 
      } 
      if ($nun != $row['ac_title'] && $em != $row['email']) 
      { 
       $ac_title=$_POST['account']; 
       $email=$_POST['email']; 
       $pass=$_POST['pwd']; 
       $fn=$_POST['fname']; 
       $gd=$_POST['gender']; 
       $city=$_POST['city']; 
       $VID=$_POST['vuid']; 
       $course=$_POST['courseid']; 
       $camp=$_POST['campus']; 
       $hash=md5(rand(0,1000)); 

       $sql="INSERT INTO register (ac_title, email, pass,fn, sex, city, 
        VID, CRS, campus, hash,activate) VALUES('$ac_title', '$email', 
        '$pass','$fn', '$gd',' $city','$VID','$course', 
        '$camp','$hash','0')"; 

       $inst=mysql_query($sql,$connection); 

       if (!$inst) 
       { 
        print ""; 
       } 
       else 
       { 
        echo "Succesful "; 
       } 
      }// if 
     } // while 
    } // if 
?> 

Если действие по умолчанию страница будет работать весь сценарий. Я хочу запустить весь скрипт и перейти на следующую страницу (activate.php).

+2

Проверьте [заголовок ] (http://php.net/manual/en/function.header.php), чтобы переместить ваш скрипт (обратите внимание, что NOTHING может быть выведено - т.е. HTML не должен быть написан до перенаправления) –

+0

ic hecked header() мне дана ошибка, которую я опубликовал вниз ... означает, что мне нужно опубликовать этот скрипт php до моего кодирования html. –

+1

Именно поэтому я помещаю слово «НИЧЕГО» в столицах - вы выводите HTML перед вызовом заголовка() 'где-то на вашей странице. Не делайте этого, переместите часть обработки PHP над вашим первым тегом '' и используйте код Патрика для перенаправления –

ответ

1

Вы хотите перенаправить, когда это было успешно? Если да добавить этот код, где эхо «успешным» является:

header("Location: activate.php"); 
die(); 

См here для получения дополнительной информации о переадресации.

+0

привет спасибо x для ответа я тоже сделал эту функцию заголовка, но браузер - это givin me эта ошибка «Предупреждение: не удается изменить информацию заголовка - уже отправленные заголовки (вывод начинается с F: \ xampp \ htdocs \ ourwork \ proper pages \ formvu.php: 7) в F: \ xampp \ htdocs \ ourwork \ proper pages \ formvu .php в строке 88 " –

+0

Это означает, что вы имеете выход где-то перед вызовом заголовка. Это может быть нечто простое, как пространство.Убедитесь, что вы проверяете, нет ли пробелов перед вашими тегами . – Patrick

+0

Ошибка Невозможно изменить информацию заголовка - заголовки, уже отправленные (вывод начался с F: \ xampp \ htdocs \ ourwork \ proper pages \ databaseregistration.php: 9) в F: \ xampp \ htdocs \ ourwork \ proper pages \ formvu.php on line 52 databaseregisration.php - это просто команды mysql для подключения к базе данных. –

1

Валидация - сложная проблема, но в Интернете есть много ресурсов, которые помогут вам. Это ранний хит в Google для меня: http://www.sitepoint.com/form-validation-with-php/

Хотя вы можете добавить проверку формы с помощью JS (что вы, кажется, делаете), если вы хотите, чтобы она была более безопасной, я бы рекомендовал также проверить серверную часть данных (PHP), и предоставленная ссылка должна помочь вам здесь.

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

+0

yes все поля используют базовое требование javascript FOR, такое как пустое или электронное письмо или подтверждение пароля, что мне нужно, чтобы проверить базу данных для заголовка ACOUNT и EMAIL THEN MOVE TO INSERT, ТОГО, ЧТО НАХОДЯТСЯ НА СЛЕДУЮЩЕЙ СТРАНИЦЕ ДЛЯ АКТИВАЦИИ. else .... я проверю ссылку наверняка) –

+1

Javascript можно обойти легко, тогда как проверка на стороне сервера не может. Валидация на стороне клиента имеет свои преимущества, но безопасность не является одним из них. – tommyd456

1

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

использовать этот код моего

<?php 
//Start session 
session_start(); 

//Array to store validation errors 
$errmsg_arr = array(); 

//Validation error flag 
$errflag = false; 

//Input Validations 
if($firstname == '') { 
    $errmsg_arr[] = 'First name missing'; 
    $errflag = true; 
} 
if($lastname == '') { 
    $errmsg_arr[] = 'Last name missing'; 
    $errflag = true; 
} 
if($email == '') { 
    $errmsg_arr[] = 'Email missing'; 
    $errflag = true; 
} 
if($username == '') { 
    $errmsg_arr[] = 'Username ID missing'; 
    $errflag = true; 
} 
if($password == '') { 
    $errmsg_arr[] = 'Password missing'; 
    $errflag = true; 
} 
if($cpassword == '') { 
    $errmsg_arr[] = 'Confirm password missing'; 
    $errflag = true; 
} 
if(strcmp($password, $cpassword) != 0) { 
    $errmsg_arr[] = 'Passwords do not match'; 
    $errflag = true; 
} 

//Check for duplicate email 
if($email != '') { 
    $qry = "SELECT * FROM ".$table." WHERE email='$email'"; 
    $result = mysql_query($qry); 
    if($result) { 
     if(mysql_num_rows($result) > 0) { 
      $errmsg_arr[] = 'Email have already in Using!'; 
      $errflag = true; 
     } 
     @mysql_free_result($result); 
    } 
    else { 
     die("Query failed"); 
    } 
} 

//Check for duplicate login ID 
if($login != '') { 
    $qry = "SELECT * FROM ".$table." WHERE login='$login'"; 
    $result = mysql_query($qry); 
    if($result) { 
     if(mysql_num_rows($result) > 0) { 
      $errmsg_arr[] = 'User-Name already in Using!'; 
      $errflag = true; 
     } 
     @mysql_free_result($result); 
    } 
    else { 
     die("Query failed"); 
    } 
} 

//If there are input validations, redirect back to the registration form 
if($errflag) { 
    $_SESSION['ERRMSG_ARR'] = $errmsg_arr; 
    session_write_close(); 
    header("location: register-form.php"); 
    exit(); 
} 

//Create INSERT query 
$qry = "INSERT INTO members(firstname, lastname, email, username, password) VALUES('$firstname','$lastname','$email','$username','$password')"; 
$result = @mysql_query($qry); 

//Check whether the query was successful or not 
if($result) { 
    header("location: register-success.php"); 
    exit(); 
}else { 
    die("Query failed"); 
} 
    ?> 

А также использовать этот код у вас регистрации со страницы

<?php 
//Start Session 
session_start(); 
if(isset($_SESSION['ERRMSG_ARR']) && is_array($_SESSION['ERRMSG_ARR']) && count($_SESSION['ERRMSG_ARR']) >0) { 
    echo '<ul class="err">'; 
    foreach($_SESSION['ERRMSG_ARR'] as $msg) { 
     echo '<li>',$msg,'</li>'; 
    } 
    echo '</ul>'; 
    unset($_SESSION['ERRMSG_ARR']); 
} 
?> 
+1

Ваш сценарий хорош, но ваши коды не сопоставимы с этими кодами вопросов? Надеюсь, ты получишь ответ! – Softbazz

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