Jag håller på med ett script till en liten community där alla användare ska kunna ladda upp x antal filmer.
Det fungerar bra att ladda upp och lista filmerna för alla medlemmar, men har lite strul med att radera filmer.
Får bara...
FEL
Ogiltigt ID.
Är tacksam ifall någon kunde kolla igenom koden.
<?php
require "include/config.php";
dbconn(false);
loggedinorreturn();
function bark($msg)
{
stdhead();
stdmsg("Fel", $msg);
stdfoot();
exit;
}
$id = 0 + $_GET["id"];
if (!is_valid_id($id))
bark("Ogiltigt ID.");
$r = @mysql_query("SELECT * FROM users WHERE id=$id") or sqlerr();
$user = mysql_fetch_array($r) or bark("Finns ingen medlem med detta ID.");
$delete = $HTTP_GET_VARS["delete"];
if (is_valid_id($delete))
{
$r = mysql_query("SELECT * FROM filmer WHERE id=$delete") or sqlerr(__FILE__, __LINE__);
if (mysql_num_rows($r) == 1)
{
$a = mysql_fetch_assoc($r);
if (get_user_class() >= UC_USER)
{
mysql_query("DELETE FROM filmer WHERE id=$delete") or sqlerr(__FILE__, __LINE__);
if (!unlink("/home/var/www/*****/filmer/$user[username]/$a[name]"))
stderr("Fel", "Kunde inte radera filen (filmen): <b>$a[filename]</b>. Var god kontakta ansvarig.");
}
}
}
stdhead("$user[username]´s Filmer");
$res = mysql_query("SELECT count(*) FROM filmer WHERE owner = $user[id]") or die(mysql_error());
$row = mysql_fetch_array($res);
$count = $row[0];
$perpage = 15;
list($pagertop, $pagerbottom, $limit) = pager($perpage, $count, $_SERVER["PHP_SELF"] . "?out=" . $_GET["out"] . "&" );
print("<h1>$user[username]´s Filmer</h1>\n");
echo $pagertop;
$res = mysql_query("SELECT added, id, owner, name, kommentar FROM filmer WHERE owner = $user[id] ORDER BY added DESC $limit") or sqlerr(__FILE__, __LINE__);
if (mysql_num_rows($res) == 0)
print("<b>$user[username] har inte laddat upp några filmer, än.</b>\n");
else
{
$mod = get_user_class() >= UC_USER;
print("<table width=500 border=1 cellspacing=0 cellpadding=5>\n");
print("<tr><td class=colhead align=left>Datum</td><td class=colhead align=left>Tid</td><td class=colhead align=left>Screen</td>" .
($mod ? "<td class=colhead align=left>Åtgärd</td>" : "") . "</tr>\n");
while ($arr = mysql_fetch_assoc($res))
{
$r2 = mysql_query("SELECT * FROM users WHERE id=$arr[owner]") or sqlerr();
$a2 = mysql_fetch_assoc($r2);
$date = substr($arr['added'], 0, strpos($arr['added'], " "));
$time = substr($arr['added'], strpos($arr['added'], " ") + 1);
$name = $arr["name"];
$kommentar = $arr["kommentar"];
$url = str_replace(" ", "%20", htmlspecialchars("/filmer/$a2[username]/$name"));
print("<tr bgcolor=$bgcolor><td>$date</td><td>$time</td><td><a href=$url target=_blank><img src=$url border=0 width=150 alt='$kommentar' title='$kommentar'></a></td>" .
($mod ? "<td><a href=?delete=$arr[id]>[Radera]</a></td>" : ""). "</tr>\n");
}
print("</table>");
}
echo $pagerbottom;
end_main_frame();
stdfoot();
?>
function loggedinorreturn() {
global $CURUSER;
if (!$CURUSER) {
header("Location: $BASEURL/login.php?returnto=" . urlencode($_SERVER["REQUEST_URI"]));
exit();
}
}
$delete = $HTTP_GET_VARS["delete"];
if (is_valid_id($delete))
{
$r = mysql_query("SELECT * FROM filmer WHERE id=$delete") or sqlerr(__FILE__, __LINE__);
if (mysql_num_rows($r) == 1)
{
$a = mysql_fetch_assoc($r);
if (get_user_class() >= UC_USER)
{
mysql_query("DELETE FROM filmer WHERE id=$delete") or sqlerr(__FILE__, __LINE__);
if (!unlink("/home/var/www/*****/filmer/$user[username]/$a[name]"))
stderr("Fel", "Kunde inte radera filen (filmen): <b>$a[filename]</b>. Var god kontakta ansvarig.");
}
}
}
Sedan länken för att radera en film:
<a href=?delete=$arr[id]>[Radera]</a>
Fundera över vad du vill få ut av länken. Om du vill att delete ska ha värdet av den fil som ska bort och id ska ha värdet av vem som vill ta bort det, får du konstruera länkar efter följande modell:
echo "<a href=\"www.mindoman.se/minafilmer.php?delete=<filmid>&id=<personid>\">ta bort filmnamn</a>";
Men då återstår frågan var du från början hittar värdet på vem som använder skriptet? Hur kommer du till sidan från början? Har du en inloggning innan man kan ta bort? Var lagras personid:t i så fall?
Man kommer till användarens filmer genom att gå till minafilmer.php?id=*id:et på användaren*
Denna kod kontrollerar så att man är inne på rätt användares filmer.
$id = 0 + $_GET["id"];
if (!is_valid_id($id))
bark("Ogiltigt ID.");
$r = @mysql_query("SELECT * FROM users WHERE id=$id") or sqlerr();
$user = mysql_fetch_array($r) or bark("Finns ingen medlem med detta ID.");
Det ska bara vara användaren själv som ska kunna radera sina filmer på den sidan.
Tacksam för all hjälp.
258 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9