Autor | Zpráva | ||
---|---|---|---|
pito Profil |
#1 · Zasláno: 3. 2. 2013, 13:05:06
Zdravím,
Mám problém s tím, že když smažu záznam z databaze tak mě to přesměruje na špatnou adresu. viz. { echo "<td><a href='foto.php?id=".$row['id']."' onClick='window.alert('Album bylo smazano')'>Smazat</a></td>"; $id = $_GET['id']; $dotazProSmazani= "DELETE FROM album WHERE id='$id'"; $vysledekSmazani = mysql_query($dotazProSmazani); } Když dam vlastně smazat tak mám výslednou adresu mojeadresa.cz/foto.php?id=4 Nešlo by přes POST? Ale jako odkaz to chci ne přes tlačítko. Potom vysledná adresa by byla mojeadresa.cz/foto.php bez toho id. |
||
iii Profil * |
#2 · Zasláno: 3. 2. 2013, 13:31:03
Tak na konce přidej
header('Location: foto.php'); |
||
user243 Profil |
#3 · Zasláno: 3. 2. 2013, 13:32:06
po kliknutí na odkaz tě to přesměruje na adresu odkazu; žádné jiné přesměrování po vykonání scriptu tam nemáš;
šlo by to přes post, co odkaz to jeden formulář a onclick na odkaz by odesílal formulář (s vyplým js by se muselo nastylovat odesílací tlačítko, aby vypadlo jako odkaz; |
||
pito Profil |
#4 · Zasláno: 3. 2. 2013, 14:00:32
dal jsem to takhle ale píše to chyby
$id = $_GET['id']; $dotazProSmazani= "DELETE FROM album WHERE id='$id'"; $vysledekSmazani = mysql_query($dotazProSmazani); if ($vysledekSmazani){ header('Location: foto.php'); } } |
||
Jan Tvrdík Profil |
#5 · Zasláno: 3. 2. 2013, 14:01:43
pito:
Skript obsahuje SQL injection zranitelnost. Lépe $id = (int) $_GET['id'];
|
||
pito Profil |
#6 · Zasláno: 3. 2. 2013, 14:07:29 · Upravil/a: pito
Jan Tvrdík:
„Skript obsahuje SQL injection zranitelnost. Lépe $id = (int) $_GET['id'];“ Ted to ale nesmaže záznam z DB Jak mohu tedy udělat aby při smazání naskočilo to dialogové okno onClick='window.alert('Album bylo smazano') a potom to přeměřovalo na tu samou stránku.
|
||
pito Profil |
#7 · Zasláno: 3. 2. 2013, 15:34:44
Tak na nic jiného jsem nepřišel.
|
||
user243 Profil |
#8 · Zasláno: 3. 2. 2013, 17:06:52
do přesměrování uvést adresu, kde máte seznam těch odkazů na smazání; vždyť si sám na tu otázku odpovídáte;
a když už máte přesměrování v podmínce, tak by v else mohlo být, že záznam nebyl smazán, protože...; |
||
pito Profil |
#9 · Zasláno: 3. 2. 2013, 17:16:51
Tak jsem to upravil
{ echo "<td><a href='foto.php?id=".$row['id']."' onClick='window.alert('Album bylo smazano')'>Smazat</a></td>"; $id = $_GET['id']; $dotazProSmazani= "DELETE FROM album WHERE id='$id'"; $vysledekSmazani = mysql_query($dotazProSmazani); if ($vysledekSmazani){ header("Location: index.php?page=foto.php"); } else { // Not logged in. Redirect back to login page header("Location: http://localhost:8080/meet2eat/php/login.php?err=1"); } } ale Píše to zas chybu Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/32603/virtual/www/domains.... |
||
Micruss Profil |
Máš tam někde výstup echo bo tak... html kód a nebo BOM
Dá se to vyřešit tak, že k tomu napíše ob_start(); (na začátek souboru) ------------ EDIT: uprav si to $_GET['id']; na intval($_GET['id']);
|
||
pito Profil |
#11 · Zasláno: 3. 2. 2013, 18:28:44
myslíte tenhle echo výstup?
include 'config.php'; //načteme soubor s údaji pro připojení k db $prispevku = "15"; // počet příspěvků které chceme vypsat na stránku $vypis = mysql_query("SELECT * FROM album order by id desc limit ".$prispevku.""); //vybíráme data z "aktualit" a vypisujeme od posledního příspěvku $pocet=mysql_num_rows(mysql_query('select * from album')); //spočítáme všechny záznamy v databázi while($row = mysql_fetch_array($vypis)) { echo" <tr> <td><a href='index.php?page=vlozitfoto'>".$row["nadpis"]."</a></td>"; { echo "<td><a href='foto.php?id=".$row['id']."' onClick='window.alert('Album bylo smazano')'>Změnit</a> / <a href='foto.php?id=".$row['id']."' onClick='window.alert('Album bylo smazano')'>Smazat</a></td>"; $id = $_GET['id']; $dotazProSmazani= "DELETE FROM album WHERE id='$id'"; } echo" <td>Published</td> <td>18.03.2010</td> <td>John Doe</td> <td class='tableactions'><form><input type='button' class='submit tiny' value='Vložit foto' onClick='window.location.href='index.php?page=vlozitfoto'></form> </td> </tr>"; } mysql_close(); //odpojíme se z db |
||
Micruss Profil |
#12 · Zasláno: 3. 2. 2013, 18:54:26
Tak to máš napsaný v tom erroru ne ? :-) jakej to je řádek...
|
||
pito Profil |
#13 · Zasláno: 3. 2. 2013, 19:01:19
110 řádek to je
header("Location: http://localhost:8080/meet2eat/php/login.php?err=1"); |
||
Micruss Profil |
#14 · Zasláno: 3. 2. 2013, 19:16:49
Napiš tam Ob_Start(); a máš klid :) (na začátek))
|
||
pito Profil |
#15 · Zasláno: 3. 2. 2013, 19:31:38
Micruss:
„Napiš tam Ob_Start(); a máš klid :) (na začátek))“ Nepomaha to |
||
Časová prodleva: 11 let
|
0