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

php code verwerken in javascript *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Waarschijnlijk een hele makkelijke vraag maar ik krijg het niet voor elkaar.
Ik heb dit stukje javascript:
<script>
function dosubmit( ) {
new Ajax.Updater( 'result', '../kaart/resultaatpc.php', { method: 'post',
parameters: $('myform').serialize() } );
$('myform').reset();
}
</script>
Dit werkt goed, echter resultaatpc.php moet eigenlijk zijn:
resultaatpc.php?van=<?php $_GET[van]; ?>&naar=<?php $_GET[naar]; ?>
Maar zodra ik dit in het stukje javascript verwerk krijg ik javascript foutmeldingen. Iemand een idee hoe ik dit moet verwerken hierin?

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Wordt die PHP-code in resultaatpc.php ook daadwerkelijk uitgevoerd met bijv eval($_GET['van']) ofzo? Zoja, dan wordt dat een hééééél boeiend script met een gigantisch beveiligingslek? :D

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

Snake

Los Angeles, CA, USA

PHP:
1
resultaatpc.php?van=<?php print($_GET["van"]); ?>&amp;naar=<?php print($_GET["naar"]); ?>

Ge moet u variablen printen!

En u & omgezet in &amp;

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


  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

Wat ^^ zegt dus..

/laat.. :X

[ Voor 83% gewijzigd door RaZ op 10-02-2008 13:29 ]

Ey!! Macarena \o/


Verwijderd

Topicstarter
@Osiris
Die "van" en "naar" komen alleen maar terug in deze regel: setDirections("<? echo $_GET[van]; ?>", "<? echo $_GET[naar]; ?>", "nl_NL");
Verder geen ramp of beveiligingslek dus.

@Snake
Sorry maar zo werkt het nog steeds niet...

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Snake schreef op zondag 10 februari 2008 @ 13:24:
PHP:
1
resultaatpc.php?van=<?php print($_GET["van"]); ?>&amp;naar=<?php print($_GET["naar"]); ?>

Ge moet u variablen printen!

En u & omgezet in &amp;
Nu ga je d'r vanuit dat het stukje JavaScript door een PHP-script geoutput wordt. No offence jegens de topicstarter, maar ik heb een flauw vermoeden dat dat hier niet 't geval is :+

Mag de TS dus bevestigen/ontkennen, aka: meer informatie. Sowieso… "javascript foutmeldingen"… Sorry Jaym, maar m'n glazen bol staat bij de glazenbollenhersteller. Wát voor foutmelding is 't dan wel niet? :*

[ Voor 20% gewijzigd door Osiris op 10-02-2008 13:32 ]


  • Rob
  • Registratie: Februari 2000
  • Niet online

Rob

of
code:
1
resultaatpc.php?van=<?=$_GET[van]; ?>&naar=<?=$_GET[naar]; ?>

In the beginning the Internet was a bunch of smart users with dumb terminals. Now...


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:58

crisp

Devver

Pixelated

Vergeet iig niet te urlencoden want je hebt hier wel degelijk een injection vulnerability. Overigens kan je in javascript ook de GET-parameters uitvragen door window.location.search te parsen.

Intentionally left blank


Verwijderd

Topicstarter
Hier dan de foutmeldingen...

Hij geeft 2 javascript foutmeldingen:

Regel 140
Teken 1
Fout: Object wordt verwacht

en

Regel 145
Teken 67
Fout Tekenreeksconstante is niet afgesloten

Zolang ik de PHP code niet meegeef in de url werkt het zonder foutmeldingen.

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Staat die PHP nou gewoon "plain" in je HTML/Javascript? En zo ja, wat is je doel van die PHP-code in je javascript?

Verwijderd

Topicstarter
De code staat wel in een PHP bestand. het doel is om een formulier te posten zonder de pagina te vernieuwen. Hiervoor gebruik ik een stukje AJAX.

Misschien krijg je zo een beter beeld van de code:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<hr>
<div>
    <form id="myform">
        <font face=arial size=2>Van: </font><input type="text" size="5" name="van" id="van" />
        <font face=arial size=2>Naar: </font><input type="text" size="5" name="naar" id="naar" />
        <input type="button" onclick="dosubmit()" value="Zoeken"><input type="reset" value="Wissen">
    </form><div id="result" style="padding:5px;"></div>

<script>
function dosubmit( ) {
  new Ajax.Updater( 'result', '../kaart/resultaatpc.php?van=<?php print($_GET["van"]); ?>&amp;naar=<?php print($_GET["naar"]); ?>  ', { method: 'post',
    parameters: $('myform').serialize() } );
  $('myform').reset();
}
</script>

