2016-05-12 2 views
0

У меня такие ошибки в 4 текстовых полях.
<b/><b>Notice</b>: Undefined variable: fname in <b>C:\xampp\htdocs\webpage\phpmyadmin\db\form.php</b> on line <b>..</b><br />

Я прочитал о подобной проблеме от here, но это не сработало для меня.
Где я совершил ошибку?Неопределенная переменная внутри текстового поля

<?php 
if(isset($_POST['name']) && isset($_POST['password'])&& isset($_POST['fname']) 
&& isset($_POST['lname']) && isset($_POST['email'])){ 
$name = $_POST['name']; 
$pass = $_POST['password']; 
$fname = $_POST['fname']; 
$lname = $_POST['lname']; 
$email = $_POST['email']; 
$passhash = md5($pass); 
} 
?> 

<form action="#" method="POST"> 
Name:<br> 
<input type="text" name="name" value="<?php echo $name ?>"><br> 
Password:<br> 
<input type="password" name="password"><br> 
Firstname:<br> 
<input type="text" name="fname" value="<?php echo $fname ?>"> <br> 
Lastname:<br> 
<input type="text" name="lname" value="<?php echo $lname ?>"> <br> 
Email:<br> 
<input type="text" name="email" value="<?php echo $email ?>"><br> 
<input type="submit" value="Submit"> 
</form> 
+0

Вы действительно не должны использовать [хэши паролей MD5] (http://security.stackexchange.com/questions/19906/is-md5-considered-insecure), и вам действительно нужно использовать встроенные функции PHP (http://jayblanchard.net/proper_password_hashing_with_PHP.html) для защиты паролей. Убедитесь, что вы [не избегаете паролей] (http://stackoverflow.com/q/36628418/1011527) или используйте какой-либо другой механизм очистки для них перед хэшированием. Выполнение этого * изменяет * пароль и вызывает ненужное дополнительное кодирование. –

ответ

0

Проверить Исеть, а затем повторить, потому что, прежде чем отправлять данные, которые вы не получите все данные:

<form action="#" method="POST"> 
Name:<br> 
<input type="text" name="name" value="<?php if(isset($name)) echo $name; ?>"><br> 
Password:<br> 
<input type="password" name="password"><br> 
Firstname:<br> 
<input type="text" name="fname" value="<?php if(isset($fname)) echo $fname; ?>"> <br> 
Lastname:<br> 
<input type="text" name="lname" value="<?php if(isset($lname)) echo $lname; ?>"> <br> 
Email:<br> 
<input type="text" name="email" value="<?php if(isset($email)) echo $email; ?>"><br> 
<input type="submit" value="Submit"> 
</form> 
0

Использование <?php if(isset($name)) echo $name; ?> вместо <?php echo $name ?> и тот же для всех ..

ИЛИ

вам может использовать $name = isset($_POST['name']) ? $_POST['name']: ""; вместо $name = $_POST['name']; и то же самое для всех ..

0

Инициализировать $name = $pass = $fname = $lname = $email = $passhash ='';

До этой линии 'if(isset($_POST['name']) && isset($_POST['password'])&& isset($_POST['fname'])' ;

Ваш код будет хорошо.

0

У меня возникла проблема с тем, что вы пытаетесь получить доступ к переменной, которая не является декальком. вы можете попробовать ниже код его рабочего штрафа.

<?php 
if(isset($_POST['name']) && isset($_POST['password'])&& isset($_POST['fname']) 
&& isset($_POST['lname']) && isset($_POST['email'])){ 
$name = $_POST['name']; 
$pass = $_POST['password']; 
$fname = $_POST['fname']; 
$lname = $_POST['lname']; 
$email = $_POST['email']; 
$passhash = md5($pass); 
} 
?> 

<form action="#" method="POST"> 
Name:<br> 
<input type="text" name="name" value="<?php echo isset($name)?$name:"" ?>"><br> 
Password:<br> 
<input type="password" name="password"><br> 
Firstname:<br> 
<input type="text" name="fname" value="<?php echo isset($fname)?$fname : "" ?>"> <br> 
Lastname:<br> 
<input type="text" name="lname" value="<?php echo isset($lname)?$lname:"" ?>"> <br> 
Email:<br> 
<input type="text" name="email" value="<?php echo isset($email) ? $email : "" ?>"><br> 
<input type="submit" value="Submit"> 
</form> 

Здесь я проверен с помощью функции isset, если задана переменная, а затем значение печати пустое.

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