jQuery problem(otázka)

Programovacie jazyky, rady, poradňa...
mnichovcan
Medium Expert
Medium Expert
Príspevky: 97
Registrovaný: 17 mar 2011, 23:03

jQuery problem(otázka)

Príspevok od používateľa mnichovcan »

Ahojte tak zas mám problém alebo skôr otázku.

Mám formulár z id=rform.

Script

Kód: Vybrať všetko

$(function() {



$("#rform").submit(function(){

$.post('login/log', $( "#rform" ).serialize() ,function(data){

 if (data.st==0){
 $("#dialog").html(data.msg);
 $( "#dialog" ).show();
 }

},"json");


return false;
});

  });

A php kod je to v CodeIgniter

Kód: Vybrať všetko

  function log(){
           


 $this->form_validation->set_rules('meno', 'Meno', 'required');
 $this->form_validation->set_rules('heslo', 'Heslo', 'required');

		if ($this->form_validation->run() === TRUE)
		{
			
		}
		else
		{
			 $data['msg'] = validation_errors();
			 $data['st'] = 0;
              
           echo json_encode($data);
        
			
		}

	
 }
Moja otázka znie ako to spraviť tak aby ked si niekto pozrie zdrojový kod javascriptu a uvidí tam "login/log" a zadá to do url aby ho tam nepresmerovalo alebo ako to nejako skryť. Skúšal som funkciu log zadat ako privátnu ale potom to nejde. Skúšal som to v tom scripte volat do index funkcie ktorá len vykresluje stránku a v tom indexe som skúšal volat tú funkciu log() ale nešlo to ani tak. Skúšal som tam dávať nejaké podmienky že kým nieje odoslaný formular ale ani tak to nešlo potom. To čo som sem dal je funkčne ale dá sa pristupovať k tej funkcii z url. Potom tam vypisuje len "msg: a st:" tie 2 prázdne array.
*****HERO*****
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2446
Registrovaný: 08 máj 2006, 1:34

Re: jQuery problem(otázka)

Príspevok od používateľa *****HERO***** »

ved kontroluj ci bol odoslany formular, pripadne ci je to POST request, inak to niekam presmeruj, tam nema co neist
mnichovcan
Medium Expert
Medium Expert
Príspevky: 97
Registrovaný: 17 mar 2011, 23:03

Re: jQuery problem(otázka)

Príspevok od používateľa mnichovcan »

No vyriešil som to

Kód: Vybrať všetko

 if(empty($data['msg']) OR ($data['st'])){ redirect('index'); }  vo funkcii log()
Mám ale ďalšiu otázku ako by ste riešili niečo taketo .

Sú 2 hráči 1hráč urobí akciu to sa zapíše do DB pomocou ajax a hned chcem aby sa to druhému hráčovi ukázalo. Bez refreshu stránky. A bez toho aby vykonal nejakú akciu.
Jediné čo ma napadlo je spraviť niečo ako gameloop pomocou while v JS ktoré bude neustále pristupovať k DB a zisťovať či je ovplyvnení konkrétny riadok. Ale to asi nieje najlepšie riešenie.

Viem o Node.js ale do toho sa vôbec nevyznám a na to asi obyčajný webhosting nestačí.

Budem rád ak napíšete vaše názory,návrhy. :)
awtt
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1234
Registrovaný: 01 nov 2006, 19:37
Bydlisko: San Francisco
Kontaktovať používateľa:

Re: jQuery problem(otázka)

Príspevok od používateľa awtt »

pozri websockety ked nechces ten loop
na node.js je velmi dobra kniznica: http://socket.io/

na ten formular vyzsie ak chces mat naozaj istotu tak tam pridaj este csrf token, vacsina frameworkov ma nato uz zabudovanu funkcionalitu, myslim ze aj CI: http://ellislab.com/codeigniter%20/user ... urity.html
S-player
Light Star
Light Star
Príspevky: 277
Registrovaný: 23 júl 2011, 22:30

Re: jQuery problem(otázka)

Príspevok od používateľa S-player »

Už sa to tu riešilo. Nepotrebuješ to kontrolovať v loope stačí ti to nahodiť do intervalu http://www.w3schools.com/jsref/met_win_setinterval.asp (OK, interval je tiež loop kedže sa daná akcia opakuje každých X milisekúnd no nejde o žiaden klasický cyklus typu for/while).

Prípadne máš na výber už vyššie spomínané sockety a tie môžeš použiť aj v .PHP napríklad za pomoci knižnice Ratchet (Čo je asi naj alternatíva). O tom sa tu tiež písalo a "pcsiete" nato dokonca postol príklad.
Napísať odpoveď