<?
include "footer.php";

} else {
    header('location:inloggen.php');
}

?>

[ Voor 1% gewijzigd door RobIII op 10-02-2008 14:01 ]


  • Osiris
  • Registratie: Januari 2000
  • Niet online
Valt weer mee :+ No offene :)

Maarehm, je zegt dat je javascript-errors krijgt. Dus dan vraag ik me af: wat is je uiteindelijke geparste PHP-tje (output), dus je uiteindelijke javascriptje, die de browser aangeleverd krijgt dus? Want javascript-errors heeft verder niets met PHP te maken.

[ Voor 7% gewijzigd door Osiris op 10-02-2008 13:49 ]


Verwijderd

Topicstarter
Hmm goede tip om eens in de bron te kijken ja.

Daar kom ik inderdaad dit tegen:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script>
function dosubmit( ) { 
  new Ajax.Updater( 'result', '../kaart/resultaatpc.php?van=<br /> 
<b>Notice</b>:  Use of undefined constant van - assumed 'van' in <b>/public_html/km/invoeren.php</b> on line <b>155</b><br /> 
<br /> 
<b>Notice</b>:  Undefined index:  van in <b>/public_html/km/invoeren.php</b> on line <b>155</b><br /> 
&ampnaar=<br /> 
<b>Notice</b>:  Use of undefined constant naar - assumed 'naar' in <b>/public_html/km/invoeren.php</b> on line <b>155</b><br /> 
<br /> 
<b>Notice</b>:  Undefined index:  naar in <b>/public_html/km/invoeren.php</b> on line <b>155</b><br /> 
  ', { method: 'post', 
    parameters: $('myform').serialize() } ); 
  $('myform').reset(); 
} 
</script>

[ Voor 3% gewijzigd door een moderator op 10-02-2008 14:02 . Reden: Code tags gefixed ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Psssst; code tags ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Osiris
  • Registratie: Januari 2000
  • Niet online
Gelukkig snap je nu zelf exact wat je fout doet, gezien je nu die foutmelding kunt lezen ;)

Iets zegt me dat je je eigen PHP-code nog niet zo hebt staan zoals je hier hebt staan?

Verwijderd

Topicstarter
Jawel, de code is hetzelfde zoals het hier staat, alleen alles boven de <hr> even weg gelaten anders wordt het te druk.

Ik denk dat ik ga proberen om de notice errors te onderdrukken. Het is niet de mooiste oplossing maar ik weet niet hoe ik anders het beste kan doen. Hopelijk lost dit het probleem op...

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:58

crisp

Devver

Pixelated

isset gebruiken en indices quoten. En denk ook aan encoding want het blijft een gigantisch injectionpunt.

[ Voor 34% gewijzigd door crisp op 10-02-2008 14:54 ]

Intentionally left blank


  • Osiris
  • Registratie: Januari 2000
  • Niet online
Die error krijg je over 't algemeen als je bijv $_GET[van] schrijft zonder de quotes om 'van' heen, i.p.v. $_GET['van'] of $_GET["van"], waarbij beide laatsten wel goed zijn.

Zou toch haast denken dat je die quotes toch over 't hoofd hebt gezien?

edit:
Best knap, spuit 11-en op deze manier 8)7 Stomme crisp! :+

[ Voor 11% gewijzigd door Osiris op 10-02-2008 14:53 ]


  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Waarom op de submit button een dosubmit?
Is een onsubmit op <form> zelf dan niet gewoon makkelijker? :)

Nu moeten mensen perse op de knop klikken, anders omzeil je zo de hele boel, anders niet... :)

Dus ipv
HTML:
1
<input type="submit" onclick="dosumbit();" />
HTML:
1
<form id="myForm" onsubmit="dosubmit();">
?

Verwijderd

Topicstarter
Ik loop op deze manier tegen te veel problemen aan die ik niet kan oplossen dus ik ga iets anders proberen. Thnx voor de hulp allemaal!

Ik heb al iets nieuws gevonden maar ook hier loop ik tegen een probleem aan, ik zal wel een aparte topic maken hiervoor.

[ Voor 31% gewijzigd door Verwijderd op 10-02-2008 17:30 ]


Verwijderd

Typisch gevalletje van gebrek aan ervaring en inzicht. Als je niet naar de gegenereerde HTML code kijkt, zul je inderdaad continu tegen problemen aanlopen.

Het gaat met PHP niet anders dan met een HTML document. Het enige is dat het document gegenereerd wordt. Dát is dan ook hetgeen waar je naar moet kijken.

Verwijderd

