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

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

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

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Q&A

解決済

1回答

1722閲覧

事前にログイン情報をDBに登録しましだが、ログイン処理が上手く進めません。

dashu_sena

総合スコア2

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

0グッド

0クリップ

投稿2020/05/14 19:46

前提・実現したいこと

phpの初心者です。

Windowsを使用し、開発環境Eclipse、サーバーはXMAPPを使用しています。

現在、たにぐち まこと著「よくわかるPHPの教科書PHP5.5対応版」で学習を進めております。
「ログインの仕組みを作成する」の中で、ユーザーログインする際、画面初期表示でメールアドレス入力欄にエラーメッセージが表示されました。

もし、エラーメッセージを無視して、そのままログイン情報を入力後、ログインボタンを押下すると、画面にエラーメッセージが表示されました。

発生している問題・エラーメッセージ

初期表示-エラーメッセージ.

Notice: Undefined variable: error in C:\pleiades\xampp\htdocs\xampp\workspace\mailForm\login.php on line 60

「ログインする」ボタン押下後.

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, object given in C:\pleiades\xampp\htdocs\xampp\workspace\mailForm\login.php on line 17 Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, object given in C:\pleiades\xampp\htdocs\xampp\workspace\mailForm\login.php on line 18 Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in C:\pleiades\xampp\htdocs\xampp\workspace\mailForm\login.php on line 20 Warning: mysqli_error() expects parameter 1 to be mysqli, boolean given in C:\pleiades\xampp\htdocs\xampp\workspace\mailForm\login.php on line 20

該当のソースコード

DB情報
データベース名:mini_bbs
テーブル名:members

テーブル構造:定義AI
idINT(11)
nameVARCHER(255)
emailVARCHER(255)
passwordVARCHER(100)
pictureVARCHER(255)
createdDATETIME
modifiedTIMESTAMP

手動でDBテーブルmemberに以下の情報を挿入しました。
|id|name|email|picture|created|modified|
|:--|:--|
|1|管理者|admin@test.com||2020-05-14 00:00:00|2020-05-14 22:59:59|

DB接続<dbconnect.php>

php

1<?php 2try { 3 $db = new PDO('mysql:dbname=mini_bbs;host=localhost;charset=utf8', 'root', ''); 4} catch (PDOException $e) { 5 echo 'DB接続エラー: ' . $e->getMessage(); 6} 7 ?>

ログイン画面<login.php>

php

1<?php 2require ('dbconnect.php'); 3 4session_start(); 5 6if (isset($_COOKIE['email']) != '') { 7 $_POST['email'] = $_COOKIE['email']; 8 $_POST['password'] = $_COOKIE['password']; 9 $_POST['save'] = 'on'; 10 11} 12 13if (!empty($_POST)) { 14 //ログイン処理 15 if ($_POST['email'] != '' && $_POST['password'] != '') { 16 $sql = sprintf('select * from members where email="%s" and password = "%s"', 17 mysqli_real_escape_string($db,$_POST['email']), 18 mysqli_real_escape_string($db,sha1($_POST['password'])) 19 ); 20 $record = mysqli_query(isset($db), $sql) or die (mysqli_error(isset($db))); 21 if ($table = mysqli_fetch_assoc($record)) { 22 //ログイン成功 23 $_SESSION['id'] = $table['id']; 24 $_SESSION['time'] = time(); 25 26 //ログイン情報を記録する 27 if ($_POST['save'] =- 'on') { 28 setcookie('email', $_POST['email'], time()+60*60*24*14); 29 setcookie('password', $_POST['password'], time()+60*60*24*14); 30 } 31 header('Location; index.php');exit(); 32 } else { 33 $error['login'] = 'failed'; 34 } 35 } else { 36 $error['login']='blank'; 37 } 38} 39?> 40<!DOCTYPE html> 41<html lang="ja"> 42<head> 43 <meta charset="utf-8" /> 44 <script type="text/javascript" charset="UTF-8"></script> 45</head> 46<body> 47 <div id="lead"> 48 <p>メールアドレスとパスワードを記入してログインしてください。</p> 49 <p>入会手続きがまだの方はこちらからどうぞ</p> 50 <p>&raquo;<a href="join/">入会手続きをする</a></p> 51 </div> 52 <form action="" method="post"> 53 <dl> 54 <dt>メールアドレス</dt> 55 <dd> 56 <input type="text" name="email" size="35" maxlength="255" value="<?php echo filter_input(INPUT_POST,"email"); ?>" /> 57 <?php if (isset($error['login'])): ?> 58 <p class="error">* メールアドレスとパスワードをご記入ください</p> 59 <?php endif; ?> 60 <?php if ($error['login'] == 'failed'): ?> 61 <p class="error">* ログイン失敗したした。正しくご記入ください。</p> 62 <?php endif; ?> 63 </dd> 64 <dt>パスワード</dt> 65 <dd> 66 <input type="password" name="password" size="35" maxlength="255" value="<?php echo filter_input(INPUT_POST,"password"); ?>" /> 67 </dd> 68 <dt>ログイン情報の記録</dt> 69 <dd> 70 <input id="save" type="checkbox" name="save" value="on"><label for="save">次回からは自動的にログインする</label> 71 </dd> 72 </dl> 73 <div><input type="submit" value="ログインする" /></div> 74 </form> 75</body> 76</html>

試したこと

//メールアドレス入力欄

<input type="text" name="email" size="35" maxlength="255" value="<?php echo filter_input(INPUT_POST,"email"); ?>" />

//パスワード入力欄

<input type="password" name="password" size="35" maxlength="255" value="<?php echo filter_input(INPUT_POST,"password"); ?>" />

上記に提示しておりましたソースにvalue値を以下の通りで試して修正しましたが、解決しませんでした。

?修正前:

<?php echo htmlspecialchars($_POST['email']); ?>

 
▲修正後:
<?php echo filter_input(INPUT_POST,"email"); ?>

補足情報(FW/ツールのバージョンなど)

環境情報について、以下の通りです。
・Windows10 64bit
・Eclipse バージョン4.4 (PHP バージョン5.5)
・XAMPP:バージョン3.2.1

上記のコードの記述も全て確認しましたが、DBへの接続もできており、ミスしている箇所が見つけられません。

先人のお力をお借りしたく、質問させていただきます。

何卒宜しくお願い申し上げます。

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

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

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

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

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

m.ts10806

2020/05/14 21:26

> phpの初心者です。 「初心者アイコン」を質問につけるにとどめてください
guest

回答1

0

ベストアンサー

接続がPDOで利用がmysqliでは整合性が取れません。
それぞれきちんとPHPマニュアルで確認の上、探す記事は新しめのもの、評価の高いものを選びましょう。

評価高い記事の例
PHPでデータベースに接続するときのまとめ
色々派生記事もありますが、しっかりおさえてください。

前の質問に回答してますが、

・Eclipse バージョン4.4 (PHP バージョン5.5)

・XAMPP:バージョン3.2.1

まず、PHPのバージョンはサポート切れでないものを選びましょう。
既に5.x系はサポート外です。今ならPHP7.2以上です。
PHPのリリース日とサポート期限

PHP7.2もサポート期限はあと半年程度なので、やはり最新であれば最新であるほど良いです。
学習目的であれば尚更、過去バージョンを使うメリットは一切ありません。
なので、書籍も変えるべきです。

投稿2020/05/14 21:33

m.ts10806

総合スコア80875

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

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

m.ts10806

2020/05/15 10:26

この低評価は何かな。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問