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

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

ただいまの
回答率

90.47%

  • PHP

    20900questions

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

  • MySQL

    6033questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • PDO

    339questions

    PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

登録済みのメールアドレスの筈なのにエラーが出ない!

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 671
退会済みユーザー

退会済みユーザー

ドットインストールを参考に作っているのですが登録した筈のメールアドレスを入力してもエラーが出ません。MySQLには確かにデータは入っていたし、同じメールアドレスでは登録できませんでした。
// メールアドレスが登録されているかのチェック
function emailExists($emai, $db) {
    $sql = "select * from users where email = :email limit 1";
    $stmt = $db->prepare($sql);
    $stmt->execute(array(':email' => $email));
    $user = $stmt->fetch();
    return $user ? true : false;
}

function emailExists($emai, $db) {
    $sql = "select * from users where email = :email limit 1";
    $stmt = $db->prepare($sql);
    $stmt->execute(array(':email' => $email));
    $user = $stmt->fetch();
    return $user ? true : false;
}
$db = ConnectDB();

// エラーチェック
$err = array();

// 名前は空か?
if ($name === '') {
    $err['name'] = "名前が入力されていません";
}

// メールアドレスは正しい形式で入力されているか?
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    $err['email'] = "メールアドレスの形式が正しくないです";
}

// メールアドレスは空か?
if ($email === '') {
    $err['email'] = "メールアドレスが入力されていません";
}

if (emailExists($email, $db)){
    $err['email'] = "このメールアドレスはすでに登録されています";
}

// パスワードは空か?
if ($password === '') {
    $err['password'] = "パスワードが入力されていません";
}

if (empty($err)) {
    // 登録処理
    $sql = "insert into users (name, email, password, created, modified) values (:name, :email, :password, now(), now())";
    $stmt = $db->prepare($sql);
    $params = array(
        ":name" => $name,
        ":email" => $email,
        ":password" => SecretPassword($password)
    );
    $stmt->execute($params);
    header("Location: ". SITE_URL. 'login.php');
    exit;

}

}
?>
<body>
<div class="container">
 <h1>新規ユーザー登録</h1>
 <form action="" method="post">
     <p>名前<br><?php echo h($err['name']).'<br>'; ?><input type="text" name="name" placeholder="ユーザー名" value="<?php echo h($name); ?>"></p>
     <p>メールアドレス<br><?php echo h($err['email']).'<br>'; ?><input type="text" name="email" placeholder="メールアドレス" value="<?php echo h($email); ?>"></p>
     <p>パスワード<br><?php echo h($err['password']).'<br>'; ?><input type="password" name="password" placeholder="パスワード"></p>
     <input type="hidden" name="token" value="<?php echo h($_SESSION['token']); ?>">
     <input type="submit" value="新規登録"><br>
     <a href="index.php">戻る</a>
 </form>
</div>
</body>
if (emailExists($email, $db)){ $err['email'] = "このメールアドレスはすでに登録されています";}ここの部分をif (!emailExists($email, $db)){ $err['email'] = "このメールアドレスはすでに登録されています";}にするとうまくできるので、
  $user = $stmt->fetch();
    return $user ? true : false;
ここらへんが間違えているのだとは思いますがまったくわかりません。ちなみにですがfalsefalesと間違ったスペルで入力するとうまくいきました。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

checkベストアンサー

+4

function emailExists($emai, $db) {

$emaiになっていますが$emailでは?

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2015/08/09 23:07

    ありがとうございます!

    キャンセル

関連した質問

  • 解決済

    phpでメールアドレスの重複確認

    Webユーザー管理の作り方をドットインストールで勉強しています いわゆる写経なのですが メールアドレス重複確認の関数を作ったところで急にわからなくなりました。 function 

  • 解決済

    画面遷移なしで編集したいのですが、書き方が全くわかりません。。

    「編集」と「削除」を画面遷移なしで実行したいのですが、ajaxが分からず困っています。どうすれば、意図した結果が得られるでしょうか?>< PHPとMySQLを使っています。 PH

  • 解決済

    メールアドレスの重複チェックについて

    下記コードで、アドレスの重複チェックを表示することができました。 DBでuserdataというテーブルにemailというカラムがあり、test@testという値が格納されてます。

  • 受付中

    php 新規ユーザー登録について

    phpを使って新規ユーザー登録を作りたいのですが、データベースにうまく入りません。またユーザー名を変更してもidが変わりません。よろしくお願いします。 画面はこんな感じです h

  • 解決済

    PHP とMYSQLで企業情報の登録するやり方

    前提・実現したいこと 皆様こんちわphp初心者です。HTMLで作ったフォームからPHPとMYSQLで企業情報を登録する物を作ってますが、 この先、どのようにDBに反映できるよう

  • 解決済

    就労移行のタイムカードの出勤ページで削除と追加がうまく動作しない

    前提・実現したいこと ここに質問したいことを詳細に書いてください 就労移行施設のタイムカードを作成してますが, どうしても、出勤押した後に内容が反映されないのと 対象列の削

  • 解決済

    会員制サイト:メールアドレスでログイン

    前提・実現したいこと Qiita:PHPとMySQLで新規登録とログインを実装する(PDO使用)を参考に、PHPで会員制サイトを作っています。 このサイトで作れるものでは、ID

  • 解決済

    【PHP】ログイン機能の実装

    PHP初心者です。 PHPの勉強がてら、会員制のページを作成してます。 新規会員登録機能は実装できていますが、 ログイン機能の実装がうまくいきません。 やりたいことを実

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

  • PHP

    20900questions

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

  • MySQL

    6033questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • PDO

    339questions

    PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。