profile.php?id=4 -> site.com/username

Status
Niet open voor verdere reacties.

Gilliano

Gebruiker
Lid geworden
28 jun 2008
Berichten
60
Hoi iedereen,

Ik heb een klein forumpje gemaakt met user accounts. Iedere gebruiker heeft zijn eigen profiel.

Hoe kan ik inplaats van profile.php?id=4 ervoor zorgen dat de url er uitziet als site.com/gebruiker ?

Ik heb geen idee hoe dit zou moeten...


Bedankt :]

Edit: Nog een voorbeeld:

Op dit forum: member.php?u=115716
Op myspace: myspace.com/tom
 
Laatst bewerkt:
mod_rewrite gebruiken :)
 
mod_rewrite gebruiken :)

Dus htacces moet communiceren met mijn database? Want hoe weet hij dan welke naam bij welke ID hoort?

Heeft u misschien enkele voorbeelden want met googlen krijg ik alleen maar de basis dingen.

Groet,

Gilliano
 
.htaccess hoeft niet te communiceren met je database. Je moet als $_GET variabele niet de user ID, maar de username meegeven. Dan kun je in PHP aan de hand van je username als het nodig is de user ID wel weer uit de database halen.

Met mod_rewrite maak je er alleen een mooie url van.
 
.htaccess hoeft niet te communiceren met je database. Je moet als $_GET variabele niet de user ID, maar de username meegeven. Dan kun je in PHP aan de hand van je username als het nodig is de user ID wel weer uit de database halen.

Met mod_rewrite maak je er alleen een mooie url van.

Na zoeken op internet ben ik er nog steeds niet uit.

Ik heb mod_rewrite aangezet en dit is mijn php code:

PHP:
<?php
	include("config.php");

$owner_id = $_REQUEST[id];

mysql_connect($SQL_host,$SQL_user,$SQL_pass);
mysql_select_db($SQL_database);

De url ziet er dan zo uit voor de user met het id 1:

profile.php?id=1

in de .htacces staat:
Code:
RewriteRule ^([^/]+)/? 	profile.php?id=$1

