/** * 执行自定义sql * @param unknown $sql * @return unknown */ public function execute($sql) { $dbh = $this->_db->prepare($sql); $dbh->execute(); $ret = $dbh->fetchAll(); return $ret; }
/** * * @param unknown $user * @param unknown $pwd * @param unknown $DBH * @return found boolean false jos annettua käyttäjää ja salasanaa löydy */ function login($user, $pwd, $DBH) { // !! on suola, jotta kantaan taltioitu eri hashkoodi vaikka salasana olisi tiedossa //kokeile !! ja ilman http://www.danstools.com/md5-hash-generator/ //Tukevampia salauksia hash('sha256', $pwd ) tai hash('sha512', $pwd ) //MD5 on 128 bittinen $hashpwd = hash('md5', $pwd . '!!'); //An array of values with as many elements as there are bound parameters in the //SQL statement being executed. All values are treated as PDO::PARAM_STR $data = array('kayttaja' => $user, 'passu' => $hashpwd); //print_r($data); try { //print_r($data); //echo "Login 1<br />"; $STH = $DBH->prepare("SELECT * FROM 0mrb_users WHERE email=:kayttaja AND\n\t\tpwd = :passu"); $STH->execute($data); $STH->setFetchMode(PDO::FETCH_OBJ); $row = $STH->fetch(); //print_r($row); if ($STH->rowCount() > 0) { //echo "Login 4<br />"; return $row; } else { //echo "Login 5<br />"; return false; } } catch (PDOException $e) { echo "Login DB error."; file_put_contents('log/DBErrors.txt', 'Login: ' . $e->getMessage() . "\n", FILE_APPEND); } }
/** * ユーザ情報を登録する * @param unknown $db */ public function userCreate($db) { try { // 現在日時を取得 $user_date = date('Y-m-d H:i:s'); // SQL文を作成 $sql = 'INSERT INTO user_table (user_id, user_name, user_email, user_password, user_age, user_gender, user_profile, user_profile_photo, user_profile_background, user_date) VALUES (:user_id, :user_name, :user_email, :user_password, :user_age, :user_gender, :user_profile, :user_profile_photo, :user_profile_background, :user_date);'; $prepare = $db->prepare($sql); // SQL文のプレースホルダーに値をバインドする $prepare->bindValue(':user_id', $_SESSION['user_id'], PDO::PARAM_STR); $prepare->bindValue(':user_name', $_SESSION['user_name'], PDO::PARAM_STR); $prepare->bindValue(':user_email', $_SESSION['user_email'], PDO::PARAM_STR); // パスワードをハッシュ化 $prepare->bindValue(':user_password', crypt($_SESSION['user_password']), PDO::PARAM_STR); $prepare->bindValue(':user_age', $_SESSION['user_age'], PDO::PARAM_STR); $prepare->bindValue(':user_gender', $_SESSION['user_gender'], PDO::PARAM_STR); $prepare->bindValue(':user_profile', $_SESSION['user_profile'], PDO::PARAM_STR); $prepare->bindValue(':user_profile_photo', $_SESSION['user_profile_photo'], PDO::PARAM_STR); $prepare->bindValue(':user_profile_background', $_SESSION['user_profile_background'], PDO::PARAM_STR); $prepare->bindValue(':user_date', $user_date, PDO::PARAM_STR); $prepare->execute(); } catch (PDOException $e) { echo 'エラー' . entity_str($e->getMessage()); } }
/** * うついねを取り消すメソッドです * @param unknown $db * @param unknown $login_id * @param unknown $good_post_id */ public function deleteGood($db, $login_id, $good_post_id) { try { // SQL文を作成 $sql = 'UPDATE good_table SET good_delete_flag = 1 WHERE good_post_id = :good_post_id AND good_user_id = :good_user_id'; $prepare = $db->prepare($sql); // SQL文のプレースホルダーに値をバインドする $prepare->bindValue(':good_post_id', intval($good_post_id), PDO::PARAM_INT); $prepare->bindValue(':good_user_id', $login_id, PDO::PARAM_STR); return $prepare->execute(); } catch (PDOException $e) { $errors[] = entity_str($e->getMessage()); } }
/** * ユーザプロフィールを更新する * @param unknown $db * @param unknown $user_id * @param unknown $user_name * @param unknown $user_profile * @return boolean */ public function profileEdit($db, $user_id, $user_name, $user_profile, $user_profile_photo) { try { // SQL文を作成 $sql = 'UPDATE user_table SET user_name = :user_name, user_profile = :user_profile, user_profile_photo = :edit_user_profile_photo WHERE user_id = :user_id AND user_delete_flag = 0'; $prepare = $db->prepare($sql); // SQL文のプレースホルダーに値をバインドする $prepare->bindValue(':user_name', $user_name, PDO::PARAM_STR); $prepare->bindValue(':user_profile', $user_profile, PDO::PARAM_STR); $prepare->bindValue(':user_id', $user_id, PDO::PARAM_STR); $prepare->bindValue(':edit_user_profile_photo', $user_profile_photo, PDO::PARAM_STR); // 成功したときにtrue失敗したときにfalseを返す return $prepare->execute(); } catch (PDOException $e) { $errors[] = entity_str($e->getMessage()); } }
/** * 投稿をDB登録する * @param unknown $db * @param unknown $login_id * @param unknown $color_id * @param unknown $post_body */ public function postCreate($db, $login_id, $color_id, $post_body) { try { // 現在日時を取得 $post_date = date('Y-m-d H:i:s'); // SQL文を作成 $sql = 'INSERT INTO post_table (user_id, color_id, post_body, post_date) VALUES (:user_id, :color_id, :post_body, :post_date);'; $prepare = $db->prepare($sql); $prepare->bindValue(':user_id', $login_id, PDO::PARAM_STR); $prepare->bindValue(':color_id', intval($color_id), PDO::PARAM_INT); $prepare->bindValue(':post_body', $post_body, PDO::PARAM_STR); $prepare->bindValue(':post_date', $post_date, PDO::PARAM_STR); if (!$prepare->execute()) { $errors[] = 'DB登録処理に失敗しました'; } } catch (PDOException $e) { $errors[] = entity_str($e->getMessage()); } }
/** * ユーザIDとパスワードの組み合わせでチェック * @param unknown $db * @param unknown $login_id * @param unknown $login_pass * @return boolean */ public function loginCheck($db, $login_id, $login_pass) { try { // SQL文を作成 $sql = 'SELECT user_id, user_password FROM user_table WHERE user_id = :login_id'; $prepare = $db->prepare($sql); // SQL文のプレースホルダーに値をバインドする $prepare->bindValue(':login_id', $login_id, PDO::PARAM_STR); $prepare->execute(); // 結果セットを取得(引数には戻り値の型を入力) $result = $prepare->fetch(PDO::FETCH_ASSOC); if (count($result) > 0 && crypt($login_pass, $result['user_password']) === $result['user_password']) { return true; } else { return false; } } catch (PDOException $e) { echo 'エラー' . entity_str($e->getMessage()); } }
/** * ユーザーをアンフォローします * @param unknown $db * @param unknown $login_id * @param unknown $follower_user_id */ public function unfollowUser($db, $login_id, $follower_user_id) { try { // SQL文を作成 $sql = 'UPDATE follow_table SET follow_delete_flag = 1 WHERE follow_user_id = :login_id AND follower_user_id = :follower_user_id'; $prepare = $db->prepare($sql); // SQL文のプレースホルダーに値をバインドする $prepare->bindValue(':login_id', $login_id, PDO::PARAM_STR); $prepare->bindValue(':follower_user_id', $follower_user_id, PDO::PARAM_STR); $prepare->execute(); } catch (PDOException $e) { $errors[] = entity_str($e->getMessage()); } }
/** * ユーザ一覧を取得する * @param unknown $db * @param unknown $login_id * @return multitype: */ public function getUserList($db, $login_id, $index = 10) { try { // SQL文を作成 $sql = 'SELECT user_id, user_name, user_profile, user_profile_photo FROM user_table WHERE user_id <> :login_id AND user_delete_flag = 0 ORDER BY user_date DESC LIMIT :index'; $prepare = $db->prepare($sql); // SQL文のプレースホルダーに値をバインドする $prepare->bindValue(':login_id', $login_id, PDO::PARAM_STR); $prepare->bindValue(':index', $index, PDO::PARAM_INT); $prepare->execute(); // 結果セットを取得 $result = $prepare->fetchAll(PDO::FETCH_ASSOC); return $result; } catch (PDOException $e) { $errors[] = entity_str($e->getMessage()); } }