【问题标题】:Username to url redirect [closed]用户名到 url 重定向[关闭]
【发布时间】:2015-01-27 12:33:08
【问题描述】:

我有一个基本系统安装了一个应该读取用户名和 url 的表,但是当涉及到 PHP 时,我是一个完整的菜鸟,如果有人可以帮助我,那么当用户名自动输入时,这就是我得到的向他们重定向与该帐户关联的 url,谢谢。

 <?php 
$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password="root"; // Mysql password 
$db_name="test"; // Database name 
$tbl_name="redirect"; // Table name 

// Connect to server and select databse. 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

// username and password sent from form 
$myusername=$_POST['myusername']; 

// To protect MySQL injection (more detail about MySQL injection) 
$myusername = stripslashes($myusername); 

$myusername = mysql_real_escape_string($myusername); 
$sql="SELECT * FROM $tbl_name WHERE username='$myusername'"; 
$result=mysql_query($sql); 

// Mysql_num_row is counting table row 
$count=mysql_num_rows($result); 
// If result matched $myusername and $mypassword, table row must be 1 row 
if($count==1){ 
// Register $myusername, $mypassword and redirect to file"login_success.php" 
$_SESSION['username'] = $myusername;  
$result = mysql_query("SELECT redirect FROM members"); 

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
   header("Location: " . $row['redirect']); 
} 
exit(); 
} 
else { 
echo "Wrong Username or Password"; 
} 
?> 

编辑: 快速更新基本上这有一个文本输入框,当填写正确的密码短语时,它会将您重定向到与名称一起保存在数据库中的外部 url。我不知道如何获取它,以便重定向从文本框中正确发生,如果有人有关于这个 id 的教程喜欢它

【问题讨论】:

  • 你是用2桌还是1桌?
  • 1 一个只有用户名和重定向的表
  • 基本上我有 1 个域,我希望他们输入代码并重定向到子域,但会有大量列表
  • 重要提示:切勿使用 mysql_* 函数。他们是deprecated。请改用mysqliPDO。请参阅this 问题。
  • 我很难理解您为什么要实施一项服务来验证用户对公共资源的访问权限。

标签: php mysql redirect server-side


【解决方案1】:
if(isset($_SESSION['username'])){
    header("location: http://yoururl/" .$_SESSION['username']);
}

【讨论】:

  • 那很好,如果我想重定向到主站点我想重定向到与用户名关联的数据库内的链接
【解决方案2】:
 <?php
    if($_POST){

        $host="localhost"; // Host name 
        $username="root"; // Mysql username 
        $password="root"; // Mysql password 
        $db_name="test"; // Database name 
        $tbl_name="redirect"; // Table name 

        // Connect to server and select databse. 
        $con = mysqli_connect($host, $username, $password, $db_name);

        // username sent from the form 
        $myusername = $_POST['myusername']; 
        // To protect MySQL injection (more detail about MySQL injection) 
        $myusername = stripslashes($myusername); 
        $sql = "SELECT * FROM redirect WHERE username='$myusername' LIMIT 1"; 

        $result = mysqli_query($con, $sql);
        // Mysqli_num_row is counting table row 
        $count = mysqli_num_rows($result);
        // If result matched $myusername, table row must be 1 row 
        if($count === 1){
            $_SESSION['username'] = $myusername; 
            $row = mysqli_fetch_array($result, MYSQLI_ASSOC);   
            //redirect to file url from database
            header("Location: " . $row['url']); 
        }else{
            echo 'Invalid Username';
        }
    }else{
?>  

    <html lang="en">
    <head>
        <title>My App</title>
    </head>
    <body>
        <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
            <input type="text" name="myusername"/>
            <input type="submit" value="submit"/>
        </form>
    </body>
    </html>
<?php } ?>  

这应该可以解决...

【讨论】:

  • id |用户名 |网址 |
  • 很抱歉,您认为您可以为此添加 html 输入格式吗?我认为这会起作用,我只是不确定如何测试它,因为我说我是 php 的菜鸟
  • 好吧,我假设你的 php 页面的名称叫做 index.php
  • 已弃用:mysql_real_escape_string():mysql 扩展已弃用,将来将被删除:在第 18 行的 C:\wamp\www\Index\redirect.php 中使用 mysqli 或 PDO 代替跨度>
  • 我知道为什么你必须删除这一行 $myusername = mysql_real_escape_string($myusername);
【解决方案3】:

用你的替换它。

$result = mysql_query("SELECT redirect FROM members where username = '.$myusername.'");

【讨论】:

  • 快速更新基本上这有一个文本输入框,当填写正确的密码短语时,它会将您重定向到与名称一起保存在数据库中的外部 url。我不知道如何获取它,以便重定向从文本框中正确发生,如果有人有关于这个 id 的教程喜欢它
猜你喜欢
  • 2021-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-12
  • 2013-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多