###前提
現在課題として、会員登録機能を作成しています。
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 }else{ 21 if (!empty($_POST["userid"]) && !empty($_POST["password"])) { 22 // 入力したユーザIDを格納 23 $userid = $_POST["userid"]; 24 25 26 27 // 2. ユーザIDとパスワードが入力されていたら認証する 28 $dsn = sprintf('mysql:host=%s;dbname=%s;charset=utf8',$db['host'], $db['dbname']); 29 30 // 3. エラー処理 31 try { 32 $pdo = new PDO($dsn,$db['user'],$db['pass'],array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION)); 33 34 $stmt = $pdo->prepare('SELECT * FROM userdata WHERE name = ?'); 35 $stmt->execute(array($userid)); 36 37 $password = $_POST["password"]; 38 39 if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 40 if ( $password == $row['password']) { 41 session_regenerate_id(true); 42 43 //正常に叩かれた場合、SQL実施 44 $sql = "UPDATE userdata SET sdate='$date' WHERE id='1'"; 45 $result = $pdo->query($sql); 46 47 48 // 入力したIDのユーザー名を取得 49 $id = $row['id']; 50 $sql = "SELECT * FROM userdata WHERE id = $id"; 51 //入力したIDからユーザー名を取得 52 $stmt = $pdo->query($sql); 53 foreach ($stmt as $row) {$row['name']; } 54 $_SESSION["NAME"] = $row['name'] 55 header("location: my.php"); 56 exit(); // 処理終了 57 } else { 58 // 認証失敗 59 $errorMessage = '※UserIDまたはPasswordが間違っています。'; 60 } 61 } else { 62 // 4. 認証成功なら、セッションIDを新規に発行する 63 $errorMessage = '※該当データなしUserIDまたはPasswordが間違っています。'; 64 } 65 } catch (PDOException $e) { 66 $errorMessage = header("Location: 500.php"); 67 68 } 69 } 70 71 } 72 var_dump($errorMessage); 73 74
###発生している問題
上記のコードが、ローカルの場合上手くいくのですが
サーバー上(vps)で実施した際にcatch (PDOException $e)
ここの処理で引っかかってしまいます
###質問点
●質問1:
ローカル上で正常に動き、サーバー上で処理がうまくいかないのは何故でしょうか?
●質問2:
この場合、どこのコードをどの様に修正すればよろしいのでしょうか?
回答3件
あなたの回答
tips
プレビュー