Topicstarter
Hmmm niet mee eens, de manier die ik nu gevonden heb lost het oorspronkelijke probleem op. Ik kan nu wel PHP code in javascript verwerken. Echter stuit ik nu tegen een nieuw probleem (daar zou ik met het oude script uiteindelijk ook tegenaan gelopen zijn).

Huidige code:
HTML:
1
2
3
4
5
6
7
    <form>
        <font face=arial size=2>Van: </font><input type="text" size="5" name="van" id="van" />
        <font face=arial size=2>Naar: </font><input type="text" size="5" name="naar" id="naar" />
        <a href="javascript:ajaxpage('resultaatpc.php?van=<?php $_GET["van"] ; ?>&naar=<?php $_GET["naar"] ; ?>', 'inhoud');">ZOEKEN</a>
    </form>

<div id="inhoud"></div>


Probleem is dat ik de van en naar waarde nog moet invullen in de input type. Daarom geeft hij dus een notice undefined index...
Ik denk dat dit probleem niet op te lossen is...

Verwijderd

Aangezien je zegt dat je PHP code in Javascript wilt verwerken, zit het toch echt een beetje verkeerd in je hoofd. Het is niet echt een kwestie van het ermee eens zijn of niet.

Ik zou overigens ook niet weten waarom je niet het value attribuut van die invoervelden zou kunnen instellen.

Die notices over "undefined index" zijn altijd meldingen van slechte gewoonten die je gebruikt. Je gaat ervanuit dat voor bepaalde indexen in een array een waarde bestaat, terwijl je dat niet moet doen.

Maar gezien je <font> tags denk ik dat het gewoon heel helder is dat je erg weinig ervaring hebt, en dat je te hoog grijpt. Je hebt nog niet genoeg programmeerervaring om iets te maken waarvoor je PHP, HTML, CSS en Javascript tot op zeker niveau moet beheersen. Hoe bepaal jij of je het "ergens mee eens" bent, of dat iets "niet op te lossen" is?

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Verwijderd schreef op zondag 10 februari 2008 @ 17:39:
Probleem is dat ik de van en naar waarde nog moet invullen in de input type. Daarom geeft hij dus een notice undefined index...
Ik denk dat dit probleem niet op te lossen is...
Ah, even kijken of ik je goed begrijp: je wilt dus met PHP vanuit hetzelfde client-side documentje dat ene AJAX-adres invullen met van/naar-variabelen.

As in, een client vraagt van je server bijvoorbeeld formulier.php op. Zonder enige toeters en bellen, maar gewoon http://website.tld/formulier.php. Je webserver output vervolgens dat <form>-pje wat je ons net hebt laten zien.
Vervolgens moet de client die twee invulvakjes ('van' en 'naar') invullen. En zodra de client het formulier verstuurt moeten die van/naar-variabelen in je Ajax.Updater-functie gepropt worden, zodat het uiteindelijk bij resultaatpc.php uitkomt, right?

Sorry hoor, maar als ik t correct heb, dan heb je de hele grote scheiding tussen client- en serverside scripting niet echt begrepen. Tenzij de client namelijk formulier.php niet opvraagt als: http://website.tld/formulier.php?van=foo&naar=bar, dan zal je PHP dus ook nooit die $_GET['van'] en $_GET['naar'] weten. En dus ook nooit outputten.

Wat jij wil is een javascriptoplossing die de twee vars invult bij je Ajax.Updater(), geen PHP-oplossing.

edit:
Overigens kán het wel met een PHP-oplossing: je form laten posten naar foo.php en vervolgens in dat PHP-tje een javascriptje genereren die automagisch je AJAX-request maakt! Maarja, dan is 't hele nut van je AJAX weer weg, want dan submit je alsnog het formulier, iets wat je, lijkt me, niet wil, anders kun je sowieso wel naar resultaatpc.php POST-en :')

[ Voor 11% gewijzigd door Osiris op 10-02-2008 18:15 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:58

crisp

Devver

Pixelated

Osiris schreef op zondag 10 februari 2008 @ 18:05:
[...]
edit:
Overigens kán het wel met een PHP-oplossing: je form laten posten naar foo.php en vervolgens in dat PHP-tje een javascriptje genereren die automagisch je AJAX-request maakt! Maarja, dan is 't hele nut van je AJAX weer weg, want dan submit je alsnog het formulier, iets wat je, lijkt me, niet wil, anders kun je sowieso wel naar resultaatpc.php POST-en :')
Dat is wel waar je in eerste instantie mee moet beginnen als je je Ajax functionaliteit unobtrusive wilt toepassen ;)

Intentionally left blank


  • Osiris
  • Registratie: Januari 2000
  • Niet online
