2014-04-24 5 views
1

Mon site Web est, dans sa forme la plus basique, un site réseau pour un type spécifique d'individus. Quand un individu s'inscrit, je voudrais créer une page personnalisée (ou au moins l'image/façade d'un) affichant leur profil. Actuellement, j'utilise les paramètres PHP $_GET pour déterminer quel profil afficher lorsqu'un utilisateur navigue vers le script correspondant sur le site.Créer automatiquement une page personnalisée (ou URL) pour un nouvel utilisateur du site - PHP

Visant un meilleur référencement, je voudrais que chaque utilisateur ait son propre lien unique; Par exemple, FaceBook permet à ses utilisateurs d'avoir une URL personnalisée qu'ils peuvent lier. Comment puis-je générer automatiquement une page dans un répertoire pour chaque nouvel utilisateur qui s'enregistre et mettre cette page à jour automatiquement lorsque l'utilisateur met à jour ses informations? Je comprends qu'il peut y avoir un processus potentiel avec .htaccess, en utilisant le nom de l'utilisateur/title/etc pour extraire leurs détails de la base de données mais en l'affichant comme une URL unique.

Est-ce que quelqu'un peut fournir des suggestions ou des exemples d'implémentations de cela? J'apprécie toute aide!

P.S. J'imagine que trier les fichiers en fonction de l'emplacement de l'utilisateur, c'est-à-dire par état, ne devrait pas être si difficile une fois que la fonctionnalité susmentionnée a été triée. Idéalement, j'aimerais une structure de répertoire telle que ../users/state/user_name, où state est l'emplacement de l'utilisateur, et user_name est leur nom unique. Merci encore!

+0

Vous pouvez g énumérez l'URL unique en fonction de la logique que vous souhaitez. Utilisez '.htaccess' pour rediriger l'envoi d'un paramètre qui peut être interrogé dans votre base de données. Vous pouvez trouver des informations sur la façon dont [ici] (http://stackoverflow.com/questions/1980721/htaccess-mod-rewrite-automatically-using-php-or- something_rq = 1). Je resterais loin de la structure de répertoire basée sur l'état - les gens se déplacent et déplacent des répertoires ne semble pas en valoir la peine. Restez avec une structure de répertoire plat pour plus de simplicité. – mseifert

+0

Merci @mseifert pour la réponse. Est-ce similaire à la façon dont StackOverflow le fait avec ses URL de questions? – CFitz

+0

J'ai répondu en format de réponse. Voir ci-dessous. – mseifert

Répondre

1

Il y a peu de travail avec .htaccess d'apache - la majeure partie de la logique est dans le php lui-même. Apache redirige juste chaque requête vers un fichier de script choisi.

Je suppose que vous utilisez apache wid mod_rewrite. Si tel est le cas, vous devez ajouter à un fichier .htaccess:

# check if mod_rewrite is present 
<IfModule mod_rewrite.c> 
    #turns it on 
    RewriteEngine on 

    #if the requested url isn't a file or a dir 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 

    #process index.php, no matter what was in the url 
    RewriteRule^index.php [L] 
</IfModule> 

(noter que .htaccess doit également avoir des autorisations pour écraser des paramètres actuels du apache)

dans le index.php vous pouvez vérifier ce que url a été sequested et traiter les informations

$whatTheUserRequested=$_SERVER['REQUEST_URI']; 
$parameterArray=explode('/', $whatTheUserRequested); 

//check the first param. 
switch($parameterArray[1]) 
{ 
    //if it was something like "thesite.com/main/fsadf/hgfdsgsdf/...." 
    case "main": 
    include "mainPage.php"; 
    //....or do something else 
    break; 

    //if it was something like "thesite.com/login/asdfe/xxxx/...." 
    case "login": 
    include "loginPage.php"; 
    //....or do something else 
    break; 

    default: 
    //here you MUST check if $parameterArray[1] is a username 
    if(check in db if $parameterArray[1] is user) 
    { 
     include "userPage.php"; 
    } 
    else 
    { 
     include "pageNotFound.html" 
    }; 
} 

Vous pouvez également vérifier pour le 3ème ou 4ème paramètre dans les années php inclus, pour traiter « mysite.com/johnny95/edit » est comme url

+0

Est-ce ainsi que la plupart des grands sites le font? Je veux minimiser la quantité de chargement requise pour traiter une URL. De plus, comment puis-je m'assurer que ces liens sont indexés par les moteurs de recherche, c'est-à-dire que cette méthode me permet d'afficher tous les utilisateurs? Idéalement, j'aimerais que l'URL avec le nom de l'utilisateur apparaisse dans les résultats de recherche si quelqu'un la recherche. J'apprécie ton aide! – CFitz

+0

Les moteurs de recherche ne voient que la sortie générée par le script, ils traitent donc "site.com/johnny95" comme une page distincte. Pour les aider à indexer votre site, construisez un plan du site (vous pouvez le générer avec php), robots.txt, ajoutez des balises méta pertinentes et ainsi de suite. – user1328370

+0

Et pour les plus grands sites - probablement dépend du site, mais le principe est le suivant - prendre n'importe quelle URL tapée par l'utilisateur, et en fonction de cela construire une page (éditer: dans certains cas, ils peuvent rediriger un navigateur vers une URL différente) . – user1328370

0

Vous pouvez générer l'URL unique en fonction de la logique que vous souhaitez. Utilisez .htaccess pour rediriger l'envoi d'un paramètre qui peut être interrogé dans votre base de données. Vous pouvez trouver des informations sur comment here. Je resterais loin de la structure de répertoire basée sur l'état - les gens se déplacent et déplacent des répertoires ne semble pas en valoir la peine. Rester avec une structure de répertoire plat pour plus de simplicité

Si vous regardez l'url de ce message: questions/23275736/automatiquement-create-custom-page-ou-url-for-new-site-user-php ils sont y compris "questions "(probablement une table de base de données)," 23275736 "(probablement l'ID de clé de table) et une chaîne conviviale. Je ne sais pas avec certitude, mais je soupçonne qu'ils redirigent en utilisant. Htaccess dans une méthode similaire à ce qui est dans le lien ci-joint.

Vous pouvez également regarder this post's answer pour un autre exemple qui utilise une redirection avec une barre oblique.

+0

Je peux voir comment ils allaient tirer les détails pertinents en utilisant l'ID de clé, mais comment pourraient-ils permettre l'indexation de ces questions sur le moteur de recherche avec le titre de la question inclus? Est-ce qu'ils mettent simplement en cache toutes les questions? Merci! – CFitz

Questions connexes