隐藏URL中的ref字符串,但将其传递给脚本

How can I hide ?ref string from users but pass it to php code so it will grab it?

For example, visitor visits this page:

http://mysite.com/?ref=ref+string

In browser URL I want to hide it, so user will see"

http://mysite.com/

But I want to grab content of ref string via this:

$ref = $_GET['ref'];

Is it possible?

No, if you want to use GET variables, they will always be in the url.

However, you can use an alternative, like $_SESSION or $_POST variables.

This is not how the http protocol works with query strings. If you have information that needs to be in the query string that you want to hide or obfuscate from the user, I would recommend a simple encryption to change it. If you're attempting to get rid of this information for aesthetic reasons, you will need to pursue a different method of generating the header or storing the information (session/cookies/etc).

You could try something like this at the top of your PHP script:

session_start();

if (isset($_GET['ref'])) {
    $_SESSION['ref'] = $_GET['ref'];
    header('Location: /');
    exit();
}

You would have to use $_SESSION['ref'] to access the value from then on, however.