jQuery post functie in combinatie met CodeIgniter

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP Freak

PHP Freak

06/02/2011 14:59:49
Quote Anchor link
Beste medePHPers,

Hiervoor werkte ik binnen CodeIgniter altijd met de jQuery.get functie. Nu wil ik gebruik maken van de jQuery.post functie omdat ik niet meer gelimiteerd wil zijn door de parameters die ik in een CodeIgniter URL mee kan geven.
Ik krijg het echter niet voor elkaar om POST data te ontvangen aan de serverkant. Ik begrijp hoe de functie gebruikt moet worden en hij werkt wanneer ik hem buiten CodeIgniter om probeer. Wanneer ik echter in de request zoiets als mijnwebsite.nl/controller/function opneem, dan is de $_POST array in de betreffende function helemaal leeg... Ik vroeg me dus af of iemand van jullie weet of dit iets te maken heeft met de routing module van CodeIgniter...

Ik hoop dat iemand hiermee raad weet, ik zou er in ieder geval enorm mee geholpen zijn!
 
PHP hulp

PHP hulp

22/11/2024 12:11:58
 
Jelmer -

Jelmer -

06/02/2011 15:05:54
Quote Anchor link
Volgens http://codeigniter.com/user_guide/libraries/input.html
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$x
= $this->input->post('iets');
?>

maar ik vind het vreemd dat $_POST leeg is.

Weet je zeker dat je niet ergens onderweg geredirect wordt? Want dan is de kans vrij groot dat de browser een GET request doet naar de nieuwe locatie, en dan is $_POST idd laag.
 
PHP Freak

PHP Freak

06/02/2011 15:17:21
Quote Anchor link
Het enige wat ik me zou kunnen bedenken is dat ik in mijn routing file de URL reroute naar een andere locatie. Hier gebruikt Codeigniter echter geen nieuwe request voor, aangezien de bezochte URL in de adresbalk blijft staan en tevens op te vragen is aan de CodeIgniter URI-helper.

Het is overigens zo dat in de index.php van CodeIgniter de POST variabele nog wel doorkomt. En in mijn functie levert zelfs het gebruik van $this->input->post('var') niets op...

Waarschijnlijk kom ik er uiteindelijk wel uit maar ik hoop dat iemand een concrete tip heeft, waardoor ik een stuk sneller weet waar te zoeken.

Toevoeging op 06/02/2011 15:53:36:

Ok, ik ben er uit. Aangezien ik CodeIgniter 2.0 gebruik, waar CSRF beveiliging is ingebouwd gaat het mis op dit punt. Dit gebeurt in de _sanitize_globals() van de Input class. Als oplossing zet ik de CSRF validatie uit in de controller die mijn AJAX requests afhandelt. Tenzij iemand een beter idee heeft?

Toevoeging op 06/02/2011 17:06:16:

Ik heb nog eens even nagedacht en een betere oplossing bedacht... aangezien via mijn Ajax requests vaak userdata worden meegezonden, is het uitzetten van de CSRF validatie totaal onwenselijk. Ik heb dus in het dataobject dat als parameter wordt meegegeven aan jQuery.post het volgende toegevoegd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
data['{$this->CI->security->csrf_token_name}'] = '{$this->CI->security->csrf_hash}';
?>


Op die manier wordt de waarde van de csrf token netjes meegestuurd als POST variabele en aangezien de csrf cookie automatisch door jQuery wordt meegestuurd ontstaat zo een volledig werkende csrf controle :)

In ieder geval bedankt voor de hulp!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.