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 {
24 svar · 554 visningar · startad av Nina
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 {
:(
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 {
Det verkar fungera men det tycks även släppa förbi även icke inloggade...
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 ... :)
Tackar skall testa
Nope tyvärr inget fungera
Ä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");
}
?>
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());
}
}
?>
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 :(
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.
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
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 ?
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
$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.
Kommer från en annan sida via länken
<?php echo "<a href=\"download.php?id=$id\">Download </a>
Där allt är listade
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.
Det står rätt fil, alltså tex download.php?id=17 men så laddar den hem id 18 istället.
Lustiga sak
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å ?
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 {
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.