webForumDet fria alternativet

Varför fel fil?

PHPur PHP

24 svar · 554 visningar · startad av Nina

NinaMedlem sedan feb. 200358 inlägg
#1

Varför i sjutton laddar den här filen alltid ner samma fil, det är som att den inte fattar att ta ut rätt id

<?php
session_start();
if (!(isset($username) || isset($siteuser)))  // user not login, redirect to login page
{
   header("Location: ../test/members/loggin.php");
   exit;
}
else {
$dbname = 'xxxxx';    
$dbhost = 'localhost';   
$dbusername = 'xxxxx'; 
$dbpassword = 'xxxxx';    

$connection=mysql_connect($dbhost, $dbusername, $dbpassword) or die(mysql_error()); 
$dbase=mysql_select_db($dbname) or die(mysql_error()); 

$q="SELECT * from graphics where graphics_id='$id'"; 
$result= mysql_query($q, $connection) or die 
("Could not execute query : $q." . mysql_error()); 

while ($row = mysql_fetch_array($result)) 
{ 
$id=$row["graphics_id"]; 
$name=$row["graphics_name"]; 
$cat_id=$row["category_id"]; 
$designer=$row["designer"]; 
$email=$row["email"]; 
$date=$row["date"]; 
$image=$row["image"]; 
$dsc = $row["description"]; 
$viewlink=$row["viewlink"]; 
$downloadlink=$row["downloadlink"]; 
$views = $row["views"]; 
$downloads = $row["downloads"]; 

 header('Location:' .$downloadlink); 

$q="update graphics set downloads=downloads+1 where graphics_id='$id'"; 
$result2= mysql_query($q, $connection) or die 
("Could not execute query 2 : $q." . mysql_error());
}

}
?>

Tar jag däremot bort den här bioten så fungerar den utmärkt

