ugrás a tartalomhoz

confirm függvény futtatásakor ok nyomására php kód lefuttatása

Anonymous · 2006. Nov. 27. (H), 23.29
Üdv!

Lenne egy kérdésem:
hogy oldják meg azt JavaScript-ben, hogy mikor mondjuk rámegyek a linkre pl törlés akkor megkérdi hogy törlöm és ha ok-t nyomok akkor igen ha pedig mégse-t akkor semmi sem történik.

Mármint gondolok arra hogy hogy lehet azt megcsinálni hogy ok nyomása után egy bizonyos php kód lefusson?

azt megtudom csinálni js-ben hogy megkérdezze az ok-t:
<Script Language="JavaScript">
<!--
function ok_or_no() {
if(confirm("Ok vagy mégse?")) {

location.href="atiranyitas&del=yes";

}

}
-->
</Script>

itt ugye azt csinálom hogy ha ok-t nyom akkor átirányitom és ellenörzöm hogy van-e $_GET['del'] és ha igen akkor törlöm
de ezt átirányítás nélkül nem lehet megoldani?, mert ugye ez nem a legjobb módszer

Előre iss kössz.
 
1

onclick

Anonymous · 2006. Nov. 27. (H), 23.46
onclick, return true, ha confirm, return false ha nem
2

onclick

Anonymous · 2006. Nov. 28. (K), 00.24
És ezzel a felsorolással hogy is küszöbölted ki az átirányítást, amire a kérdés vonatkozott?

Gyulus
8

Igy

Anonymous · 2006. Nov. 28. (K), 12.18
Konkéran így:

[coloder=html]
<a href="/a/feldolgozo/neve.php" onclick="javascript:return confirm('Ok vagy mégse?');">link</a>
[/colorer]
3

űrlap és diszkrét javascript

Anonymous · 2006. Nov. 28. (K), 03.15
először is, a törlés és minden más olyan művelet, ami befolyásolja az adatbázisod tartalmát űrlapon keresztül történjen! ha ez megvan, akkor tedd mindezt úgy, hogy a törlést csak akkor hajtsd végre, ha az űrlapodon keresztül kapsz egy megerősítő értéket, ellenben rakj ki egy megerősítő űrlapot rejtett mezőkkel:
a törlés űrlap:
  1. <form action="torles.php" method="post" class="DeleteForm">  
  2.     <input type="hidden" name="torlendo" value="7" />  
  3.     <input type="submit" value="Törlés" />  
  4. </form>  
ezután visszaküldesz egy ilyet (a megfelelő értékkel):
  1. <form action="torles.php" method="post">  
  2.     <input type="hidden" name="torlendo" value="7" />  
  3.     <input type="hidden" name="megerositve" value="1" />  
  4.     <input type="submit" value="Törlés" />  
  5. </form>  
ez eddig az alap megoldásod, hogy ha valaki javascript nélkül használja a felületet, akkor se tudjon véletlenül törölni.

ezt egészítsd ki egy diszkrét javascripttel, ami törlés űrlapok (a kívánt űrlapok megkülönböztetése miatt van a class paraméter) onsubmit eseményét kapja el. ha ez megtörténik akkor feldobod az igen/nem kérdést, igaz esetén beillesztesz egy 'megerositve' nevű rejtett mezőt '1' értékkel magába az űrlapba, hamis esetén pedig meggátolod az esemény lefutását.
prototype (és scriptaculous) használatát feltételezve:
  1. var DeleteForm = Class.create();  
  2. DeleteForm.prototype = {  
  3.     initialize : function(form) {  
  4.         this.form = form;  
  5.         Event.observe(this.form, 'submit'this.delete.bindAsEventListener(this), false);  
  6.     },  
  7.     delete : function(ev) {  
  8.         if (confirm('Tényleg törölni akarod?')) {  
  9.             this.form.appendChild(Builder.node('input', {type: 'hidden', name: 'megerositve', value: 1}));  
  10.         }  
  11.         else {  
  12.             Event.stop(ev);  
  13.         }  
  14.     }  
  15. }  
  16. Event.observe(window, 'load'function() { $$('form.DeleteForm').each( function(form) { new DeleteForm(form); } ) }, false);  
a szerver oldali részt már rádbízom, sok sikert hozzá!

gex

u.i.: semmi sincs letesztelve...
4

űrlap jó dolog, de azért ez picit túlzás...

virág · 2006. Nov. 28. (K), 08.44
Miért is kéne űrlapon keresztül történnie minden törlésnek, illetve minden adatbázis műveletet maga után vonó műveletnek? Szerintem jó amit írtál, de másképpen is lehet és nem kell űrlap mindenhez. :)
6

