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');}