這是我的login.phpPDO - 查詢上WAMP但Web服務器上的工作
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
include("config.php");
include("userClass.php");
$userClass = new userClass();
$errorMsgReg = '';
$errorMsgLogin = '';
/* Login Form */
if (!empty($_POST['loginSubmit'])) {
$usernameEmail = $_POST['usernameEmail'];
$password = $_POST['password'];
if (strlen(trim($usernameEmail)) > 1 && strlen(trim($password)) > 1) {
$id = $userClass->userLogin($usernameEmail, $password);
if(!$id)
{
echo "Not entering in userClass->Login";
}
if ($id) {
// Not entering here
$url = BASE_URL . 'welcome.php';
header("Location: $url");
} else {
echo "$id";
$errorMsgLogin = "Please check login details.";
}
}
}
這是我userClass.php
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
class userClass
{
/* User Login */
public function userLogin($usernameEmail,$password)
{
try{
$db = getDB();
$hash_password= hash('sha256', $password); //Password encryption
$stmt = $db->prepare("SELECT id FROM doctorlocation WHERE (doctorusername=:usernameEmail or doctoremail=:usernameEmail) AND doctorpassword=:hash_password");
$stmt->bindParam("usernameEmail", $usernameEmail,PDO::PARAM_STR) ;
$stmt->bindParam("hash_password", $hash_password,PDO::PARAM_STR) ;
$stmt->execute();
$count=$stmt->rowCount();
$data=$stmt->fetch(PDO::FETCH_OBJ);
$db = null;
if($count)
{
$_SESSION['usernameEmail']=$usernameEmail;
$_SESSION['id']=$data->id; // Storing user session value
return true;
}
else
{
return false;
}
}
catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
}
我的連接文件,config.php文件
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
session_start();
/* DATABASE CONFIGURATION */
define('DB_SERVER', '******');
define('DB_USERNAME', '******');
define('DB_PASSWORD', '******');
define('DB_DATABASE', '*******');
define("BASE_URL", "******");
function getDB()
{
$dbhost=DB_SERVER;
$dbuser=DB_USERNAME;
$dbpass=DB_PASSWORD;
$dbname=DB_DATABASE;
try {
$dbConnection = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
$dbConnection->exec("set names utf8");
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $dbConnection;
}
catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
}
?>
錯誤似乎在這裏$ id = $ userClass-> userLogin($ usernameEmail,$ password);
它應該是一個小問題,似乎不能包圍我的頭。任何指導都會有所幫助。
謝謝
您不能使用相同的命名佔位符 –
@ Fred-ii-實際上您可以使用相同的命名佔位符,您只需使用模擬準備即可。 PDO :: ATTR_EMULATE_PREPARES http://php.net/manual/en/pdo.setattribute.php – bassxzero
@bassxzero你有一點,可能爲什麼它只能在他們的本地系統上工作,而不是在現場服務器上 –