Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

form posten zonder pagina refresh

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een php pagina waarop 2 forms staan.
De eerste gebruik ik om informatie weg te schrijven in de database. De 2e gebruik ik om iets op te zoeken.

Probleem is nu dat ik de 2e wil gebruiken zonder dat de pagina zich vernieuwd. Ik dacht om hiervoor AJAX te gebruiken.

Dit is de code die ik nu heb.
<div>
<form method="get" action="../kaart/resultaatpc.php?van=<?php $_GET[van]; ?>&naar=<?php $_GET[naar]; ?> ">
Van: <input type="text" size="5" name="van" />
Naar: <input type="text" size="5" name="naar" />
<input type="submit" value="Zoek" />
</form>
</div>

<div id="inhoud"></div>
Wat ik nu wil is dat het resultaat van form 2 te zien is in de DIV met id inhoud.
Met de volgende code zou dat moeten lukken als ik een A HREF zou gebruiken:
<a href="javascript:ajaxpage('..kaart/resultaatpc.php?van=<?php $_GET[van]; ?>&naar=<?php $_GET[naar]; ?>', 'inhoud');">ZOEK</a>
Maar hoe kan ik dit nu ombouwen zodat het werkt met de form button?

  • Jan_V
  • Registratie: Maart 2002
  • Laatst online: 08:52
Als je het nou niet in een form zet en het betreffende javascript aanroept in de knop code.
Dus iets als
code:
1
<INPUT TYPE=BUTTON OnClick="ajaxpage('..kaart/resultaatpc.php?deRestVanDeParameters');" VALUE="Zoek">

Ik weet niet zeker of dit werkt hoor, maar het zou zo ongeveer moeten werken.

Battle.net - Jandev#2601 / XBOX: VriesDeJ


  • Duroth
  • Registratie: Juni 2007
  • Laatst online: 27-04-2016

Duroth

No rest for the tweaked

zet een onSubmit() in je <form> element. Deze zal dan uitgevoerd worden op het moment dat het formulier gesubmit wordt (via knop of een druk op enter). Door de ajax-call te beëindigen met een return: false; voorkom je dat de pagina alsnog herladen wordt.

  • Martine
  • Registratie: Mei 2002
  • Niet online
Zoiets?

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
    function DoAjax(field, url, params, method) {
        var http = false;
        if (window.XMLHttpRequest)
            http = new XMLHttpRequest();
        else if (window.ActiveXObject)
            http = new ActiveXObject("Microsoft.XMLHTTP");  
        
        if (!method || method.toLowerCase() == 'get') {
            var method = 'GET';
            url += '?' + params;
        }
        
        if (!params)
            params = '';
        
        http.open(method, url);
        http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        http.setRequestHeader("Content-length", params.length);
        http.setRequestHeader("Connection", "close");
        
        window.status = 'Bezig...';
        
        http.onreadystatechange = function() {
            if(http.readyState == 4 && http.status == 200) {
                window.status = 'Opgeslagen...';
                document.getElementById(field).innerHTML = http.responseText;
            } 
            else {
                window.status = 'Foutje...';
            }
        }
        
        http.send(decodeURI(params));
    }


HTML:
1
2
3
4
5
6
<form>
  <input type="text" id="bla">
  <input type="text" id="foo">
  <input type="button" value="send" onclick="javascript:DoAjax('post_to_field', 'post.php', '&bla='+document.getElementById('bla').value+'&foo='+document.getElementById('foo').value, 'POST');">
</form>
<span id="post_to_field"></span>

Verwijderd

Topicstarter
Hmm ik heb nu het script van Martin! geprobeerd maar dan volgt er geen actie vanuit de knop...
Ik ga even het script bestuderen van Cheatah. Thanks voor de replies tot nu toe!

  • Tanuki
  • Registratie: Januari 2005
  • Niet online

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

l0c4lh0st schreef op dinsdag 05 februari 2008 @ 00:46:
[...]

Leuk, ze hebben een XSS-lek...
Leg uit?

Going for adventure, lots of sun and a convertible! | GMT-8


  • TRON
  • Registratie: September 2001
  • Laatst online: 17-11 09:59
