Facebook Like Custom Profile URL PHP

后端 未结 1 1958
盖世英雄少女心
盖世英雄少女心 2020-12-08 18:02

Making a website and I want to put in a custom profile URL for all the users on my site (like facebook).

On my website already, people have a page like http://siten

相关标签:
1条回答
  • 2020-12-08 18:25

    No folders, no index.php

    Just take a look at this tutorial.

    Edit : This is just a summary.

    0) Context

    I'll assume that we want the following URLs :

    http://example.com/profile/userid (get a profile by the ID)
    http://example.com/profile/username (get a profile by the username)
    http://example.com/myprofile (get the profile of the currently logged-in user)

    1) .htaccess

    Create a .htaccess file in the root folder or update the existing one :

    Options +FollowSymLinks
    # Turn on the RewriteEngine
    RewriteEngine On
    #  Rules
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php
    

    What does that do ?

    If the request is for a real directory or file (one that exists on the server), index.php isn't served, else every url is redirected to index.php.

    2) index.php

    Now, we want to know what action to trigger, so we need to read the URL :

    In index.php :

    // index.php    
    
    // This is necessary when index.php is not in the root folder, but in some subfolder...
    // We compare $requestURL and $scriptName to remove the inappropriate values
    $requestURI = explode(‘/’, $_SERVER[‘REQUEST_URI’]);
    $scriptName = explode(‘/’,$_SERVER[‘SCRIPT_NAME’]);
    
    for ($i= 0; $i < sizeof($scriptName); $i++)
    {
        if ($requestURI[$i] == $scriptName[$i])
        {
            unset($requestURI[$i]);
        }
    }
    
    $command = array_values($requestURI);
    

    With the url http://example.com/profile/19837, $command would contain :

    $command = array(
        [0] => 'profile',
        [1] => 19837,
        [2] => ,
    )
    

    Now, we have to dispatch the URLs. We add this in the index.php :

    // index.php
    
    require_once("profile.php"); // We need this file
    switch($command[0])
    {
        case ‘profile’ :
            // We run the profile function from the profile.php file.
            profile($command([1]);
            break;
        case ‘myprofile’ :
            // We run the myProfile function from the profile.php file.
            myProfile();
            break;
        default:
            // Wrong page ! You could also redirect to your custom 404 page.
            echo "404 Error : wrong page.";
            break;
    }
    

    2) profile.php

    Now in the profile.php file, we should have something like this :

    // profile.php
    
    function profile($chars)
    {
        // We check if $chars is an Integer (ie. an ID) or a String (ie. a potential username)
    
        if (is_int($chars)) {
            $id = $chars;
            // Do the SQL to get the $user from his ID
            // ........
        } else {
            $username = mysqli_real_escape_string($char);
            // Do the SQL to get the $user from his username
            // ...........
        }
    
        // Render your view with the $user variable
        // .........
    }
    
    function myProfile()
    {
        // Get the currently logged-in user ID from the session :
        $id = ....
    
        // Run the above function :
        profile($id);
    }
    

    To conclude

    I wish I was clear enough. I know this code is not pretty, and not in an OOP style, but it could give some ideas...

    0 讨论(0)
自定义标题
段落格式
字体
字号
代码语言
提交回复
热议问题