我在使用$ _GET在我的網站上掙扎。我已經設置了登錄頁面,登錄後用戶被重定向到他/她的個人資料。我想創建一個動態url變量。我在登錄頁面設置了一個會話,並在重定向到配置文件「echo $ _SESSION ['username']」後正確回聲。但是,當試圖用$ _GET做同樣的事情時,什麼都不顯示。我已經檢查了大量的教程,甚至當我完全按照所顯示的做時,我從來沒有得到這個工作。這裏是我的代碼:
的login.php
<?php
include ("./Various/header.php");
require './Various/connections.php';
if(isset($_POST['login'])) {
session_start();
//Set Variables
$loginusername = $_POST['userlogin'];
$loginpassword = $_POST['passwordlogin'];
if(!empty($loginusername)&& !empty($loginpassword)){
$sql = mysql_query("SELECT * FROM users WHERE username='$loginusername'");
$checkuser=mysql_num_rows($sql);
if($checkuser == 1) {
$passrow = mysql_fetch_assoc($sql);
$checkpass = $passrow['password'];
$userdb = $passrow['username'];
$iddb = $passrow['id'];
if ($checkpass == $loginpassword)
{
$_SESSION['username'] = $loginusername;
$_SESSION['id'] = $iddb;
header("Location: testprofile.php?username = $loginusername");
exit();
}
else {
echo "Password is incorrect";
}
}
else {
echo "$loginusername doesn't exist";
}
}
else {
echo "Please fill out the fields";
}
}
?>
<div style=" width: 400px; margin: 0px auto 0px auto" class="LoginForm">
<table class= "logintable">
<tr><td width="60%" valign="top">
<h3>MySite</h3>
<h2>Login</h2>
<form action="login.php" method="post">
<input type="text" name="userlogin" size="12" placeholder="Username"/><br/> <br/>
<input type="password" name="passwordlogin" size="12" placeholder="Password"/><br/> <br/>
<input type="submit" name="login" value="Login!"/>
</form>
<div id="forgotpassword">
<a href="#">I forgot my password</a>
</div>
</td>
</tr>
</table>
</div>
在這個例子中,我創建了一個名爲幾乎空白的個人資料頁面的簡單testprofile.php
testprofile.php
<?php
session_start();
echo $_GET['username'];
echo $_GET['id'];
?>
這沒有給我什麼。但是,如果您這樣做:
<?php
session_start();
echo $_SESSION['username'];
echo $_SESSION['id'];
?>
您可以看到登錄用戶的用戶名和ID。我試着將login_php中的session_start()移到頂部(這就是它的開頭),但它根本沒有幫助。 我可以設置整個用戶個人資料頁面,但用戶無法查看其他用戶的個人資料。這就是爲什麼我現在正在爲此苦苦掙扎。 我希望任何人都可以告訴我,這是一個非常微不足道的錯誤,我無緣無故地摘了我的頭髮。
問候
大衛
好吧,我會貼在我的代碼,因爲這是越來越荒謬。我沒有得到這個$ _GET函數,它似乎在其他地方工作,但這個配置文件頁面。
的login.php
<?php
include ("./Various/header.php");
require './Various/connections.php';
if(isset($_POST['login'])) {
session_start();
//Set Variables
$loginusername = $_POST['userlogin'];
$loginpassword = $_POST['passwordlogin'];
if(!empty($loginusername)&& !empty($loginpassword)){
$sql = mysql_query("SELECT * FROM users WHERE username='$loginusername'");
$checkuser=mysql_num_rows($sql);
if($checkuser == 1) {
$passrow = mysql_fetch_assoc($sql);
$checkpass = $passrow['password'];
$userdb = $passrow['username'];
$iddb = $passrow['id'];
if ($checkpass == $loginpassword)
{
$_SESSION['username'] = $loginusername;
$_SESSION['id'] = $iddb;
header("Location: profile.php");
exit();
}
else {
echo "Password is incorrect";
}
}
else {
echo "$loginusername doesn't exist";
}
}
else {
echo "Please fill out the fields";
}
}
?>
<div style=" width: 400px; margin: 0px auto 0px auto" class="LoginForm">
<table class= "logintable">
<tr><td width="60%" valign="top">
<h3>MySite</h3>
<h2>Login</h2>
<form action="login.php" method="post">
<input type="text" name="userlogin" size="12" placeholder="Username"/><br/> <br/>
<input type="password" name="passwordlogin" size="12" placeholder="Password"/><br/> <br/>
<input type="submit" name="login" value="Login!"/>
</form>
<div id="forgotpassword">
<a href="#">I forgot my password</a>
</div>
</td>
</tr>
</table>
</div>
登錄相同較早(減去?用戶=部分)。從這我重定向到個人資料頁面。
profile.php
<?php
session_start();
include './Various/header.php';
require './Various/connections.php';
$username = $_SESSION['username'];
$sql = mysql_query("SELECT * FROM users WHERE username='$username'");
$getdata = mysql_fetch_array($sql);
$firstname = $getdata['firstname'];
$lastname = $getdata['lastname'];
$blogname = $getdata['blogname'];
$shoutout = $getdata['aboutuser'];
$country = $getdata['country'];
$profilepic = $getdata['profilephoto'];
$year = $getdata['yearofbirth'];
$current = date('Y');
$age = $current - $year;
?>
<div class="profilepage">
<div class="userdetails">
<table>
<tr>
<td>
<img src="<?php echo $profilepic ?>"/>
</td>
<td>
<div id="userinfo">
<h3><?php echo $username?>'s Blog!</h3>
</div>
<a>Name: <?php echo $firstname?> <?php echo $lastname?> </a>
<a>Age: <?php echo $age ?> </a>
<a>Country: <?php echo $country ?> </a>
<a id="shoutout"><?php echo $shoutout ?></a>
</td>
</tr>
</table>
<div id="blogname">
<a><?php echo $blogname ?></a>
</div>
</div>
<div class="userposts">
<?php
//Displaying user's posts
//connect to DB
$sql = "SELECT postid, postedby, title, category, LEFT(content, 100) AS content FROM posts WHERE postedby = '$username'
ORDER BY postid DESC";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
$postid = $row['postid'];
$postedby = $row['postedby'];
$title = $row['title'];
$content = $row['content'];
$category = $row['category'];
?>
<div id="posts">
<a><?php echo $postedby?></a>
<h2><?php echo $title?></h2>
<a><?php echo $category?></a><br>
<a><?php echo $content . "<a href='post.php?id=$postid'>Read more...</a>"?></a>
<br>
<hr />
<br>
<?php
}
?>
</div>
</div>
</div>
在這裏我得到我想要的數據和它漂亮的一面展示。我似乎無法做的是讓其他用戶查看此用戶的個人資料。我知道我需要製作一個動態的url變量。一個教程,我跟着的指示我做到以下幾點:
if(!isset($_GET['id'])) {
header("Location: ?user=".getID($_SESSION['id']));
}
的getID函數如下所示:
function getID($id) {
$dataquery = mysql_query("SELECT id FROM users WHERE id='$id'");
while ($row=mysql_fetch_assoc($dataquery)){
return $row['id'];
}
}
當我這樣做,如果語句
if(!isset($_GET['id']))
所有我得到的是Firefox中的錯誤:
頁面沒有正確重定向 Firefox檢測到服務器以永不完整的方式重定向該地址的請求。
而這一次在Chrome:
此網頁有重定向循環
我在我無計可施,並一直在尋找,因爲週二的解決方案。我不能像這樣繼續我的項目。 我真誠地要求你的幫助。我知道可能有很多要求(相當大一部分代碼,呃),但我真的不知道該怎麼做。
正如我前面提到的,我想允許用戶查看其他用戶的配置文件。 我從來沒有得到$ _GET正常工作,所以我認爲這是原因。現在我只是不知道。
很抱歉發了一篇很長的文章,希望有人能幫助我。我非常感謝你的幫助。
問候
大衛
URL的外觀如何? – david8
在這裏發表var_dump($ _ SERVER ['REQUEST_URI']); – david8
嘗試放入:'ini_set(「display_errors」,「On」); error_reporting(E_ALL);'在testprofile.php的頂部,只是爲了檢查它是否是錯誤。還要確保你指定了?username = ...&id = ...,因爲你同時回顯'$ _GET ['username']'和'$ _GET ['password']',這意味着它們都必須被設置,否則會出錯。 – SysVoid