crisp schreef op zondag 10 februari 2008 @ 20:00:
[...]

Dat is wel waar je in eerste instantie mee moet beginnen als je je Ajax functionaliteit unobtrusive wilt toepassen ;)
HTML:
1
<form onsubmit="jadiejada(); return false;" action="fallback-scriptje.php" method="post">

*O*

Toch? :X :$

[ Voor 6% gewijzigd door Osiris op 10-02-2008 20:07 ]


Verwijderd

Osiris schreef op zondag 10 februari 2008 @ 20:03:
[...]

HTML:
1
<form onsubmit="jadiejada(); return false;" blabla>

*O*

Toch? :X :$
Crisp bedoelt eerder dat als je iets met Javascript of Ajax wilt laten werken, je het eigenlijk zo moet maken dat het zonder Javascript ook werkt. Ajax betekent dus altijd extra werk om extra functionaliteit c.q. gebruikersgemak te bieden.

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Verwijderd schreef op zondag 10 februari 2008 @ 20:06:
[...]

Crisp bedoelt eerder dat als je iets met Javascript of Ajax wilt laten werken, je het eigenlijk zo moet maken dat het zonder Javascript ook werkt. Ajax betekent dus altijd extra werk om extra functionaliteit c.q. gebruikersgemakt te bieden.
Jaja, dat snap ik. En bij die 'blabla' @ code-snippet moet dan ook een normale action naar een of ander script staan die 't allemaal verder probleemloos afhandelt mocht javascript uit staan. Maar daarom moet je nog wel false returnen, anders doet ie toch beide? :+ 'blabla' was verder niet echt duidelijk nee, toegegeven :X

edit:
Zooo :Y)

Verwijderd

Precies ja :)

Verwijderd

Topicstarter
Ik kan door een simpel iframe bereiken wat ik wil maar dat is mijn bedoeling niet. Ik wil het juist iets geavanceerder gaan doen. En om me dan te beoordelen op 2 regels code lijkt me niet echt eerlijk. Ik werk altijd met stylesheets voor opmaak, alleen is dit hele scriptje gewoon een test. Het is niet iets dat straks gebruikt gaat worden door mij of bezoekers. Het is een experiment en als me dit gelukt is gaat het de prullenbak in en komt er weer iets nieuws. Daarom ben ik hier niet bezig met dingen als opmaak en beveiliging.

Ik begrijp het verschil tussen client en server side wel maar hoopte dat ik d.m.v. een ISSET toch iets met die variabelen kon doen. Ik werk normaal nooit met javascript maar aangezien ik AJAX nodig heb ontkom ik er nu niet aan en inderdaad van dat gebied heb ik nog weinig kaas gegeten.

Verwijderd

Verwijderd schreef op zondag 10 februari 2008 @ 23:00:
Ik begrijp het verschil tussen client en server side wel maar hoopte dat ik d.m.v. een ISSET toch iets met die variabelen kon doen. Ik werk normaal nooit met javascript maar aangezien ik AJAX nodig heb ontkom ik er nu niet aan en inderdaad van dat gebied heb ik nog weinig kaas gegeten.
Dit heeft niets te maken met JS of AJAX en dergelijke, die code is (wellicht) gewoon goed. De syntax raakt alleen verkloot door je PHP-error. Er zit iets mis in je PHP-code wat deze notice geeft, en dat is nu toevallig te zien in een JS-error. Dat neemt niet weg dat dit probleem in de PHP zit. Je begrip van client en server side is dus toch een beetje verkeerd denk ik :)

Een ander script gebruiken, frames of whatever lost dit probleem dus niet op. Bij je volgende experiment heb je weer exact hetzelfde probleem, omdat je het dan weer fout doet.

