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

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

ただいまの
回答率

87.61%

PHPでログイン機能

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 933

score 55

 前提・実現したいこと

拙い内容ご容赦下さい。

phpでのログイン機能を作成中
セッションは一旦放置し、
DBの内容と入力値の内容を比較したいです。

DBテーブル定義
id  AUTO_INCREMENT
userid ・・・hoge
password・・・hoge

定義済みのテーブルの”userid”"password"
入力値が合っていれば→マイページ
間違っていれば→エラーページ
としたいです。

入力値とDBをどう比較していいかわかりません。
やり方を教えていただけると幸いです。
ここに質問の内容を詳しく書いてください。

phpここに言語名を入力
ソースコード
<?php

$ui = 'userid';
$_Pw = 'password';
$db['host'] = "localhost";   
$db['userid'] = "hoge";  
$db['pass'] = "hoge";   
$db['dbname'] = "hoge";

echo "start";

$db = new PDO ('mysql:host=localhost;dbname=hoge;charset=utf8','hoge','hoge');
?>
<!DOCTYPE html>
<html lang = "jpa">
<head>
<meta charset = "utf-8">

<title>login</title>
<link rel="stylesheet" href="test1.css">
</head>
<body>

<form action="login4.php" method="POST">
<div class="parent">

<h1>login</h1>

<p>UserIDとPasswordを入力してください。</p>
<table>
<tr>
<td>User ID</td>
<td><input type="text" name="$ui" value="<?php echo htmlspecialchars($ui); ?>"></td>
</tr>

<p>

<?php

if (isset($_GET["click_sum"])){
}

?>

</p>

<p><input type="submit" name="click_sum" onclick="submit" value="マイページへ"></p>

</div>
</form>
</body>
</html>

 試したこと

//$sql = 'select * FROM "データベース名" WHERE userid = ? password = ?';

//$array = array();
//$array[] = ("$ui" && "$_Pw");

//$new = $db->exec($sql,$array);

ここに問題に対して試したことを記載してください。

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

どうすれば入力値とDBの内容をひかくできますか?
ここにより詳細な情報を記載してください。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m.ts10806

    2018/08/31 23:46

    質問は質問者さんのみ編集できるので。

    キャンセル

  • Roo

    2018/09/01 12:53

    失礼いたしました、もう少し勉強し直してから、ご質問させていただきます。

    キャンセル

  • m.ts10806

    2018/09/01 13:07

    コードブロックの対応だけでもやっておきませんか?なぜそうするか分かると思います

    キャンセル

回答 2

+3

全て一気にやるからではないでしょうか?
コピペのつなぎ合わせではおそらくいつまでたっても完成しません。
phpに限らずですが、Hello Worldからが原則です。
そのあとは変数・簡単な関数、文字列の操作、ループ処理。

入力値を取得して云々はそれらが出来てからです。
POST,GETなど「クライアントからのリクエストを送信」(リクエスト)についても知らなければなりません。
DBとの比較は更に1つ先です。

ちなみにそれぞれについてはPHPマニュアルに説明と簡単なコードは載っています。
ネットの記事をつなぎ合わせたツギハギなコードよりは基本から学んでください。

ここでミニマムでもサンプルコードを提示するのは非常に簡単です。
でもそれでは「できた気」になってしまって質問者さんは何一つ成長できません。
なぜなら「できた」コードはあくまで人が書いたものであり自身で考えて作ったものではないからです。
書いたコードを質問者さんが理解できなければ(または理解しようという姿勢がなければ)そのコードは無駄になってしまいます。

今自身のコードに起きている問題は何なのか。
エラーは起きていないか。画面に何も表示されてないならエラー表示設定がOnになってないから。
ではエラーが起きていればそれはどういう意味なのか、
コードの流れ上どこまで正しく通っているか。
「デバッグ」は必ずできるようにならないといけません。
基本のキです。デバッグ覚えないとプログラミングは進められません。

「プログラムは指示したとおりにしか動かない」ということを理解できているか?というところもどこまで理解しているかというところも気にはなりますが、
やらなければならないのはネット上のコードを参考にコピペで作りたいものを作るのではなく、基本から覚えていくことです。
時間はかかって当然でしょう。ただし急がば回れです。理解が浅いままなんとなく進めていては、近いうちに壁にぶちあたって跳ね返されて挫折するのが落ちです。

基礎体力も何もないままフルマラソンを走りきることはできません。
じゃあ練習だといきなり走り始めますか?ストレッチから始めません?
質問者さんは今どの段階でしょうか。よく考えて、先を見据えたうえで今やるべきことをやってください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/09/01 12:52

    失礼いたしました。
    もう少し勉強し直してから、再度質問させていただきます。

    キャンセル

  • 2018/09/01 13:06

    質問するのは悪いことではないのですが、本来必要なことをやらずにコードだけもらっても根本的な解決にならないことご理解ください。

    キャンセル

+2

セッションは一旦放置し、
DBの内容と入力値の内容を比較したいです。 

セッションのないログインはほぼ成り立たないですが大丈夫ですか?
ログアウトのないBasic認証を利用してみてはどうでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 87.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る