質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

0回答

902閲覧

実行結果がブラウザによって違ってしまう

toll_tree

総合スコア199

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

2クリップ

投稿2019/04/28 07:17

編集2019/04/29 02:14

以下のコードにつきました、お聞きしたいことがございます。

php

1<?php 2include 'shop_class.php'; 3$shop = new Shop('mysql:host=localhost;dbname=ec_website','root','12345'); 4$success_msg = ''; 5$err = array(); 6 7if(!empty($_POST)){ 8 9 10 $user_name = filter_input(INPUT_POST,'user_name'); 11 $password = filter_input(INPUT_POST,'password'); 12 13 if($user_name){ 14 15 if(mb_strlen($user_name) > 100){ 16 $err[] = 'アカウント作成に失敗しました'; 17 }elseif(mb_strlen($user_name) < 6){ 18 $err[] = 'ユーザー名は6文字以上の文字を入力してください'; 19 20 }elseif(!preg_match("/^[a-zA-Z0-9]+$/",$user_name)){ 21 22 $err[] = 'ユーザー名を半角英数で入力してください'; 23 24 } 25 26 }else{ 27 $err[] = 'ユーザー名を入力してください'; 28 } 29 30 if($password){ 31 32 if(mb_strlen($password) > 100){ 33 $err[] = 'アカウント作成に失敗しました'; 34 }elseif(mb_strlen($password) < 6 ){ 35 $err[] = 'パスワードは6文字以上の文字を入力してください'; 36 }elseif(!preg_match("/^[a-zA-Z0-9]+$/",$password)){ 37 $err[] = 'パスワードは半角英数で入力してください。'; 38 } 39 40 }else{ 41 $err[] = 'パスワードを入力してください'; 42 } 43 44 45 46 47 if(!$err){ 48 $password = password_hash($password,PASSWORD_DEFAULT); 49 50 try{ 51 52 $err[] = $shop->user_check($user_name); 53 54 if(in_array('ok',$err)){ 55 56 $shop->write($user_name,$password); 57 $success_msg = 'アカウントを作成しました'; 58 //エラー用の配列初期化 59 $err = array(); 60 }else{ 61 echo 'NG'; 62 } 63 64 }catch(PDOException $e){ 65 echo $e->getMessage(); 66 } 67 68 } 69 70} 71 72 73 74?> 75 76<!DOCTYPE html> 77<html lang="ja"> 78<head> 79 <meta charset="UTF-8"> 80 <link type="text/css" rel="stylesheet" href="./css/common.css"> 81 <title>user_regiseter</title> 82 <header class="header_box"> 83 <a href="user_register.php"> 84 <img class ="logo" src="./images/logo.png" alt="CodeShop"> 85 </a> 86 <a href="cart.php"> 87 <img src="./images/cart.png" alt="cart"> 88 </a> 89 </header> 90 91 <div class="content"> 92 93 <?php if($err||$success_msg):?> 94 95 <div class="check_msg"> 96 97 <?php foreach($err as $msg):?> 98 99 <p class="err"><?=$msg;?></p> 100 101 <?php endforeach; ?> 102 103 <p class="success_msg"><?=$success_msg;?></p> 104 105 </div> 106 107 <?php endif;?> 108 109 110 <form class="form" method="post" action="user_register.php" > 111 <p>ユーザー名(半角英数6文字):<input type="text" name="user_name"></p> 112 <p>パスワード:<input type="password" name="password"></p> 113 <input type="submit" value="ユーザーを新規作成する"> 114 </form> 115 116 <a class="login_link" href="login.php">ログインページに移動する</a> 117 118 </div> 119 120</body> 121</html>

上記のページを表示し、ユーザー名「testuser」パスワード「111111」を入力すると、「パスワードは半角英数で入力してください」とのエラーが発生してしまいます。
上記コードを実行したのは、googlechromeなのですが、IEで試してみましたら、「アカウントが作成されました」と表示されました。

ブラウザの問題なのか、コードの問題なのかが分かりません。
上記コードに問題などは、ありませんでしょうか?
どなたかご助言頂ければ幸いです。
よろしくお願いします。


追記です

php

1 if(!preg_match("/^[a-zA-Z]+$/",$password)){ 2 $err[] = 'パスワードは半角英字ではありません'; 3 } 4 if((!preg_match('/^[0-9]+$/',$password))){ 5 $err[] = 'パスワードは半角数字ではありません'; 6 }

こちらのチェック処理を追加し、ユーザー名に「testuser」パスワードに「111111」と入力した結果、以下のように表示されました。

「パスワードは半角英数で入力してください。

パスワードは半角英字ではありません

パスワードは半角数字ではありません」

パスワードのチェック処理に入る前に、var_dump($passwrod)としましたら、「string(18) "ヌヌヌヌヌヌ"」と値が渡ってしまっていることが分かりました。
しかし、かな入力にはなっておらず、googleの検索ボックスなどで「1」と入力すれば、「1」と表示されます。
設定されている文字コードは、ファイルの文字コード、ブラウザ(chrome)の文字コードは共に「UTF8」です

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/04/28 07:32

「半角数値のみチェック」「半角英字のみ」で段階わけたチェックをいれて結果を追記してください
m.ts10806

2019/04/28 07:35

あと、サーバーサイドの処理はブラウザ関係ないので、チェック直前の入力値をデバッグしてください
m.ts10806

2019/04/28 09:53

ブラウザによる違いを訴えたいのでしたら、「どのブラウザで」「どう入力して送信したら」「どうでる」 と具体的に分かりやすく記載してください。 でないと再現確認ができません。 charsetの指定だけではなく、ファイル自体の文字コード、ブラウザの文字コード設定も全てご提示ください。 「通常想定できる設定」だと起きない現象ですので。
toll_tree

2019/04/28 12:52

ファイルの文字コードとは、html内で「<meta charset="UTF-8">」と入力している部分でしょうか?
m.ts10806

2019/04/28 21:09

それはcharsetの指定で「コードの文字コード」です。「ファイル自体の文字コード」です。Windowsであればメモ帳でも指定可能ですが、メモ帳使ってるなら今すぐテキストエディタかIDEに切り替えてください。 「ファイル自体の文字コード」で検索すると確認方法は出てきます
toll_tree

2019/04/29 02:15

しかし、謎な現象ですね... phpmyadminの方でも、設定しなおしたのに文字化けを起こしてしまっていて...
m.ts10806

2019/04/29 02:38

DBに登録されたデータがその文字化けとやらでしたら既存データをどうにかすることはできませんので、そこは諦めてください。
toll_tree

2019/04/29 02:39

いえ、DBに登録されたデータの文字化けとは全然違います
m.ts10806

2019/04/29 02:40

「phpmyadminの方でも」とあったので既存データの話かと思いまして
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問