Anonymní profil peter – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil peter – Programujte.comAnonymní profil peter – Programujte.com

 

Příspěvky odeslané z IP adresy 2001:718:2601:26c:c576:af...–

peter
PHP › JQuery ajax + php
11. 2. 2016   #208543

Ty na to jdes nejak slozite a pritom to nechavas otevrene k nabourani hackerum amaterum :)
Php kod

function registrovat()
{		
if (count($_POST)>0)
	{	// key => default value
	$keys = array(
		'email' => '',
		'heslo' => '',
		'hesloZnovu' => '',
		'jmeno' => '',
		'prijmeni' => '',
		'telefon' => '',
		'ulice' => '',
		'mesto' => '',
		'psc' => '',
		'captcha' => ''
		);
	$data = array();
	// read data
	foreach($keys as $key=>$value)
		{$data[$key] = isset($_POST[$key]) ? $_POST[$key] : $value;}
	// write data
	// !!! tady by mela byt kontrola dat, nez to zapises
	$spravceUzivatelu = new SpravceUzivatelu();
	$spravceUzivatelu->registruj($data); // nevim, proc tu nepredavas celou array
	// return data
	unset($data['heslo']);
	unset($data['hesloZnovu']);
	unset($data['captcha']);
	return json_encode($data);
	}

return json_encode($array());}

JS

$.ajax({
            type: "POST",
            url: "wormsfarm.localhost.com/ajax/registrovat/",
            data: {
                email: email,	// ty uvozovky tam byt nemusi, kdyz pouzijes jen a-z znaky
                heslo: heslo,
                hesloZnovu: hesloznovu, // !musi byt stejne nazvy $_POST['hesloZnovu']
                jmeno: jmeno,
                prijmeni: prijmeni,
                telefon: telefon,
                ulice: ulice,
                mesto: mesto,
                psc: psc,
                captcha: captcha
            },

console.log(data); - ja to radeji pisi do textarea.value nebo div.innerHTML, console log nemusi byt podporovany nebo to muzes mit vypnute, ale to je na tobe

return v PHP dava navratovou hodnotu. Co s ni delas dal? Prijde mi, ze ti tu znacka cast kodu schazi. Pokud je tam return, tak by zapis mel vypadat takto
echo registrovat();

A podle ceho poznas, ze probehla uspesna registrace? V tom mem upravenem kodu to vrati vzdy bud prazdna data (js dictionary {}) a nebo puvodni data bez hesel a captcha. Ale nikde neni indikator true, false, ze registrace probehla v poradku. 

//bych tu ocekaval
if (...) // kontrola count(post)
  {
  // kontrola udaju
  if (kontrola_ok) 
    {
    $spravceUzivatelu = new SpravceUzivatelu();
    $bool = $spravceUzivatelu->registruj($data);
    if ($bool) return json_encode($data);
    }
  }
return json_encode(array());

v JS pak
 success: function (data) {
	console.log(data);
	data = decode(data);
	if (data.jmeno) {alert('registrace ok');} // jestlize existuje jmeno v data, pak byl $bool v php true; v opacnem pripade je tam prazdna {} a jmeno tam neexistuje
	else {alert('registrace chyba');}
        
peter
C / C++ › Čistější zápis úseku kódu -…
11. 2. 2016   #208540

JoDiK - Je spravne, pri testovani uvadet s cim to porovnavas. Je to dulezite pro prehlednost pro dalsiho programatora. Ze to funguje bez toho je jina vec. Az budes cist cizi kod, jiste budes rad, kdyz odlisis integer od booleanu prave takovouto malickosti.

peter
C / C++ › Čistější zápis úseku kódu -…
11. 2. 2016   #208533

Pokud se ma nejaky if opakovat v cyklu nekolikrat, je dobre zvazit, jestli by neslo priradit primo funkci promenne. V JS by to vypadalo asi takhle. V cpp bohuzel nevim, jak se to pise.

<script>
function a() {alert(123);}
function b() {alert(456);}
var func = neco==true ? window.a : window.b;
func();
</script>

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý