| Autor | Zpráva | ||
|---|---|---|---|
| pito Profil |
#1 · Zasláno: 15. 9. 2011, 22:30:10
Zdravím,
Mám galerií fotek, kde v administraci si nahraju foto které se mi uklada do slozky na server a take se uloží jméno fotky př.: 256.jpg do databáze a také to i odstraňuji přes administraci kde nejprv vyberu kategorií a po vybraní se mi zobrazí fotografie dané kategorie kterou jsem si vybral.Potom po kliknutí na fotku se mi odstraní jak ze složky tak z db.Jenže teď nedávno sem musel přehodit všechen web na jiný hosting a od té doby mi nejde odstranit foto z databaze.Nevím kde může být chyba, ze složky jde,ale z databaze nikoliv. Nevím jestli to pomůže když dám zde script: <?
if (!isset($_GET['k'])){
if (!isset($_POST['kategorie'])){
?>
<h3>Vyber kategorii</h3><br>
<form method="post">
<select size="1" name="kategorie">
<?php require "config.php";
$dotaz=mysql_query("SELECT kategorie FROM slozky")or die(mysql_error());
while ($vysledek=mysql_fetch_array($dotaz)):
echo "<option value=\"$vysledek[kategorie]\">$vysledek[kategorie]</option>";
endwhile;?>
echo "</select>
<input type="submit" name="kat" value="Odeslat">
</form>
<br><br><br>
<?php
}else{
$kat=$_POST['kategorie'];
echo"<h3>Vyber obrazek k odstranění - po kliknutí na fotografií ji odstraníš </h3><br>
";
require "config.php";
$radek=mysql_query("SELECT * FROM $kat ")or die (mysql_error());
while($vysledek=mysql_fetch_array($radek)):
$img= ereg_replace(".jpg","mini.jpg",$vysledek['obrazek']);
$k=$vysledek['obrazek'];
echo "<a class=\"d\" href=\"index.php?id=odstranit&k=$k&kat=$kat\"><img src=\"../images/".$kat."mini/".$img."\"></a>";
endwhile;
}
}else{
echo "<p>".$_GET['k']."</p>";
$q=$_GET['k'];
$kat=$_GET['kat'];
$a= ereg_replace(".jpg","mini.jpg",$q);
$b= ereg_replace(".jpg","big.jpg",$q);
$soubor_mini="../images/".$kat."mini/".$a."";
$soubor_big="../images/".$kat."big/".$b."";
unlink($soubor_mini);
unlink($soubor_big);
require "config.php";
mysql_query("DELETE FROM $kat WHERE obrazek='$k'");
}
?>ale myslím si jestli to není náhodou tím, že jsem mněl dysi na hostingu jméno serveru brambora.kapusta.cz a teďka mám jméno serveru jen localhost tak nevím. |
||
| Alphard Profil |
#2 · Zasláno: 15. 9. 2011, 22:39:05
Tak jestli výpisy fungují, jste k databázi připojen správně. Vypište případnou chybu pomocí mysql_error() a dumpněte si složený dotaz (a zkontrujte, jestli jsou dosazeny správné proměnné).
|
||
| Tori Profil |
#3 · Zasláno: 15. 9. 2011, 22:40:10 · Upravil/a: Tori
Řádek 51: místo $k má být
mysql_real_escape_string($_GET['k']) Nemáte nijak ošetřené vstupy z formuláře, někdo vám může smazat libovolný soubor z libovolného adresáře (-li se dobře koukám) - názvy souborů ošetřujte alespoň basename. Stejně tak je nutné ošetřit data, která jdou do SQL dotazu - např. tou funkcí mysql_real_escape_string, aby vám nějaký šťoural nesmazal celou tabulku. |
||
| pcmanik Profil |
#4 · Zasláno: 15. 9. 2011, 22:49:31
pito:
Taktiez nepouzivajte kratky zapis php tj. <? ale piste <?php Totizto niektore hostingy mozu mat zablokovane kratke direktivy. |
||
| pito Profil |
#5 · Zasláno: 15. 9. 2011, 22:52:55
Tori:
Řádek 51: místo $k má být mysql_real_escape_string($_GET['k']) To nejde.jak to nahradím tym $k tak stránka je bila nic tam není.Možná to mám špatně napsané. Zkoušel jsem přidat do .htaccess register_globals= on ale nefunguje to tak nevím. |
||
| Tori Profil |
#6 · Zasláno: 15. 9. 2011, 22:55:06 · Upravil/a: Tori
pito:
$kat = mysql_real_escape_string($_GET['kat']);
$obrazek = mysql_real_escape_string($_GET['k']);
mysql_query("DELETE FROM `$kat` WHERE obrazek='$obrazek' LIMIT 1") or die(mysql_error());..opraveno, doufám |
||
| Alphard Profil |
#7 · Zasláno: 15. 9. 2011, 23:00:55
[#6]
Tori, zabezpečíš jedno a další díra je hned vedle, proměnná $kat je z GET. Dosadit tam něco jako users -- a je to :-) Kromě toho to vypadá, že pito má pro každou kategorii vlastní tabulku, což nepovažuji za šťastné. |
||
| pito Profil |
#8 · Zasláno: 15. 9. 2011, 23:02:19
Tori:
Moc děkuji.Už je to funkční,ale stejně nechápu jak to, že to na tým prvním hostingu fungovalo a na tým druhým ne. |
||
| Tori Profil |
#9 · Zasláno: 15. 9. 2011, 23:12:19
Alphard:
A jo, omlouvám se, nejsem zvyklá na to že se používají proměnné zvenku jako názvy tabulek, tak mi to v tu chvíli nedošlo. |
||
|
Časová prodleva: 15 let
|
|||
0