2016-05-12 84 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

檢查isset,然後呼應,因爲發佈數據之前,你不會得到的所有數據:

<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 ?>和同爲好..

OR

你可以使用$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

我得到了你的問題,你試圖訪問變量,這是不decalre。你可以嘗試下面的代碼它的工作正常。

<?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函數,如果設置了變量,那麼打印值則爲空白。