2013-05-29 2 views
-1

Я пробовал это на трех разных операционных системах. Я использую XAMPP, и со всеми 3 операционными системами (Mac, Windows, Linux) у меня такая же проблема в той же сети.Метод POST не работает в нескольких операционных системах

Форма действия метод register.php, а форма он сам index.html.

Ошибка:

Notice: Undefined index: username in D:\xampp\htdocs\register.php on line 2 

Notice: Undefined index: password in D:\xampp\htdocs\register.php on line 3 

Notice: Undefined index: email in D:\xampp\htdocs\register.php on line 4 

Notice: Undefined index: fname in D:\xampp\htdocs\register.php on line 5 

Notice: Undefined index: lname in D:\xampp\htdocs\register.php on line 6 

index.html Код:

<html> 
<h1> Register for Home Server </h1> 
<br> 
<form method="post" action="register.php"> 
Username: <input type="text" id="username"> 
<br> 
Password: <input type="password" id="password"> 
<br> 
First Name: <input type="text" id="fname"> 
<br> 
Last Name: <input type="text" id="lname"> 
<br> 
Email: <input type="text" id="email"> 
<br> 
<input type="submit" value="Register"> 
</form> 
</html> 

register.php код:

<?php 
    $user = $_POST['username']; 
    $pass = $_POST['password']; 
    $email = $_POST['email']; 
    $fnam = $_POST['fname']; 
    $lnam = $_POST['lname']; 
    $id = 1; 
    $level = 1; 
    $exp = 100; 

    $con = mysqli_connect('localhost','root','','members'); 
    $sql = 'INSERT members(id,username,password,fname,lname,email,level,exp) VALUES          ($id,$user,$pass,$email,$fnam,$lnam,$email,$level,$exp);'; 
    mysqli_query($con,$sql); 
?> 

Там нет ошибки MySQL, размер макс пост 8mb, и я также попытался добавить,

var_dump($_POST); 
die(); 

Я в настоящее время работает Windows 8.

+0

исправить SQL-запрос с добавлением " или «знаки для вставки строк – Vineet1982

+0

Возможный дубликат [PHP:« Примечание: неопределенная переменная »и« Примечание: неопределенный индекс »] (http: // stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-index) – Jocelyn

ответ

1

вы не name атрибут.

<html> 
<h1> Register for Home Server </h1> 
<br> 
<form method="post" action="register.php"> 
Username: <input type="text" name ='username' id="username"> 
<br> 
Password: <input type="password" name='password' id="password"> 
<br> 
First Name: <input type="text" name='fname' id="fname"> 
<br> 
Last Name: <input type="text" name='lname' id="lname"> 
<br> 
Email: <input type="text" name='email' id="email"> 
<br> 
<input type="submit" value="Register"> 
</form> 
</html> 

Значения атрибутов имени являются те, которые становятся указателями на форме submit.

1

В ваших полях ввода HTML отсутствует атрибут name. Чтобы браузер отправил данные с формой как POST или GET, должен быть установлен атрибут name.

Пример HTML

<input type="password" name="password" id="password"> 

Пример PHP

<?php echo $_POST['password']; ?> 

Все, что вы установили атрибут name к в DOM будет key массива POST, который принимается на PHP боковая сторона.

1

Вы должны дать свои текстовые поля name атрибуты:

<form method="post" action="register.php"> 
Username: <input type="text" id="username" name="username"> 
<br> 
Password: <input type="password" id="password" name="password"> 
<br> 
First Name: <input type="text" id="fname" name="fname"> 
<br> 
Last Name: <input type="text" id="lname" name="lname"> 
<br> 
Email: <input type="text" id="email" name="email"> 
<br> 
<input type="submit" value="Register"> 
</form> 

Кстати, это хорошая идея, чтобы проверить, соответствуют ли значения были отправлены в PHP скрипт (используя, напримерisset($_POST['username'])) прежде чем пытаться использовать эти значения. Также рекомендуется использовать prepared SQL statement для предотвращения SQL injection.

+0

Большое спасибо, я плохо разбираюсь в html, хотя я знаю все языки на стороне веб-сервера, я думал, что id определяет имена: П .. –

-2

Есть две ошибки первого предоставить имена полей имя переменной также:

<input type="text" id="email" name='email'> 

и второе, чтобы изменить SQL ваши, а затем попробовать, как

$sql = "INSERT members(id,username,password,fname,lname,email,level,exp) 
    VALUES ('$id', '$user', '$pass', '$email', '$fnam', '$lnam', '$email', 
    '$level','$exp');"; 
Смежные вопросы