szerintem éppen a törléshez kell űrlap...

tiku I tikaszvince · 2006. Nov. 28. (K), 10.39
Szerintem éppen a törléshez kell űrlap. A #6-ban van a fenti űrlap linkes megvalósítása. Egy linket lehet menteni, könyvjelzőbe tenni. Éppen ebben rejlik a nagy veszélye.
9

én maradnék az űrlapnál

Anonymous · 2006. Nov. 28. (K), 12.31
nem is mindenhez, kizárólag azokhoz, amik permanens változást okoznak az adatbázisban. nem kötelező, de illik...
először is, a 6-os hozzászólás egyáltalán nem biztonságos. még Veled is előfordulhat, hogy fejlesztés közben webdeveloper toolbaron kikapcsolod a js-t, úgy marad, aztán átmész egy admin felületre. gondolom nem kell részleteznem. :)
másodszor pedig, elég arra az urban legendre gondolni, amiben a google-t és egy jelszó nélküli admin felületet emlegetnek. lehet, hogy nem igaz, de arra int, hogy ne linkeket használj. :]

gex
11

ki mondta, hogy jelszó nélküli?

KergeKacsa · 2006. Nov. 28. (K), 16.55
Na, azért az, hogy js-es confirm az közel sem ugyanaz, minthogy jelszó nélküli admin :)

Az utóbbi egy nagyon súlyos biztonsági hiba, nem ugyanaz a kategória :)
12

szerintem a te módszered is biztonsági hiba

Anonymous · 2006. Nov. 28. (K), 17.26
nem a jelszón volt a hangsúly, wgettel szedtél már le valamit?
a te módszerednél szerintem még toxiné is jobb. ott legalább ha valakinek nincs js-e akkor törölni sem tud.

gex
5

űrlap nélkül, linkben

KergeKacsa · 2006. Nov. 28. (K), 09.32
Miért is kéne kötelezően űrlap mindenhez?

Kell egy aprócska JS funkció:
function confirmLink(text) {
var is_confirmed = confirm('Biztos ez akarod? \n' + text);
return is_confirmed;
}

És ezt már berakhatod linkbe:

<a href="admin.php?name=story&op=delete&story_id=STORY_ID" OnClick="return confirmLink(this, 'Ennek a történetnek a törlése?')">Törlés</a>

Nem a diszkrét js-es megoldás, de ha valaki arra törekszik, át tudja rakni. Mindenesetre müködik :) (JS ON állapotban persze.)
7

just for fun, YUI+cssQuery

toxin · 2006. Nov. 28. (K), 11.02
legyen ilyen is itt, hamár Jack Slocum, összehozott egy zsír rendszert :)
  1. <script type="text/javascript">  
  2.       
  3. YAHOO.util.Event.onAvailable('link_wrapper',function(){  
  4.       
  5.     //add links just for fun  
  6.     for (var i=0;i<10;i++) YAHOO.ext.DomHelper.append(this,{tag:'a',id:'link_'+i,href:location.href+'?row='+i,html:i+'<br/>'});      
  7.       
  8.     // add confirm dialog to links  
  9.     YAHOO.util.Dom.batch(cssQuery('#'+this.id+' a'),function(link){  
  10.         YAHOO.util.Event.on(link,'click',function(e,index){  
  11.             if (!confirm(index+'. elem törlése?')){  
  12.                 YAHOO.util.Event.stopEvent(e);  
  13.             }  
  14.         },link.innerText || link.textContent);  
  15.     });   
  16. })    
  17.   
  18. </script>  
  19.   
  20. </head>  
  21.     <body>  
  22.         <div id="link_wrapper">  
  23.         </div>  
  24.     </body>  
  25. </html>  
http://toxin.hu/yui/linker.htm

üdv t

ui: amúgy mostmár a teljes YUI doksi fentvan a http://www.jackslocum.com/deploy/yui-ext/docs/ -on YUI core+widget+ext
10

rövidebb, ugyanolyan rossz

Anonymous · 2006. Nov. 28. (K), 12.35
ehhez nem kell függvény:
  1. <a href="admin.php?..." onclick="return confirm('Törlés?');">Törlés</a>  
gex
13

Űrlap++

attlad · 2006. Nov. 28. (K), 19.52
Ezt írja a szabvány + real world példaként meg lásd a Google Web Accelerator tapasztalatokat. Meg azt a fazont akinek a Googlebot törölte az oldalát :) bár ott nyilván jogosultsági gond is volt.

(+ Weblaboron is volt már erről szó korábban.)