-3
因此,幾天前我無法創建登錄名,該線程中的一個人建議我使用準備語句來代替。PDO登錄不起作用?
因此,我開始使用PDO查找準備好的語句,並設法使用它創建了註冊腳本。但是,我的登錄每次都會將我重定向到index.php。
file1.php:
<?php
$username=$_POST['username'];
$password=$_POST['password'];
$db = new PDO('mysql:host=localhost;dbname=ismsite', 'db_username', 'db_password'); //this works
$result = $db->prepare("SELECT * FROM users WHERE username=:username AND password=:password");
$result->bindParam(':username', $username);
$result->bindParam(':password', $password);
$result->execute();
$row = $result->fetch(PDO::FETCH_NUM);
if($row > 0) {
session_start();
$_SESSION['userid'] = $row['user_id']; // Initializing Session
$_SESSION['voornaam'] = $row['Voornaam']; // Initializing Session
$_SESSION['achternaam'] = $row['Achternaam'];
$_SESSION['adres'] = $row['adres'];
$_SESSION['email'] = $row['email'];
$_SESSION['username'] = $row['username'];
$_SESSION['password'] = $row['password'];
}
header("location: profile.php");
exit();
?>
在profile.php我有代碼檢查是否與USER_ID的會話存在一個小一點。如果沒有,你會恢復到index.php。這表明我的userid會話沒有被設置,而我正在設置它。無論是選擇插入不工作或我有一個愚蠢的錯誤。
任何人都可以幫忙嗎?
因爲你在那個條件塊啓動會話它的失敗。 –
Okey我已經修復了我自己。我必須將FETCH_NUM更改爲FETCH_ASSOC – Ellisan
首先刪除重定向,var_dump返回'$ row'中的內容並從那裏開始工作。我會建議'if($ row)',因爲如果成功(和'FETCH_NUM'返回一個索引數組 - 從你如何使用'$ row'之後它將會是一個數組,我想你想要'FETCH_ASSOC'作爲你的獲取模式。 – MatsLindh