1. Royal Webbers Member

    $_POST leeg na submit

    Topic geplaatst op: 20-06-2012 om 14:41

    Ik heb een formulier in PHP die gebruik maakt van $_POST om de gegevens uit de inputvelden te halen, echter vaak wanneer ik even wacht met het submitten, blijkt dat de $_POST helemaal leeg is. Als ik het formulier snel invul werkt het wel gewoon en op mijn VPS werkt het soortgelijke formulier ook gewoon. Is er iets mis met de instellingen op mijn reseller server? Heeft iemand anders hier ervaring mee?

    BVD.

  2. Juan Gabriel Barrientos De Reus Member
    Reactie geplaatst op: 20-06-2012 om 14:53

    Weet je zeker dat je bij je form
    <form action="jescript.php" method="post" />
    hebt gebruikt? het is namelijk makkelijk om dit te vergissen met de "get" methode.

    Vond u dit antwoord nuttig?

  3. zeromechanic Member
    Reactie geplaatst op: 20-06-2012 om 22:15

    Gebruik je toevallig ergens redirects??
    zij het in htaccess of in je scripts zelf
    of url rewrites?

    RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} ^www\\.(.+)$ [NC]
    RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
    dit is een goede.

    Vond u dit antwoord nuttig?

  4. Royal Webbers Member
    Reactie geplaatst op: 20-06-2012 om 22:47

    @juan heb inderdaad method post
    @zeromechanic ik gebruik inderdaad rewrites in htaccess voor Joomla, in de action van het formulier verwijs ik echter wel gewoon naar de harde link waar het formulier staat. Deze rewrites gebruik ik nu:

    RewriteCond %{REQUEST_URI} ^(/component/option,com) [NC,OR]
    RewriteCond %{REQUEST_URI} (/|\\.htm|\\.php|\\.html|/[^.]*)$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (.*) index.php

    RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\\%3D) [OR]
    RewriteCond %{QUERY_STRING} base64_encode.*\\(.*\\) [OR]
    RewriteCond %{QUERY_STRING} (\\|%3E) [NC,OR]
    RewriteCond %{QUERY_STRING} GLOBALS(=|\\[|\\%[0-9A-Z]{0,2}) [OR]
    RewriteCond %{QUERY_STRING} _REQUEST(=|\\[|\\%[0-9A-Z]{0,2})
    RewriteRule ^(.*)$ index.php [F,L]

    Nogmaals het is heel erg wisselvallig, wat ik tot nu toe merk is dat het verzenden in één keer wel kan, maar als hij na php validatie weer het formulier moet verzenden leegt hij de $_POST, vaak na een korte tijd wachten.
    Bedankt voor jullie reacties!

    Vond u dit antwoord nuttig?

  5. zeromechanic Member
    Reactie geplaatst op: 20-06-2012 om 23:26

    Wat ik nu begrijp is dat als je het formulier in 1x verstuur het wel goed gaat, maar na validatie niet de $_POST door stuurt.

    ff brainstorm

    $_POST->valideren->$_POST doorsturen

    strookt bij niet helemaal
    ga je dan de $_POST zelf aanpassen??

    $_POST ->
    array laten valideren ->
    gevalideerde waarden in nieuwe array plaatsten ->
    die dan doorsturen

    bv :
    function inkomend($_POST) {
    validatie regels, evt met foreach
    resultaat hiervan :
    stuur naar uitvoeren($gevalideerd)

    }
    function uitvoeren($gevalideerd) {
    database inserts oid
    }

    Vond u dit antwoord nuttig?

  6. Royal Webbers Member
    Reactie geplaatst op: 21-06-2012 om 11:06

    Ja dat klopt, alleen dan is het rare er aan dat het vaak nog wel gewoon lukt, alleen soms ineens de $_POST leegt. Voorbeeld van de structuur van mijn code:

    if(isset($_POST['zenden']))
    {
    $bedrijf = check_input($_POST['bedrijf']);
    // Controleer de vars dmv regexp e.d.
    }

    en het form ziet er zo uit:

    Vond u dit antwoord nuttig?

  7. Royal Webbers Member
    Reactie geplaatst op: 21-06-2012 om 11:07

    Ho mn code is eruit, maar het komt erop neer dat ik in het formulier in de value na validatie de vars echo. Kan het zijn dat ik zo de $_POST aanpas?

    Vond u dit antwoord nuttig?

  8. zeromechanic Member
    Reactie geplaatst op: 23-06-2012 om 23:36

    Ik zou het eens proberen om een andere array te laten parsen.

    als je zonder validatie doet gaat het goed. toch?
    dus op eenof andere manier gaat er iets mis met je $_POST

    laat je check een andere array aanmaken, en laat deze dan returnen
    vul dan daarmee je formulier

    Vond u dit antwoord nuttig?

  9. zeromechanic Member
    Reactie geplaatst op: 23-06-2012 om 23:37

    Ik zou het eens proberen om een andere array te laten parsen.

    als je zonder validatie doet gaat het goed. toch?
    dus op eenof andere manier gaat er iets mis met je $_POST

    laat je check een andere array aanmaken, en laat deze dan returnen
    vul dan daarmee je formulier

    < input....value = " / " >

    probeer anders ook eens een print_r($_POST); VOOR en NA je check
    als daar verschil in zit, weet je genoeg.

    Vond u dit antwoord nuttig?

  10. zeromechanic Member
    Reactie geplaatst op: 23-06-2012 om 23:38

    Potvr&^%#%#^#%#%#

    weer de code weg.
    tis toch ongekend.

    Vond u dit antwoord nuttig?

  11. zeromechanic Member
    Reactie geplaatst op: 23-06-2012 om 23:41

    Ik zou het eens proberen om een andere array te laten parsen.

    als je zonder validatie doet gaat het goed. toch?
    dus op eenof andere manier gaat er iets mis met je $_POST

    laat je check een andere array aanmaken, en laat deze dan returnen
    vul dan daarmee je formulier

    < input....value = "< ?php echo response['inputnaam']; ? > / " >

    probeer anders ook eens een print_r($_POST); VOOR en NA je check
    als daar verschil in zit, weet je genoeg.

    Vond u dit antwoord nuttig?

  12. Royal Webbers Member
    Reactie geplaatst op: 24-06-2012 om 12:15

    Ik had inderdaad al een print_r bovenaan de code gezet en als ik dan soms op submit klik, dan is deze hele array al leeg nog voordat er iets mee gebeurd.. Ik denk zelf aan verkeerde server instellingen, heb de betreffende website naar onze eigen VPS verplaatst (die wel up-to-date is in tegenstelling tot de reseller server) en tot nog toe geen verdwijnende $_POST ! Bedankt voor je reacties in ieder geval!

    Vond u dit antwoord nuttig?