Ik weet dat er iets niet klopt maar ik heb geen idee wat :(
 
Als dat al je PHP-code is dan gebeurd er niet veel...

Daarnaast is het beter dat je hem aanroept via $_GET['id']

Probeer anders deze regel eens
Code:
RewriteRule ^([A-Za-z0-9-]+)/?$ profile.php?id=$1
 
Als dat al je PHP-code is dan gebeurd er niet veel...

Daarnaast is het beter dat je hem aanroept via $_GET['id']

Probeer anders deze regel eens
Code:
RewriteRule ^([A-Za-z0-9-]+)/?$ profile.php?id=$1

Bedankt, maar helaas nog geen succes.

Ik zal mijn hele profile.php code even posten:

PHP:
<?php
	include("config.php");

$owner_id = $_GET[id];

mysql_connect($SQL_host,$SQL_user,$SQL_pass);
mysql_select_db($SQL_database);


$sql = mysql_query ("SELECT * FROM members WHERE id = '$owner_id'");
while($r = mysql_fetch_array($sql)) {

$username = $r[username];
$creation = $r[creation];
$interests = $r[interests];
$education = $r[education];
$height = $r[height];
$eyecolor = $r[eyecolor];
$smoking = $r[smoking];
$hobbies = $r[hobbies];
$vacationland = $r[vacationland];
$abouttext = nl2br($r[abouttext]);
$avatar = $r[avatar];

}	
?>
		<div id="pagetitle"><?php echo $username; ?>'s Profile</div>
		<center>
		<?php if ($owner_id == 1) echo "<font color=\"red\">Admin</font><br />"; ?>
<?php echo "<img src=\"$avatar\"; height=\"100\" width=\"100\" alt=\"$username's avatar\" />";?>
</center>

		<br />
<img src="Images/date.png" /> Member since: <?php echo $creation;?> <br /><br />
<img src="Images/interests.png" /> Interests: <?php echo $interests;?><br /><br />
<img src="Images/book_edit.png" /> Education: <?php echo $education;?><br /><br />

<img src="Images/arrow_up.png" /> Height: <?php echo $height;?><br /><br />
<img src="Images/eye.png" /> Eyecolor: <?php echo $eyecolor;?><br /><br />
<!-- nog smoke icoon vinden -->
<img src="Images/book_edit.png" /> Smoking: <?php echo $smoking;?><br /><br />
<img src="Images/sport_football.png" /> Hobbies: <?php echo $hobbies;?><br /><br />
<img src="Images/weather_sun.png" /> Land of vacation: <?php echo $vacationland;?><br /><br />
<center>About
<?php 
echo $username; echo ": <br /><br />";
echo $abouttext;
echo "<br />";
?>
</center>

<?php


echo "<br /><strong><img src=\"Images/threads.png\" /> $username's threads:<br /></strong><p>";

$sql = mysql_query ("SELECT * FROM threads WHERE member_id = '$owner_id'");
while($result = mysql_fetch_array($sql)) {
$thread_id = $result[id];
$title = $result[title];
$replies = $result[replies];
$posted = $result[posted];

if ($replies > 1 ) $replytext = "replies"; else if ($replies == 1 ) $replytext = "reply"; else if ($replies == 0 ){$replytext = "No replies yet."; $replies ="";};
echo "<img src=\"Images/comments.png\" /><a href='msg.php?id=$thread_id'>$title</a> - $replies $replytext <br />";
}
echo "</p>";
echo $footer; ?>

.htaccess ziet er nu zo uit:
Code:
RewriteRule ^([A-Za-z0-9-]+)/?$ profile.php?id=$1

Wat betekent $1 als ik mag vragen (in htaccess) ?

Groeten,

Gilliano
 
Kijk eerst of mod_rewrite wel aan staat. Neem deze pagina's anders even door.
 
Hoe ziet je RewriteRule er nu uit dan?

Het is niet zo dat je met 1 regel alle pagina's kunt doen.

Die voor de login zal er dus zo uitzien:
Code:
RewriteRule ^login/?$ login.php
 
Hoe ziet je RewriteRule er nu uit dan?

Het is niet zo dat je met 1 regel alle pagina's kunt doen.

Die voor de login zal er dus zo uitzien:
Code:
RewriteRule ^login/?$ login.php


Bedankt voor de reactie,

Hij ziet er zo uit
Code:
RewriteRule ^login$ login.php

Ze doen het allebij maar ik gebruik die van jou, die is waarschijnlijk beter.
 
Het verschil is dat die van mij ook login/ pakt.

Waarschijnlijk is het handiger om iets van dit te gebruiken
Code:
RewriteRule ^user/([A-Za-z0-9-]+)/?$ profile.php?id=$1
Zo zul je site.com/user/1 gebruiken om naar profile.php?id=1 te gaan.
 
Het verschil is dat die van mij ook login/ pakt.

Waarschijnlijk is het handiger om iets van dit te gebruiken
Code:
RewriteRule ^user/([A-Za-z0-9-]+)/?$ profile.php?id=$1
Zo zul je site.com/user/1 gebruiken om naar profile.php?id=1 te gaan.

Bedankt! Is het nu ook mogelijk om ervoor te zorgen dat de username hier komt ipv het id?

dus site.com/user/Gilliano

Bedankt

Edit: Ik heb nu wel het probleem dat de CSS niet meer werkt omdat de browser denkt dat die in een andere map zit..
 
Laatst bewerkt:
Daarvoor hoef je de regel niet echt te wijzigen lijkt mij. Wellicht alleen het laatste gedeelte profile.php?name=$1

Je profile.php geeft nu a.d.h.v. een ID iets terug.
Kwestie van zorgen dat hij iets op basis van een gebruikersnaam teruggeeft.

Eigenlijk zou je dan wel er voor moeten zorgen dat in een gebruikersnaam geen spatie mag voorkomen omdat anders de URL een beetje verlept er uit gaat zien en sommige browser er ook moeite mee kunnen krijgen.
 
Voor dat CSS probleem moet je (of kun je) absolute urls gebruiken. Dan heb je dat probleem niet.

Ik zat zelf laatst met hetzelfde probleem.
 
Daarvoor hoef je de regel niet echt te wijzigen lijkt mij. Wellicht alleen het laatste gedeelte profile.php?name=$1

Je profile.php geeft nu a.d.h.v. een ID iets terug.
Kwestie van zorgen dat hij iets op basis van een gebruikersnaam teruggeeft.

Eigenlijk zou je dan wel er voor moeten zorgen dat in een gebruikersnaam geen spatie mag voorkomen omdat anders de URL een beetje verlept er uit gaat zien en sommige browser er ook moeite mee kunnen krijgen.


Bedankt het werkt!!!


Ik heb wel user/ weggehaald omdat alle links nu verkeert waren, zoals CSS en images enzo..

.htaccess ziet er nu zo uit:
Code:
RewriteEngine on
RewriteRule ^([A-Za-z0-9-]+)/?$ profile.php?name=$1

bovenste gedeelte van PHP iets geweizigd:

PHP:
<?php
	include("config.php");

// out of use for now 
// $owner_id = $_GET[id];

$owner_name = $_GET[name];
	
mysql_connect($SQL_host,$SQL_user,$SQL_pass);
mysql_select_db($SQL_database);

$sql = mysql_query ("SELECT * FROM members WHERE username = '$owner_name'");
while($k = mysql_fetch_array($sql)) {
	$owner_id = $k[id];
}


Hartelijk bedankt ^_^
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan