2015-06-25 21 views
1

我查看了你的頁面並修正了我對用戶名和密碼的未定義索引,但現在我得到了未定義的變量。我有更多的代碼,但爲了測試而決定簡化它,只是迴應它,看看是否有任何變化,而不是。POST上的未定義變量

<?php 
if (isset($_POST['submit'])){ 
$uname = isset($_POST['username']);    
$pass = isset($_POST['password']); 
} 

echo $uname; 
echo $password; 
?> 

我得到這樣的:

說明:未定義變量:用C UNAME:\ XAMPP \ htdocs中\ 8 \ login.php中第7行

說明:未定義變量:在傳C:\ xampp \ htdocs \ 8 \ login.php on line 8

我真的不明白這裏有什麼問題。如果需要,這裏是我的表單頁面的HTML。

<form id="login" method="post" action="login.php"> 
<div id="loginon"> 
<label for="username" style="color:#0F0; font-family:Arial, Helvetica, sans-serif;" >Username: &nbsp; &nbsp;</label> 
<input type="text" id="username" name="username" /> 
<br /> 
<br /> 

<label for="password" style="color:#0F0; size:auto; font-family:Arial, Helvetica, sans-serif;">Password: &nbsp; &nbsp;</label> 
<input type="password" id="password" name="password" /> 
<br /> 
<br /> 
<input type="image" src="http://www.clker.com/cliparts/2/G/4/v/K/E/submit-hi.png" border="0" width="180px" height="80px" alt="Submit" /> 
</div> 
</form> 
</body> 

編輯: 另一個問題爲連接到這個,所以我想我允許它張貼在這裏。

if($username == "pikachu" || "cloud") { 
    $ucheck = "dobar"; 
} else { 
    $ucheck = "los"; 
} 

if ($password == "123123" || "132132") { 
    $pcheck = "topar"; 
} else { 
    $pcheck = "losh"; 
} 

if($ucheck == "dobar" && $pcheck == "topar") { 
    echo "Najjaci si!"; 

} 

elseif ($ucheck == "dobar" && $pcheck == "losh") { 
    echo "Wimp."; 
} elseif ($ucheck == "los" && $pcheck == "topar") { 
    echo "Fish."; 
} 

問題是它總是迴應出「Najjaci si」,不管我在前面的表單中輸入什麼。有任何想法嗎?

+0

聲明'$ uname = $ pass =「」;'在條件之前 – Prafulla

+0

沒有名爲'submit'的'input'。 –

+0

如果我這樣做,我會得到「注意:未定義的變量:密碼在第9行C:\ xampp \ htdocs \ 8 \ login.php」 – victiMusPrime

回答

2

由於在邏輯(If)中有變量decleration,因此可能根本沒有設置變量。 試試這個

<?php 
if (isset($_POST['submit'])){ 
    $uname = isset($_POST['username']);    
    $pass = isset($_POST['password']); 

    echo $uname; 
    echo $pass; 
} else { 
    echo "No submit detected!"; 
} 


?> 

它還doesen't樣子,如果你有一個名爲實際元素提交。 嘗試添加此:

<input type="submit" name="submit" value="Send my form" /> 

現在,你的表格包含一個名爲「提交」元素的表單提交時將被髮送作爲之後的參數。

我自己,有需要的框架,喜歡做這樣的:

$username = (isset($_POST["username"]) && $_POST["username"] != "" ? $_POST["username"] : false); 
$password = (isset($_POST["password"]) && $_POST["password"] != "" ? $_POST["password"] : false); 

if(!$username === false && !$password === false) 
{ 
    echo $username . " <br /> " . $password; 
} else { 
    echo "No! :) "; 
} 
+0

它回聲「沒有檢測到提交!」 – victiMusPrime

+0

因爲您需要將提交按鈕添加到您的html表單。看看我的答案。 –

+0

Oooooh,所以這是提交按鈕導致了整個問題? 謝謝,我已經把它全部整理出來了。 :) – victiMusPrime

1

isset將檢查該變量是setnot01傳遞值。所以,在這裏,你需要做的

$uname = isset($_POST['username']) ? $_POST['username'] : '';    
$pass = isset($_POST['password']) ? $_POST['password'] : ''; 

注意:未定義的變量:通過在C:\ XAMPP \ htdocs中\ 8 \ 8行

它的login.php因爲你是呼應$password代替$pass

編輯

做得一樣

$uname = ''; 
$pass = ''; 

if (isset($_POST['submit'])){ 
$uname = isset($_POST['username']);    
$pass = isset($_POST['password']); 
} 

echo $uname; 
echo $pass; 
+0

嘗試修復後仍然收到相同的錯誤。任何其他線索? – victiMusPrime

+0

首先檢查是否在'if'條件內 –

+1

檢查我更新的答案 –

0

試試這個

在形式

<form id="login" method="post" action="login.php"> 
    <div id="loginon"> 
     <label for="username" style="color:#0F0; font-family:Arial, Helvetica, sans-serif;" >Username: &nbsp; &nbsp;</label> 
     <input type="text" id="username" name="username" /> 
     <br /> 
     <br /> 

     <label for="password" style="color:#0F0; size:auto; font-family:Arial, Helvetica, sans-serif;">Password: &nbsp; &nbsp;</label> 
     <input type="password" id="password" name="password" /> 
     <br /> 
     <br /> 
     <input type="submit" name="submit"/> 
    </div> 
</form> 
</body> 

在login.php中

<?php 
    if (isset($_POST['submit'])) 
    { 
     $uname = $_POST['username']; 
     $pass = $_POST['password']; 
    } 

    echo $uname; 
    echo $pass; 
?>