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

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

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

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

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

3回答

1512閲覧

emailかどうかを判定したい

Moai101

総合スコア20

MySQL

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

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2018/10/04 14:42

入力されたものusernameがemailかどうかを判別したいのですがどのようにすればいいでしょうか?

// config/passport.js // load all the things we need var LocalStrategy = require('passport-local').Strategy; // load up the user model var mysql = require('mysql'); var bcrypt = require('bcrypt-nodejs'); var dbconfig = require('./database'); var connection = mysql.createConnection(dbconfig.connection); connection.query('USE ' + dbconfig.database); // expose this function to our app using module.exports module.exports = function(passport) { // ========================================================================= // passport session setup ================================================== // ========================================================================= // required for persistent login sessions // passport needs ability to serialize and unserialize users out of session // used to serialize the user for the session passport.serializeUser(function(user, done) { done(null, user.id); }); // used to deserialize the user passport.deserializeUser(function(id, done) { connection.query("SELECT * FROM users WHERE id = ? ",[id], function(err, rows){ done(err, rows[0]); }); }); // ========================================================================= // LOCAL SIGNUP ============================================================ // ========================================================================= // we are using named strategies since we have one for login and one for signup // by default, if there was no name, it would just be called 'local' passport.use( 'local-signup', new LocalStrategy({ // by default, local strategy uses username and password, we will override with email usernameField : 'username', passwordField : 'password', passReqToCallback : true // allows us to pass back the entire request to the callback }, function(req, username, password, done) { connection.query("SELECT * FROM users WHERE username = ?",[username], function(err, rows) { if (err) return done(err); if (rows.length) { return done(null, false, req.flash('signupMessage', 'That username is already taken.')); } else if(){ return done(null, false, req.flash('signupMessage', 'That username is not Email')); }else{ var newUserMysql = { username: username, password: bcrypt.hashSync(password, null, null) // use the generateHash function in our user model }; var insertQuery = "INSERT INTO users ( username, password ) values (?,?)"; connection.query(insertQuery,[newUserMysql.username, newUserMysql.password],function(err, rows) { newUserMysql.id = rows.insertId; return done(null, newUserMysql); }); } }); }) ); // ========================================================================= // LOCAL LOGIN ============================================================= // ========================================================================= // we are using named strategies since we have one for login and one for signup // by default, if there was no name, it would just be called 'local' passport.use( 'local-login', new LocalStrategy({ // by default, local strategy uses username and password, we will override with email usernameField : 'username', passwordField : 'password', passReqToCallback : true // allows us to pass back the entire request to the callback }, function(req, username, password, done) { // callback with email and password from our form connection.query("SELECT * FROM users WHERE username = ?",[username], function(err, rows){ if (err) return done(err); if (!rows.length) { return done(null, false, req.flash('loginMessage', 'No user found.')); // req.flash is the way to set flashdata using connect-flash } // if the user is found but the password is wrong if (!bcrypt.compareSync(password, rows[0].password)) return done(null, false, req.flash('loginMessage', 'Oops! Wrong password.')); // create the loginMessage and save it to session as flashdata // all is well, return successful user return done(null, rows[0]); }); }) ); };

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

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

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

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

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

y_waiwai

2018/10/04 15:11

usernameがemailかどうか、って、ちと意味不明ですが、どういうことでしょうか。emailアドレスかどうか、でしょうか?
Moai101

2018/10/04 15:27

そうです。emailアドレスかどうかということです
m.ts10806

2018/10/04 15:59

「emailアドレスの形式として正しいか」なのか「DBに存在するデータか」 どちらをチェックしたいのでしょうか?質問本文に追記してください
guest

回答3

0

登録時のチェックと言う事なら、@があるかくらいの確認にしておいて、そこにメールを送ってみて、メール中のURLをクリックして、登録を続けるというのが良いです。
メールアドレスとして正当かという判断は正規表現などで出来ますが、有効なメールアドレスかどうかは届けてみないと分からない。

投稿2018/10/05 03:41

otn

総合スコア84555

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

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

0

ベストアンサー

https://www.npmjs.com/package/email-validator

こんなの有りますよ。

ただ、メアドかのチェックはゆるゆる(正規表現で.+@.+..+とか。正規表現詳しい人添削お願いします)にしておいて、実際にメールをおくって存在確認が良いかなぁ。

gmailの+とか、メアドか確認時に考慮すべきチェック項目が多いと思うのでメールそうしんせずにチェックだけで済ますのか要検討です。

投稿2018/10/05 02:39

oikashinoa

総合スコア2826

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

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

0

正規表現で判定すればいいでしょう
「正規表現 email」でぐぐればいろいろでてきますね

投稿2018/10/05 00:02

y_waiwai

総合スコア87774

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問