if (!(isset($username) || isset($siteuser)))  // user not login, redirect to login page
{
   header("Location: ../test/members/loggin.php");
   exit;
}
else {

:(

MatteMedlem sedan aug. 20002 975 inlägg
#2

Någon skillnad om du gör:

if (!(isset($username) || !isset($siteuser)))  // user not login, redirect to login page
{
   header("Location: ../test/members/loggin.php");
   exit;
}
else {
NinaMedlem sedan feb. 200358 inlägg
#3

Det verkar fungera men det tycks även släppa förbi även icke inloggade...

FuelMedlem sedan okt. 20001 285 inlägg
#4

if (!isset($username) || !isset($siteuser)) {
if (!isset($_POST['username']) || !isset($_POST['siteuser'])) {
if (!isset($_SESSION['username']) || !isset($_SESSION['siteuser'])) {
if (!isset($_GET['username']) || !isset($_GET['siteuser'])) {
if (!isset($_COOKIE['username']) || !isset($_COOKIE['siteuser'])) {

make a pick ... :)

NinaMedlem sedan feb. 200358 inlägg
#5

Tackar skall testa

NinaMedlem sedan feb. 200358 inlägg
#6

Nope tyvärr inget fungera

FuelMedlem sedan okt. 20001 285 inlägg
#7

Är delar av koden bortagen med flit ?

<?php
session_start();
if (!isset($_SESSION['username'])){
   header("Location: ../test/members/loggin.php");
   exit;
} else {
	$dbname = 'kaptenZOOM';    
	$dbhost = 'localhost';   
	$dbusername = 'nina'; 
	$dbpassword = 'terminator';    
	$connection = @mysql_connect($dbhost, $dbusername, $dbpassword) or die("ERROR : ".mysql_error()); 
	$dbase = @mysql_select_db($dbname) or die("ERROR : ".mysql_error()); 
	$sql = "SELECT * from graphics WHERE graphics_id = '$_GET['id']'"; 
	$result = @mysql_query($sql) or die ("ERROR : ".mysql_error()); 
	while ($row = mysql_fetch_array($result))
	{ 
		$downloads = $row['downloads']; 
		$sql2 = "UPDATE graphics SET downloads=$downloads+1 WHERE graphics_id='".$row['graphics_id']."'"; 
		$result2 = @mysql_query($sql2) or die ("ERROR 2 : ".mysql_error());
	}
        header("Location: somwhere");
}
?>
NinaMedlem sedan feb. 200358 inlägg
#8

Nä alltså det här är hela koden, kommer till den här koden efter att jag klickat på download som vidare tar mig till zip filen om jag är inloggad

<?php
session_start();
if (!(isset($username) || isset($siteuser)))  // user not login, redirect to login page
{
   header("Location: ../test/members/loggin.php");
   exit;
}
else {
$dbname = 'xxxxx';    
$dbhost = 'localhost';   
$dbusername = 'xxxxx'; 
$dbpassword = 'xxxxx';    

$connection=mysql_connect($dbhost, $dbusername, $dbpassword) or die(mysql_error()); 
$dbase=mysql_select_db($dbname) or die(mysql_error()); 

$q="SELECT * from graphics where graphics_id='$id'"; 
$result= mysql_query($q, $connection) or die 
("Could not execute query : $q." . mysql_error()); 

while ($row = mysql_fetch_array($result)) 
{ 
$id=$row["graphics_id"]; 
$name=$row["graphics_name"]; 
$cat_id=$row["category_id"]; 
$designer=$row["designer"]; 
$email=$row["email"]; 
$date=$row["date"]; 
$image=$row["image"]; 
$dsc = $row["description"]; 
$viewlink=$row["viewlink"]; 
$downloadlink=$row["downloadlink"]; 
$views = $row["views"]; 
$downloads = $row["downloads"]; 

 header('Location:' .$downloadlink); 

$q="update graphics set downloads=downloads+1 where graphics_id='$id'"; 
$result2= mysql_query($q, $connection) or die 
("Could not execute query 2 : $q." . mysql_error());
}

}
?>
NinaMedlem sedan feb. 200358 inlägg
#9

Problemet är att den vill inte fatta vilken fil det är jag vill ladda hem utan den tar hela tiden sista filen på varje sida, om jag tar bort

if ( !isset($_SESSION['username']) ) // user not login, redirect to login page
{
   header("Location: /members/loggin.php");
   exit;
}

Då fattar den id rätt men lägger jag till den så fattar den inte det :(

MatteMedlem sedan aug. 20002 975 inlägg
#10

Men den koden ska inte kunna påverka det.

Vad den gör är att den kollar om sessionsvariabeln finns.

Finns den inte skyfflas man iväg till /members/loggin.php, annars körs koden i skriptet.

NinaMedlem sedan feb. 200358 inlägg
#11

Det är därför jag blir så konfunderad, eftersom koden man kommer ifrån fungerar korrekt om jag plockar bort den där delen, så fort jag lägger dit den så tar kden här koden enbart en och samma zip fil oavset vilken jag valt, tycks vara något som stör så att det blir rätt fil

MatteMedlem sedan aug. 20002 975 inlägg
#12

För att testa lite.

Ändra

$q="SELECT * from graphics where graphics_id='$id'"; 
$result= mysql_query($q, $connection) or die 
("Could not execute query : $q." . mysql_error());

till

$q="SELECT * from graphics where graphics_id='$id'"; 
echo "SQL-frågan: <br> $q <br>";
$result= mysql_query($q, $connection) or die 
("Could not execute query : $q." . mysql_error());

Testa både med din isset och utan den.
Får du då någon skillnad i utskriften, och hur ser den ut ?

NinaMedlem sedan feb. 200358 inlägg
#13

Får det här fel meddelandet på båda

SQL-frågan:
SELECT * from graphics where graphics_id='18'

Warning: Cannot modify header information - headers already sent by (output started at /home/mystif/public_html/graphics/download.php:13) in /home/mystif/public_html/graphics/download.php on line 33

Det visar även att graphics_id är fel, skulle ha ner id 17 och den tar id 18

GrodanBollMedlem sedan sep. 2001788 inlägg
#14
$q="SELECT * from graphics where graphics_id='$id'";

Var får frågan $id ifrån?
Såvitt jag förstår så blir detta värde i $id fel? I koden så ser vi inte varifrån du får detta värde.

NinaMedlem sedan feb. 200358 inlägg
#15

Kommer från en annan sida via länken
<?php echo "<a href=\"download.php?id=$id\">Download </a>

Där allt är listade

MatteMedlem sedan aug. 20002 975 inlägg
#16

Och vad står det för värde på $id i den länken?
Det ser i statusfältet när du för musen över, eller när du tittar i den genererade HTML-koden.

NinaMedlem sedan feb. 200358 inlägg
#17

Det står rätt fil, alltså tex download.php?id=17 men så laddar den hem id 18 istället.
Lustiga sak

MatteMedlem sedan aug. 20002 975 inlägg
#18

Det innebär att den byter värde av någon anledning.

När du körde koden stod det då .../download.php?id=17 i adressfältet ?

Testa med att ändra från

$q="SELECT * from graphics where graphics_id='$id'";

till

$q="SELECT * from graphics where graphics_id='{$_GET['id']}'";

och kör koden inklusive sin felsökning.
Vad får du då ?

NinaMedlem sedan feb. 200358 inlägg
#19

Ok, ska testa. Jo det är det som är så lustigt att den byter värden så fort jag lägger in

if (!(isset($username) || !isset($siteuser))) // user not login, redirect to login page
{
header("Location: ../test/members/loggin.php");
exit;
}
else {

MatteMedlem sedan aug. 20002 975 inlägg
#20

Vad det gäller den if-satsen så är den felaktig. Det var jag som missade en parentes i den.

Om jag minns rätt från tidigare frågor av dig, så var $username en sessionsvariabel och $siteuser en cookie.

Då skulle jag skrivit så här:

if (!isset($_SESSION['username']) || !isset($_COOKIE['siteuser']))  // user not login, redirect to login page
{
   header("Location: ../test/members/loggin.php");
   exit;
}
else {

Annars kunde någon enkelt gått förbi din inloggning genom att skriva download.php?username=vad_som_helst&siteuser=vad_som_helst

Men detta ska inte ha något som helst med dina problem att göra. Väntar med spänning på vad du får fram.

135 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)