webForumDet fria alternativet

Lite problem med länkning när man är inloggad:(

PHP

4 svar · 618 visningar · startad av Mycodez

Medlem sedan feb. 2010445 inlägg
Frågan#1

Hej!

Jag har utvecklat en sida där man kan logga in och träffa vänner och så. men jag har hittat ett problem.
När man loggar in på sidan och så kommer man till sin profil, men sen kan man klicka för sig i en menyrad där man sen kan söka på medlemmar och läsa om uppdateringar och så.

men sen när man klickar på profil som ska länkas till profilen igen så kommer man inte dit utan man kommer till min index.php.

min member.php (php koden) ser ut så här

<?php require('scritps/connect.php');
if ($_GET['id']) {
	
     $id = $_GET['id'];

} else if (isset($_SESSION['id'])) {
	
	 $id = $_SESSION['id'];

} else {
	
   header("Location: index.php");
   exit;
   
}

$sql = mysql_query("SELECT * FROM user WHERE id='$id'");

	while ($row = mysql_fetch_assoc($sql))
	{
		$username = $row['username'];
		$firstname = $row['firstname'];
		$lastname = $row['lastname'];
		$regday = $row['regday'];
		$email = $row['email'];
		$admin = $row['admin'];
	}
	
	///////  Mechanism to Display Pic. See if they have uploaded a pic or not  //////////////////////////
	$check_pic = "members/$id/image01.jpg";
	$default_pic = "members/0/image01.jpg";
	if (file_exists($check_pic)) {
    $user_pic = "<img src=\"$check_pic\" width=\"200px\"/>"; // forces picture to be 100px wide and no more
	} else {
	$user_pic = "<img src=\"$default_pic\" width=\"200px\" />"; // forces default picture to be 100px wide and no more
	}	
$profile_set = "";
if (isset($_SESSION['id'])) {
	
	if ($_SESSION['id'] == $id){
	 $profile_set = '
	 
	 <ul>
    <li><a href="edit_profile.php">Ändra dina profilinställningar</a></li>
</ul>
	 
	 ';
	}
	if($_SESSION['id'] == $id&&$admin == 1 )
		$update =
		'<ul>
    <li><a href="Nyheter.php">Uppdateringar/nyheter</a></li>
</ul>
	 ';
}

// Place Blab post into database
$blab_outout_msg = "";
if ($_POST['blab_field'] != ""){
	
	 // Delete any blabs over 20 for this member
	 $sqlDeleteBlabs = mysql_query("SELECT * FROM blabbing WHERE mem_id='$id' ORDER BY blab_date DESC LIMIT 50");
	 
	 $bi = 1;
	 
	 while ($row = mysql_fetch_array($sqlDeleteBlabs)) {
		 
		 $blad_id = $row["id"];
		 if ($bi > 20) {
			 
			  $deleteBlabs = mysql_query("DELETE FROM blabbing WHERE id='$blad_id'");
		 }
		 $bi++;
	 }
	 // End Delete any blabs over 20 for this member
	
     $blab_field = $_POST['blab_field'];
	 $blab_field = stripslashes($blab_field);
	 $blab_field = strip_tags($blab_field);
	 $blab_field = mysql_real_escape_string($blab_field);
	 $blab_field = eregi_replace("'", "&#39;", $blab_field);
	 
	 $sql = mysql_query("INSERT INTO blabbing (mem_id, the_blab, blab_date) 
     VALUES('$id','$blab_field', now())")  
     or die (mysql_error());
	 
	 $blab_outout_msg = "Your Blab has been posted!";
}

?>

och sen menyraden har jag i en separat fil som heter meny_2.php som jag använder include till för att få in den till sidan.

jag har en session som startas i connect.php
jag sparar bara id i sessionen.

men hur ska jag göra för att man ska komma till sin profil

kan ju vissa hur meny_2 ser ut i koden

<div id="navbar">
<ul class="lavaLamp">
<li><a href="member.php?id='$_SESSION['id'];'">Profil</a></li>
<li><a href="sok.php">Sök</a></li>
<li><a href="#">Kontakt</a></li>
<li><a href="visanyheterochuppdateringar.php">Nyheter och uppdateringar</a></li>
<li><a href="logout.php">Logga ut</a></li>
</ul><!-- end ul class lavaLamp -->
</div><!-- end navbar div -->

Jag är väldigt tacksam för snabba svar.
/Robin K

Medlem sedan juni 20006 031 inlägg
#2

Jag ser inte att du har session_start någonstans, men den kanske du har i connect.php?

Medlem sedan feb. 2010445 inlägg
#3

Jag löste det! :D
jag hade den i connect.php filen men jag flytta ut den till member.php och då funkade det :)

Medlem sedan feb. 20034 441 inlägg
#4

Du bör tänka om lite och läsa på om SQL injektioner:

if ($_GET['id']) {
    
     $id = $_GET['id'];

} else if (isset($_SESSION['id'])) {
    
     $id = $_SESSION['id'];

} else {
    
   header("Location: index.php");
   exit;
   
}

$sql = mysql_query("SELECT * FROM user WHERE id='$id'"); 
...

Om man går in på sidan ovan och skickar med skadlig kod i adressfältet kan man radera hela din användartabell eller databas, inte så bra va.

Finns massor med information om sånt här om du söker på wF.

Medlem sedan feb. 2010445 inlägg
#5

Hej
jag såg det så jag håller på att ändra på allt som har med säkerheten att göra alltså gör sidan säkrare hittade massa säkerhets håll som måste ändras på:)

Men tack för du var uppmärksam på det :)

268 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)