Temos pavadinimas: WordPress, Shopify ir PHPFusion programuotojų bendruomenė :: User settings upload
Parašė rokasbalsys· 2014 Kov. 31 11:03:23
#1
Tai va yra tokia problema, vartotojas gali savo duomenis pakeisti, tai yra varda, emaila, pavarde, tik yra tokia problema:
<?php
if(isset($_GET['success']) === true && empty($_GET['success']) === true){
echo 'your details have been updated!';
} else {
if(empty($_POST) === false && empty($errors) === true) {
$update_data = array(
'first_name' => $_POST['first_name'],
'last_name' => $_POST['last_name'],
'email' => $_POST['email']
);
update_user($update_data);
header('Location: settings.php?success');
exit();
} else if (empty($errors) === false) {
echo output_errors($errors);
}
?>
kur yra
$update_data = array(
'first_name' => $_POST['first_name'],
'last_name' => $_POST['last_name'],
'email' => $_POST['email']
);
man pakeicia tik emeila, o jeigu koda parasyciau sitaip:
$update_data = array(
'email' => $_POST['email']
'first_name' => $_POST['first_name'],
'last_name' => $_POST['last_name'],
);
pakeicia tik last_name. Tai yra tik paskutini array duomeni pakeicia.
mano funkcija:
function update_user($update_data) {
global $session_user_id;
$update = array();
array_walk($update_data, 'array_sanitize');
foreach($update_data as $field=>$data); {
$update[] = '`' . $field . '` = \'' . $data . '\'';
}
mysql_query("UPDATE `users` SET " . implode(', ', $update) . " WHERE `USER_id` = $session_user_id");
}
kas cia gali buti per problema ?
Redagavo rokasbalsys· 2014 Kov. 31 11:03:15
Parašė Inkaras· 2014 Kov. 31 20:03:23
#2
Visų pirma, patariu atsikratyti mysql_* , geriau naudok mysqli arba PDO.
Antra, tavo klaida kode:
foreach($update_data as $field=>$data); {
padėjai
; po foreach ciklo, ištrinus simbolį ";" (be kabučių) viskas veikia.
Ir beje, bent jau man, array_walk rodo klaidą:
Warning: array_walk() expects parameter 2 to be a valid callback, function 'array_sanitize' not found or invalid function name
Redagavo Inkaras· 2014 Kov. 31 20:03:12
Parašė rokasbalsys· 2014 Bal. 1 00:04:01
#3
Aciu! ilgai ieskojau klaidos ir niekaip negalejau rasti. man nemeta erroro. zodzoi, kodel naudoti mysqli arba pdo? pora argumentu
Parašė Pakartoti slaptažodį· 2014 Bal. 1 15:04:48
#4
* saugumas
* lankstumas
* naujesnis standartas
* tolimesnis palaikymas
Parašė Inkaras· 2014 Bal. 1 22:04:13
#5
Didesnė apsauga nuo SQL injekcijų (jeigu bindinsi parametrus, ir nepaliksi skylių kode dėl savo kaltės).
Palaiko
MySQL 5.1+ funkcijas.
mysql_* nebebus vystoma, ir planuojama jos ateityje atsisakyti.
Šiek tiek daugiau informacijos:
http://php.net/manual/en/mysqlin...oosing.php
Parašė rokasbalsys· 2014 Bal. 1 23:04:31
#6
Gerai, o dabar kaip geriausia ir is kur pradeti mokintis PDO ?