【问题标题】:Adding username to profile url将用户名添加到个人资料网址
【发布时间】:2017-07-22 17:14:19
【问题描述】:

已经在互联网上进行了广泛搜索,感觉我越来越近了。 我想通过我的网站将用户名添加到 profile.php 页面。

目前,以下 URL (http://www.example.com/profile.php) 会显示必要的个人资料,但前提是您已登录。要访问其他会员个人资料,我需要知道他们的登录信息。

但是,我希望 profile.php 页面对特定用户是唯一的。例如http://www.example.com/profile.php?user=CoolDude

我已包含以下 PHP 以获取带有用户名的所需 URL,但出现错误“ERR_TOO_MANY_REDIRECTS”而不是配置文件

<?php

session_start();
    require_once "includes/define.php";
    $user_row = null;

$user = (isset($_GET['username'])) ? $_GET['username'] : $_SESSION['username'];
$query = "SELECT * FROM users WHERE username = $user";

$res = mysqli_real_escape_string("SELECT * FROM users WHERE user=".$_SESSION['username']);
$userRow = mysqli_fetch_array($res);
$user = $_GET['username'];

header("Location:athleteprofile.php?user=" . $_SESSION['username']);


if (!isset($_SESSION['username'] )) {
    header("Location: login.php"); //login in AdminLogin.php
}

?>

不确定重定向哪里出错了?

【问题讨论】:

  • 这个脚本总是重定向到“Location:ahtleteprofile.php?user="。你永远不会到达 if 语句。
  • if else 能解决吗?
  • 用户名在这里是一个字符串,所以你的查询失败了。但是,我看不到您在哪里查询。您没有为此使用正确的功能。
  • 这不是我的查询吗? $query = "SELECT * FROM users WHERE username = $user";
  • 不,这是无效的mysqli_real_escape_string("SELECT *。而且这永远不会被查询$query = "SELECT * FROM users WHERE username = $user";

标签: php mysql session url get


【解决方案1】:

试试这个(脚本应该在 playerprofile.php 中):

<?php
session_start();
require_once "includes/define.php";
$user_row = null;

if (!ISSET($_SESSION['username'] )) {
    header("Location: login.php"); //login in AdminLogin.php
}
if (EMPTY($_GET['user'])) {
    header("Location:athleteprofile.php?user=" . $_SESSION['username']);    
}

$user = $_GET['username'];
$query = "SELECT * FROM users WHERE username = '".$user."'";
$res = mysqli_query($conn, $query);
$userRow = mysqli_fetch_array($res);
$username = $userRow['user'];
?>

无论是否设置了 $_GET['username'],您的脚本都会始终重定向。

请清理您的 $_GET['username'] 甚至更好,使用准备好的语句

【讨论】:

  • 这似乎是赢家。但是,您在 $_SESSION 周围使用大括号进行的更新会为我返回错误。删除它们有帮助。
  • 大声笑,对不起!我整个星期都在寻找正确的答案。很高兴看到有人可以提供帮助!
  • 另外,我花了一点时间来编辑,因为我注意到您根本没有执行您的查询。
  • require_once "includes/define.php"; 不负责我的数据库连接吗?为什么我们需要$res
【解决方案2】:

很简单,你必须使用Ifcondition:

<?php

    session_start();
    require_once "includes/define.php";
    $user_row = null;

$user = (isset($_GET['username'])) ? $_GET['username'] : $_SESSION['username'];
$query = "SELECT * FROM users WHERE username = $user";

$res = mysqli_real_escape_string("SELECT * FROM users WHERE user=".$_SESSION['username']);
$userRow = mysqli_fetch_array($res);
$user = $_GET['username'];

if(isset($_SESSION['username'])){

header("Location:athleteprofile.php?user=". $_SESSION['username']);
}
elseif(isset($_GET['username']) && $_GET['username'] !== null) {
    header("Location: login.php"); //login in AdminLogin.php
}

?>

【讨论】:

    猜你喜欢
    • 2013-04-29
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多