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:

<form action="torles.php" method="post" class="DeleteForm">
    <input type="hidden" name="torlendo" value="7" />
    <input type="submit" value="Törlés" />
</form>
ezután visszaküldesz egy ilyet (a megfelelő értékkel):

<form action="torles.php" method="post">
    <input type="hidden" name="torlendo" value="7" />
    <input type="hidden" name="megerositve" value="1" />
    <input type="submit" value="Törlés" />
</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:

var DeleteForm = Class.create();
DeleteForm.prototype = {
    initialize : function(form) {
        this.form = form;
        Event.observe(this.form, 'submit', this.delete.bindAsEventListener(this), false);
    },
    delete : function(ev) {
        if (confirm('Tényleg törölni akarod?')) {
            this.form.appendChild(Builder.node('input', {type: 'hidden', name: 'megerositve', value: 1}));
        }
        else {
            Event.stop(ev);
        }
    }
}
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 :)

<script type="text/javascript">
	
YAHOO.util.Event.onAvailable('link_wrapper',function(){
	
	//add links just for fun
	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/>'});	
	
	// add confirm dialog to links
	YAHOO.util.Dom.batch(cssQuery('#'+this.id+' a'),function(link){
		YAHOO.util.Event.on(link,'click',function(e,index){
			if (!confirm(index+'. elem törlése?')){
				YAHOO.util.Event.stopEvent(e);
			}
		},link.innerText || link.textContent);
	});	
})	

</script>

</head>
	<body>
		<div id="link_wrapper">
		</div>
	</body>
</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:

<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.)