XSS -> Cross-site-scripting. Het houdt kort gezegd in dat er door externen HTML / JavaScript op de site uitgevoerd kan worden, met alle gevolgen van dien.

Leren door te strijden? Dat doe je op CTFSpel.nl. Vraag een gratis proefpakket aan t.w.v. EUR 50 (excl. BTW)


  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

TRON schreef op dinsdag 05 februari 2008 @ 00:53:
XSS -> Cross-site-scripting. Het houdt kort gezegd in dat er door externen HTML / JavaScript op de site uitgevoerd kan worden, met alle gevolgen van dien.
Dat kan ik toch ook door met Firebug code te injecten ?

Going for adventure, lots of sun and a convertible! | GMT-8


Verwijderd

Scratch that.

Ja, dit is een XSS-lek. Je kan een scriptje invullen in het formulier, die dan door volgende lezer wordt uitgevoerd. Dus naast SQL-injection moet je ook uitkijken voor JS- en HTML-injection.

PHP: htmlspecialchars
PHP: mysql_real_escape_string

[ Voor 91% gewijzigd door Verwijderd op 05-02-2008 01:09 ]


  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Verwijderd schreef op dinsdag 05 februari 2008 @ 01:00:
Scratch that.

Ja, dit is een XSS-lek. Je kan een scriptje invullen in het formulier, die dan door volgende lezer wordt uitgevoerd. Dus naast SQL-injection moet je ook uitkijken voor JS- en HTML-injection.
Leg eens uit, want ik snap het echt niet.

Going for adventure, lots of sun and a convertible! | GMT-8


Verwijderd

Nou, stel dat jij in dit GoT-formulier het volgende intikt:
HTML:
1
2
3
<script type="text/javascript">
window.location="http://site-that-looks-like-GoT-but-kills-your-little-doggy-too.com.com"
</script>

GoT maakt daarvan:
HTML:
1
2
3
&lt;script type=&quot;text/javascript&quot;&gt;
window.location=&quot;http://site-that-looks-like-GoT-but-kills-your-little-doggy-too.com&quot;
&lt;/script&gt;

Daarmee zorg je ervoor dat de tags niet worden geparst, en de javascript niet wordt uitgevoerd. Dat doet PHP met htmlspecialchars().

[ Voor 8% gewijzigd door Verwijderd op 05-02-2008 01:21 ]


  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Verwijderd schreef op dinsdag 05 februari 2008 @ 01:16:
Nou, stel dat jij in dit GoT-formulier het volgende intikt:
HTML:
1
2
3
<script type="text/javascript">
window.location="http://site-that-looks-like-GoT-but-kills-your-little-doggy-too.com.com"
</script>

GoT maakt daarvan:
HTML:
1
2
3
&lt;script type=&quot;text/javascript&quot;&gt;
window.location=&quot;http://site-that-looks-like-GoT-but-kills-your-little-doggy-too.com&quot;
&lt;/script&gt;

Daarmee zorg je ervoor dat de tags niet worden geparst, en de javascript niet wordt uitgevoerd. Dat doet PHP met htmlspecialchars().
Dat is toch helemaal niet mogenlijk op die website? Als ik uw code erin ram in die input box geeft hij die gewoonweg niet weer?

Going for adventure, lots of sun and a convertible! | GMT-8


Verwijderd

Hmm, je hebt gelijk. Probeer deze eens:
HTML:
1
2
3
<img onload="javascript:alert('Aint that annoying?')" style="position:absolute; left:450px; top:120px;"
    src="http://img409.imageshack.us/img409/8258/pwned111za6.jpg" />
<div style="color: deeppink; font-size: 40pt; font-weight:bold; position:absolute; left:10px; top: 10px;">Lalalala You got PWNED!!!</div>

Je wil niet dat mensen dat posten op je forum. :P

[ Voor 6% gewijzigd door Verwijderd op 05-02-2008 03:20 ]


  • H004
  • Registratie: Maart 2006
  • Laatst online: 28-05 19:55
Inderdaad een XSS-fout, maar dat komt omdat hun php-script gewoon de volgende code bevat:

PHP:
1
2
3
<?php
print "<pre>".print_r($_POST, true)."</pre>";
?>
Pagina: 1