Autor | Zpráva | ||
---|---|---|---|
tachov Profil |
#1 · Zasláno: 20. 9. 2015, 12:52:35
Ahoj. hledám pomoc s vyvolání php funkce unlink.
mám script pro vypisování obrázků ze složky : <?php @$soubor = fopen("img", "r"); while(!feof($soubor)) { $a = fgets(@$soubor); foreach (glob('img/*.png') as $image) { echo "<div class='imageframe'><a href='unlink.php?soubor=$image' target='_blank' ><img src='./img/cross.png' style='width:20px;height:20px;' id='kross' title='' /></a><a class='odkaz' href='$image' title='$a'><img src='$image' class='img' title='$a' /></a></div>\n"; } } ?> v němž odkaz <a href='unlink.php?soubor=$image' target='_blank' ><img src='./img/cross.png' style='width:20px;height:20px;' id='kross' title='' /> <?php if(isset($_SESSION["id"])){ echo "Jsi přihlášen jako ".$_SESSION["nick"]."."; $file = $_GET['soubor']; if(strpos($file, "./") === false && strpos($file, $soubor) === false && is_file($file)) { unlink($file); } else { echo "Pokus o smazání selhal"; } } else { echo "Nejsi přihlášen."; } ?> php jako takové funguje. ale nedaří se mi to vytvořit tak aby se soubor smazal aniž by se otevřelo okno nebo se na něj stránka přesměrovala. v php i javasriptu jsem dost levej. prosím o radu či pokud možno nějaký script ve kterém bych pochopil jak pracuje ani strejda google mi nedokázal poradit tak abych to pochopil. |
||
KryVosa Profil |
Máš tam obyčejný odkaz, který otevře nové okno.
To, co ty asi potřebuješ je AJAX. Ten zařídí "otevření" nového okna, pro uživatele neviditelného, kterým něco pošle na server. Teoreticky, pokud ti nevadí, že nebudeš mít od serveru žádný feedback, to můžeš udělat jednoduše pingnutím na server přes obrázek. Druhá možnost je includnout na konec unlink.php stránku s fotkama (asi index?). Představoval bych si to nějak takto: function deleteImg(soubor){ if (window.XMLHttpRequest) { var xmlhttp=new XMLHttpRequest(); } else { var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET","unlink.php?soubor="+soubor,true); xmlhttp.send(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { alert(xmlhttp.responseText); } } } <a href='javascript:deleteImg($image);' target='_blank' > Omlouvám se, chybička se vloudila. V odkazu rozhodně nemá být terget="_blank" .
|
||
tachov Profil |
#3 · Zasláno: 20. 9. 2015, 14:55:37
KryVosa:
ano přesně tohle jsem myslel. dík. něco podobnýho už jsem i zkoušel ale stejně mi to hodí chybu : Uncaught ReferenceError: deleteImg is not defined(anonymous function) @ VM3409:1 a poukazuje na : deleteImg(img/wall.png); což by odpovídalo. je problém někde v odkazu na soubor ? |
||
KryVosa Profil |
#4 · Zasláno: 20. 9. 2015, 15:16:52
Všiml jsem si jedné své drobné chyby, s tímto errorem nesouvisející: Ve volání funkce z linku musí být uvozovky:
<a href='javascript:deleteImg(\'$image\');'> Zpět k tvé aktuální chybě: Problémem je, že javascript nezná funkci " deleteImg ", což znamená, že celý můj script ve stránce ještě není (Nebo se nenahrál kvůli chybě.) Jakým způsobem a kde je script připojen?
Můžeš mi poskytnou živou ukázku webu, kde máš tenhle problém? |
||
tachov Profil |
#5 · Zasláno: 20. 9. 2015, 15:32:39
KryVosa:
stránky si dělám pro sebe abych je mohl odkukoliv upravovat jejich obsah . je to spíš takový vlastní redakční systém. zatim jen dělám na správě galerie. marektachov.maweb.eu login je zatim marecek a heslo taky jinak ten script mám vyloženě na stránce kde mám všechny scripty, pak to předělám aby se načítaly ze souboru. |
||
KryVosa Profil |
#6 · Zasláno: 20. 9. 2015, 15:52:23
Tak taková chyba se mi nepovadla už dlouho :D
Chyba je, že v deklaraci funkce je deleteImg("soubor"){...} místo deleteImg(soubor){...}
Kdyby byl jakýkoliv další problém, tak řekni. Výsledný script: function deleteImg(soubor){ if (window.XMLHttpRequest) { var xmlhttp=new XMLHttpRequest(); } else { var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET","unlink.php?soubor="+soubor,true); xmlhttp.send(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { alert(xmlhttp.responseText); } } } <a href='javascript:deleteImg(\'$image\');'> |
||
tachov Profil |
vtip je v tom že i předtím jsi to měl bez uvozovek ale stejně se vypisujou ... chyba je u mě. ale stejně to nefunguje když jsem to odmazal. už si s tím lámu hlavu 3 dny.
|
||
KryVosa Profil |
Ještě jedna drobnost:
unlink.php vrací celou kostru webové stránky. Správně by neměl vracet žádný HTML, jen "echnutí", že bylo smazáno/nesmazáno.
EDIT: Vidím ještě jednu chybu: do odkazu posíláš špatné hodnoty, a uvozovky jsou každá jiná: <a href="javascript:deleteImg(\" img="" cross.png\');'="">
V HTML by měl odkaz vypadat takto: <a href="javascript:deleteImg(\"cross.png\");"> Koukám realtime na tvé úpravy: Ve volání funkce z odkazu teď chybí uvozovky úplně. |
||
tachov Profil |
#9 · Zasláno: 20. 9. 2015, 16:11:33
KryVosa:
to byla moje chyba protože jsem to zkoušel i s uvozovkama ale stejně to nefunguje. s těma esc. uvozovkama to ani neukáže jméno obrázku. tet tam mám tu tvojí 1.ní verzi. |
||
KryVosa Profil |
#10 · Zasláno: 20. 9. 2015, 16:15:54
Problémem je, že v odkazu ty uvozovky musí být. Bez uvozovek bude javascript hledat proměnou "
img " a dělit jí "obrazek.png ", přičemž ani jedna z těchto proměnných neexistuje. Ty potřebuješ javascriptu poslat string (řetězec, text...) s cestou k obrázku.
Takže nakonec musí odkaz vypadat v HTML takto: <a href="javascript:deleteImg('cross.png');">
|
||
tachov Profil |
#11 · Zasláno: 20. 9. 2015, 16:32:41
asi budu muset najít jinej způsob jak vypisovat obsah složky dvojité uvozovky mi do echa nejdou.
|
||
KryVosa Profil |
#12 · Zasláno: 20. 9. 2015, 16:35:18
Takhle:
echo "<a href='javascript:deleteImg(\"$image\")'>
Říká se tomu escapování uvozovek. |
||
tachov Profil |
#13 · Zasláno: 20. 9. 2015, 16:41:58
KryVosa:
aha .. už jsem z toho uplně mimo už to šlape. já dávál ty uvozovky opačně. super . Moc děkuju tet jdu študovat jak to přesně funguje. |
||
Časová prodleva: 9 let
|
0