###前提
現在課題として、会員登録機能を作成しています。
ID&pass入力→(正しい場合)→マイページ
●mysqlバージョン 5.6.41
●PHPバージョン 5.4.45
●実施サーバー : さくらのvps
●FTP : WINSCP
###該当のソースコード
php
1 2 3 4 ログインボタンが押された場合 5 if (isset($_POST["login"])) { 6// 1. ユーザIDの入力チェック 7 if (empty($_POST["userid"])) { // emptyは値が空のとき 8 $errorMessage = '※UserIDまたはPasswordが間違っています。'; 9 } else if (empty($_POST["password"])) { 10 $errorMessage = '※UserIDまたはPasswordが間違っています。'; 11 } else if (!preg_match("/^[A-Za-z0-9]+$/u", $_POST["userid"])){ 12 $errorMessage = '※正規表現外'; 13 } else if (!preg_match("/^[A-Za-z0-9]+$/u", $_POST["password"])){ 14 $errorMessage = '※正規表現外'; 15 } else if (!preg_match("/^.{4,10}$/",$_POST["userid"])){ 16 $errorMessage = '※桁数上'; 17 } else if (!preg_match("/^.{4,10}$/",$_POST["password"])){ 18 $errorMessage = '※桁数上'; 19 20 21 }else{ 22 if (!empty($_POST["userid"]) && !empty($_POST["password"])) { 23 // 入力したユーザIDを格納 24 $userid = $_POST["userid"]; 25 26 27 28 // 2. ユーザIDとパスワードが入力されていたら認証する 29 $dsn = sprintf('mysql:host=%s;dbname=%s;charset=utf8',$db['host'], $db['dbname']); 30 31 // 3. エラー処理 32 try { 33 $pdo = new PDO($dsn,$db['user'],$db['pass'],array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION)); 34 35 $stmt = $pdo->prepare('SELECT * FROM userdata WHERE name = ?'); 36 $stmt->execute(array($userid)); 37 38 $password = $_POST["password"]; 39 40 if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 41 if ( $password == $row['password']) { 42 session_regenerate_id(true); 43 44 //正常に叩かれた場合、SQL実施 45 $sql = "UPDATE userdata SET sdate='$date' WHERE id='1'"; 46 $result = $pdo->query($sql); 47 48 49 // 入力したIDのユーザー名を取得 50 $id = $row['id']; 51 $sql = "SELECT * FROM userdata WHERE id = $id"; //入力したIDからユーザー名を取得 52 $stmt = $pdo->query($sql); 53 foreach ($stmt as $row) { 54 $row['name']; // ユーザー名 55 } 56 $_SESSION["NAME"] = $row['name']; 57 header("location: my.php"); 58 exit(); // 処理終了 59 } else { 60 // 認証失敗 61 $errorMessage = '※UserIDまたはPasswordが間違っています。'; 62 } 63 } else { 64 // 4. 認証成功なら、セッションIDを新規に発行する 65 $errorMessage = '※該当データなしUserIDまたはPasswordが間違っています。'; 66 } 67 } catch (PDOException $e) { 68 69 $errorMessage = header("Location: 500.php"); 70 71 } 72 } 73 74 } 75 var_dump($errorMessage); 76 77
###発生している問題
●SQLSTATE[HY000] [2002] No such file or directory 37
html
1$pdo = new PDO($dsn,$db['user'],$db['pass'],array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
###質問点
●質問1:接続拒否の解決策がわかりません。
###試したこと
PDOでのDB接続は可能だと思われます
html
1try { 2 $pdo = new PDO($dsn, $user, $password); 3 echo '成功'; 4} catch (PDOException $e) { 5 echo 'Connection failed: ' . $e->getMessage(); 6}
回答1件
あなたの回答
tips
プレビュー