» »

PHP POST težava

PHP POST težava

gufy123 ::

Pozdravljeni

Delam na spletni strani, kjer imam težavo z vnosno formo in procesiranjem le-te.

v php je torej narejen form, ki po submit kliče neko skripto s POST. Ta preverja podatke in če niso OK, bi želel še enkrat sprožiti POST z naslednjim postopkom:

$data = array (
    'AddArticle' => 'aaa', 
    'ArticleTitle' => $title, 
    'ArticleComment' => $comment
    );
$data = http_build_query($data);

$url = "http://localhost:90/aa/AddArticle.php";

$context_options = array(
        'http'=>array(
            'method' => 'POST',
            'header' => "Content-type: application/x-www-form-urlencoded\r\n"
                ."Content-Length: " . strlen($data),
            'content' => $data
        )
    );
$context = stream_context_create($context_options);
$stream = fopen ($url, 'rb', false, $context);



Ugotavljam, da se ta kripta v celoti izvede, ni pa nobenega rezultata. Ne redirekta na AddArticle.php kot bi pričakoval, da bo.

Ali bi lahko bil problem v tem, da se najprej izvede POST, pri procesiranju tega bi želel še enkrat izvesti POST?

lp

DeeJay ::

Zakaj pa ne delaš z AJAX requestom?
Najprej preveriš vnose preko javascript (jquery), če je vse ok pošleš podatke na nov php preko AJAXa in tam še enkrat preveriš poslane podatke.
Če je ok vrneš 1, če ni ok vrneš napako, ki jo preko jquery tudi izpišeš.

gufy123 ::

Ta varjanta se mi zdi bolj elegantna, kot da se je*em z ajay, jquery, validacija tukaj, validacija tam... Na "moj" način imam rešeno vse v paketu, npr. jquery pa še vedno lahko naknadno dodam za kakšno malenkost.

DeeJay ::

PHP vedno laufa server side, se prav se more za vsako akcijo (naprimer POST) zgodit refresh strani, pri AJAXU pa ne rabiš nič refreshat strani.
Ne vem za kak namen to rabiš. Če je to samo zate pol te to verjetno ne bo motilo, če delaš pa za neko splošno uporabno stran, je pa tvoja metoda zastarela.

gufy123 ::

OK. To, da je način zastarel, je dovoljšen razlog, da poskusim ta AJAX način. Imaš mogoče kakšen v redu primer takega načina? Drugače bom pobrskal po netu... Hvala!

DeeJay ::

Na hitro:
https://stackoverflow.com/questions/500...
kokr sm pregledal, bo to čist dovolj za začetek, da ti bo jasno.
Seveda boš mogu v skripti dodat klic do jquery knjižnice.

Sej načeloma ne rabiš delat validacije že takoj z javascriptom, morš pa nujno validirat v drugi PHP skripti, ki jo kliče ajax.... Je pa bl "fensi", če validiraš polje že takoj, ko se uporabnik premakne na drugo vnosno polje.

smacker ::

Ne rabiš ajaxa za tole... POST zadošča da pošlješ podatke iz clienta na server. Potem na serveru jih preveriš in če ustrezajo pokličeš funkcijo (scripto add article zapakiraš v fukcijo) ki podatke shrane v bazo ali karkoli, če ne ustrezajo pa uporabniku prikažeš poročilo o napaki. Pošiljat POST request iz serverja na server je bedarija, če pa lahko direktno kličeš funkcijo:
AddArticle($title, $content)


Drugač pa "lep" vmesnik danes res sproti preverja vnesene podatke. Če zadošča preverjanje pri clientu (torej dolžina gesla, vsebovanje posebnih znakov,...) potem to nardiš z javascriptom. Za sprotne preverbe na strežniku (ali username že obstaja) pa rabiš ajax klic na server. !VEDNO! pa se podatki preverjajo tudi na strežniku, preden izvedeš kakršnokoli akcijo.

blackbfm ::

da je http POST zastarel lahko govorijo ljudje ki ne razumejo kako delujejo zadeve

Če zadošča preverjanje pri clientu (torej dolžina gesla, vsebovanje posebnih znakov,...) potem to nardiš z javascriptom


enostavne stvari lahko še lažje s htmljem

DeeJay ::

blackbfm je izjavil:

da je http POST zastarel lahko govorijo ljudje ki ne razumejo kako delujejo zadeve

Če zadošča preverjanje pri clientu (torej dolžina gesla, vsebovanje posebnih znakov,...) potem to nardiš z javascriptom


enostavne stvari lahko še lažje s htmljem


Kdo je reku da je POST zastarel? sej ajax tud nardi GET ali POST na strežnik, odvisno kaj izbereš.
Zastarela metoda je da delaš vse samo s PHP, ker morš narest najmanj en page refresh več, kar roko na srce danes zgleda zelo lame.

smacker ::

Za en submit narediš en request (refresh), nikoli dveh ;) OP je sicer želel dva, ampak to ni potrebno.

blackbfm ::

Zastarela metoda je da delaš vse samo s PHP, ker morš narest najmanj en page refresh več, kar roko na srce danes zgleda zelo lame.


pri enostavnem obrazscu je vseeno ce ti refresha page.. ni smiselno rinit VSE v ajax

gufy123 ::

DeaJay: hvala! Bom na enem primeru poskusil na ta način.

DeeJay ::

smacker je izjavil:

Za en submit narediš en request (refresh), nikoli dveh ;) OP je sicer želel dva, ampak to ni potrebno.

Kaj pa če pride do napake? Zato sm napisal, da je najmanj en refresh.

blackbfm je izjavil:

Zastarela metoda je da delaš vse samo s PHP, ker morš narest najmanj en page refresh več, kar roko na srce danes zgleda zelo lame.


pri enostavnem obrazscu je vseeno ce ti refresha page.. ni smiselno rinit VSE v ajax


Ja sej zato je pa tolk konfuzno grdih in neuporabnih strani na internetu.
Če delaš neki na novo, pol vsaj nared tko kokr se zagre. Pa vseen, če je to ena mala forma al pa forma s 100 polji.
Stran more bit konsistenčna, če na vsakem obrazcu uporabš drugačno metodo samo medeš uporabnika.

Zgodovina sprememb…

  • spremenil: DeeJay ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

JS frameworks: knockoutJS, angularJS, react, ...

Oddelek: Programiranje
416830 (3675) kuall
»

[php] preverjanje online uporabnikov

Oddelek: Programiranje
261924 (1580) cobrica
»

Download vsebine strani s JS

Oddelek: Izdelava spletišč
472381 (1679) MrBrdo
»

PHP, povezava, _SESSION

Oddelek: Izdelava spletišč
9779 (604) Lion29
»

Pošiljanje podatkov - Ajax (post) v php file

Oddelek: Izdelava spletišč
162472 (2295) Lion29

Več podobnih tem