PHP/MySQL新手問題。PHP/MySQL數據庫問題
我有一個數據庫,我已經導入到我的本地phpmyadmin。不過,似乎我無法從我的一個PHP應用程序訪問它。連接字符串似乎是正確的,當我嘗試驗證用戶憑據來訪問數據庫信息時,沒有問題。
然而,驗證每個人都知道我什麼時候放入假憑證。它仍然不會從數據庫中提取任何其他信息。
例如,一旦用戶登錄,他們應該看到類似「Hello hello」這樣的事情。在這一點上,我看到沒有用戶名的「你好」。任何想法,我可能會錯過?
PHP/MySQL新手問題。PHP/MySQL數據庫問題
我有一個數據庫,我已經導入到我的本地phpmyadmin。不過,似乎我無法從我的一個PHP應用程序訪問它。連接字符串似乎是正確的,當我嘗試驗證用戶憑據來訪問數據庫信息時,沒有問題。
然而,驗證每個人都知道我什麼時候放入假憑證。它仍然不會從數據庫中提取任何其他信息。
例如,一旦用戶登錄,他們應該看到類似「Hello hello」這樣的事情。在這一點上,我看到沒有用戶名的「你好」。任何想法,我可能會錯過?
好的抱歉,所有來回的傢伙。這是問題。我有一個PHP應用程序和MySQL數據庫連接(或至少我希望如此...)。我的頁面的標題中有一個表單供用戶登錄。我可以登錄,但我似乎無法從數據庫中提取任何信息。如果我嘗試使用僞造證書登錄,我會收到「不正確的登錄」消息。但是,當我登錄時,它似乎無法從數據庫以外的任何其他憑據。
確定這裏是代碼...
數據庫連接:
<?php
session_start();
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_test = "localhost";
$database_test = "girlpower";
$username_test = "root";
$password_test = "password";
$test = mysql_pconnect($hostname_test, $username_test, $password_test) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($database_test, $test);
?>
這裏的登入碼:
<?php
require_once("includes/db.php");
$userEmail = trim($_POST['userEmail']);
$password = trim($_POST['password']);
$userlogin = trim($_POST['userlogin']);
//print_r($_POST);
if ($userlogin != "" && $userEmail != "" && password != "" )
{
$sql = sprintf("Select * from girlpower where email = '%s' and pwd = '%s'", $userEmail, $password);
//echo $sql;
$res = mysql_query($sql);
if(mysql_num_rows($res) == 0)
{
//TODO:
//redirect..
header("Location: " . $_SERVER['HTTP_REFERER'] . "?fail=1");
}
else
{
$row = mysql_fetch_assoc($res);
$_SESSION['recordId'] = $row['recordId'];
$_SESSION['firstName'] = $row['firstName'];
//echo "success...";
header("Location: " . $_SERVER['HTTP_REFERER']);
//print_r($_SERVER);
}
//print($_SESSION);
}
else
{
header("Location: " . $_SERVER['HTTP_REFERER'] . "?fail=1");
}
這裏就是頭部代碼(這是哪裏形式生活):
<?php
$fail = false;
if($_GET['fail'] != "")
{
$fail = true;
}
if($_SESSION['recordId'] != "")
{
//get the 1st name
$firstName = $_SESSION['firstName'];
}
?>
<div id="header">
< SHOULD BE LINK "index.php"></a>
<div id="ulogin">
<fieldset id="userlogin">
<?php if($firstName == ""){ ?>
<form name="loginForm" action="dologin.php" method="post" >
<label for="logemail">Members Login: Email</label> <input type="text"
name="userEmail" id="logemail" size="15" />
<label for="logpwd">Password</label> <input type="password" name="password"
id="logpwd" size="15" />
<input type="submit" name="userlogin" id="login" value="Login" />
<?php if ($fail == true) {?>
<span class="error">Incorrect Login</span>
<?php }?>
</form>
</fieldset>
<?php
}
else{
?>
<div id="welcome">Welcome <?= htmlentities($firstName) ?> | <SHOULD BE LINK ="seemsgs.php?receiver_id="<?= $_SESSION["recordId"]?> > See Messages</> |<SHOULD BE LINK ="member.php">Update Profile</> | <SHOULD BE LINK ="dologout.php">Logout</a> </div><?php }?>
</div>
讓我知道這是否可讀。在之前沒有在OS上發佈代碼。 – queryne 2010-03-28 20:06:52
這很好,但你應該編輯並將它添加到你的問題中,而不是在這裏發佈(這是頁面的'答案'部分) – 2010-03-28 20:10:49
我注意到你正在使用root用戶(儘管我不確定這是否僅僅用於發佈目的而添加)。根據你使用的託管環境,這可能會也可能不是問題 - 一些共享主機迫使您爲MySQL中的數據庫分配用戶。
從你的查詢應該執行的東西的外觀和至少返回一些行。在結果數組上使用您嘗試過的print_r?如果是這樣,你能發佈輸出嗎?
如果您成功從數據庫中獲取結果,我沒有看到您的發佈代碼中的任何地方有條件迴應成功消息。您可能需要根據您分配的$ _SESSION超全局鍵(recordID和firstName)檢查isset(),如果true,則回顯出成功消息(如果尚未這樣做)。
只是一個想法 - 我注意到你正在使用sprintf格式化你的查詢 - 它可能有點太強大,你試圖完成,但使用PDO來獲取參數化的SQL查詢是一個不錯的方法在可用的情況下完成這項工作。 Introduction to PHP 5 PDO
你缺少的一件事是在你的問題中發佈有問題的代碼。通過查看代碼,所有人都可以在同一頁面上看到自己在哪裏以及如何解決問題。 – 2010-03-28 18:47:03
是的,請顯示一些代碼。 – 2010-03-28 18:49:38
'試圖發佈代碼,但操作系統不允許它..爲什麼呢? – queryne 2010-03-28 19:14:01