De oplossing is dus simpelweg kijken met isset() of je variabele bestaat, en zo ja de waarde tonen en anders niet. Daarmee los je dit probleem op (en als je dan toch bezig bent kun je net zo goed even de url encoden, da's ook 1 functie ;)).

[ Voor 44% gewijzigd door Verwijderd op 11-02-2008 10:01 ]


  • Crayne
  • Registratie: Januari 2002
  • Laatst online: 17-03 13:41

Crayne

Have face, will travel

Je grote probleem is dat je probeert om PHP code te gebruiken waar je JS zou moeten gebruiken. PHP kan niet na het laden van de pagina je inputvelden uitlezen.

Kijk hier eens naar:

JavaScript:
1
2
3
4
5
6
7
8
9
function dosubmit( ) {

    var van = document.getElementById('van').value;
    var naar = document.getElementById('naar').value;

    new Ajax.Updater('result', '../kaart/resultaatpc.php?van=' + van + '&naar=' + naar, { method: 'post', parameters: $('myform').serialize() } );
    $('myform').reset();

}

Mijn Library Thing catalogus


Verwijderd

Topicstarter
Thnx voor de uitleg, nu snap ik het eindelijk! Ik ga eens even knutselen, denk dat het nu wel moet werken.

edit:
Het werkt!
De pagina wordt niet vernieuwd en een deel van de inhoud van de resultaat pagina wordt getoond!

Stomme is alleen dat de javascript code op de resultaat pagina niet wordt uitgevoerd nu. Kan dat hier iets mee te maken hebben?

[ Voor 55% gewijzigd door Verwijderd op 11-02-2008 18:37 ]


  • H004
  • Registratie: Maart 2006
  • Laatst online: 28-05 19:55
Ja, JS wordt uitgevoerd als de pagina (DOM) geladen is. Als er nieuwe content (dmv bv AJAX) aan de pagina wordt toegevoegd is deze content uiteraard niet aangesproken tijdens het laden van de DOM. Onload etc. werkt dus niet voor nieuwe Javascript op de pagina. Je zal het dus nog een keer moeten aanspreken...

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

H004 schreef op maandag 11 februari 2008 @ 18:43:
Ja, JS wordt uitgevoerd als de pagina (DOM) geladen is. Als er nieuwe content (dmv bv AJAX) aan de pagina wordt toegevoegd is deze content uiteraard niet aangesproken tijdens het laden van de DOM. Onload etc. werkt dus niet voor nieuwe Javascript op de pagina. Je zal het dus nog een keer moeten aanspreken...
óf je geeft een EvalScripts (of de prototype equivalent daarvan, EvalScripts == Mootools) parameter aan de ajax.updater functie ;)

Stop uploading passwords to Github!


  • H004
  • Registratie: Maart 2006
  • Laatst online: 28-05 19:55
óf we schrijven gewoon zelf zijn hele webapplicatie! :D Ik gaf een voorzet aan de TS...

Verwijderd

Topicstarter
Mocht het een troost zijn, ik steek hier wel heel veel van op! Ik zit ook niet maar te wachten tot iemand me het antwoord komt geven. Zo heb ik vandaag de documentatie van protoytype javascript framework doorgenomen (of ik het begrijp is een ander verhaal).

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-09 20:59
Verwijderd schreef op maandag 11 februari 2008 @ 20:47:
Mocht het een troost zijn, ik steek hier wel heel veel van op! Ik zit ook niet maar te wachten tot iemand me het antwoord komt geven. Zo heb ik vandaag de documentatie van protoytype javascript framework doorgenomen (of ik het begrijp is een ander verhaal).
Waarom schrijf je niet zelf iets simpels in javascript i.p.v. direct libraries zoals prototype te gebruiken? Dan leer je de taal volgens mij veel sneller en snap je ook wat je met de libraries kan doen en hoe je ze het beste kan gebruiken.

Een XMLHttpRequest (ajax) maken is echt niet zo spannend dat je daarvoor een of ander code library voor nodig hebt.

Daarbij snap ik dat je er veel van opsteekt.. Maar je steekt er waarschijnlijk nog meer van op als je de basiskennis van de talen die je gebruikt (PHP/JavaScript/HTML etc.) goed begrijpt.

[ Voor 11% gewijzigd door Borizz op 11-02-2008 23:35 ]

If I can't fix it, it ain't broken.


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:58

crisp

Devver

Pixelated

SchizoDuckie schreef op maandag 11 februari 2008 @ 19:46:
[...]


óf je geeft een EvalScripts (of de prototype equivalent daarvan, EvalScripts == Mootools) parameter aan de ajax.updater functie ;)
Als je dat nodig hebt dan is je applicatie meestal niet goed opgezet. Applicatie-logica dien je niet te mixen met je markup ;)

Verder nog 1 tip: als je URL's samenstelt vanuit form-elementen gebruik dan aub encodeURIComponent()

Intentionally left blank


Verwijderd

Topicstarter
Ik begrijp niet helemaal hoe evalScripts de oplossing voor mijn probleem kan zijn?

Ik heb de regel evalScripts: true toegevoegd:
JavaScript:
1
new Ajax.Updater('result', 'resultaatpc.php?van=' + van + '&naar=' + naar, { method: 'post', parameters: $('myform').serialize(), evalScripts: true } ); 


Verder heb ik de functienamen omgedraaid als volgt:
JavaScript:
1
 initialize = function() { 

En heb ik de javascript code van resultaat.php toegevoegd in de invoer pagina.

Dat was wat ik kon terugvinden in de documentatie :S
Pagina: 1