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

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

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

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

Q&A

解決済

3回答

477閲覧

新規会員登録でログインフォームが作動しません。

amaturePy

総合スコア131

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

0グッド

0クリップ

投稿2019/05/23 06:10

新規会員登録フォーム入力→確認メール→リンク→ログインフォームの表示
という流れでコードを書いているのですが、メールの受信後にリンクを押しても
login.phpが作動しません。
コードに問題があるために作動しないと思うのですが、username passwordをDBと照合という内容で作りました。
コードの中でどこが不備か教えていただきたいです。
また、先頭部分にデバックのコードを追加したのですが、エラーが表示されません。
こちらに関しても何か良い方法があればお願いします。

<DB> CREATE TABLE `posts` ( `id` int(11) NOT NULL, `retweet_user_id` int(11) DEFAULT NULL, `content` varchar(255) NOT NULL, `picture` varchar(255) DEFAULT NULL, `datetime_posted` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `datetime_edited` datetime NOT NULL, `deleted` datetime NOT NULL, `created` datetime NOT NULL, `modified` datetime NOT NULL, `user_id` int(11) NOT NULL, `body` varchar(255) NOT NULL, `stamp` datetime NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
<?php session_start(); if(isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] === 'POST') { ini_set('display_errors',1); error_reporting(E_ALL); if(isset($_SESSION['user'])!==''){ header("Location:index.php"); } <?php $SERVER = 'localhost'; $USER = 'root'; $PASS = 'root'; $DATABASE = 'microblog'; if (!($link = mysql_connect($SERVER,$USER,$PASS))){ echo "<h3>Sorry, could not connect to database</h3>"; exit; } mysql_select_db($DATABASE); ?> <?php if(isset($_POST['login'])){ $username = $mysql->real_escape_string($_POST['username']); $password = $mysql->real_escape_string($_POST['password']); $query = "SELECT * FROM users WHERE username ='$username'"; $result = $mysqli->query($query); if(!$result) { print('Invalid username'.$mysqli->error); $mysqli->close();// データベースの切断 exit(); } while($row = $result->fetch_assoc()) { $db_hashed_pwd = $row['password']; $id = $row['id']; } // データベースの切断 $result->close(); // ハッシュ化されたパスワードがマッチするかどうかを確認 if(password_verify($password, $db_hashed_pwd)){ $_SESSION['id'] = $id; header("Location: index.php");// ログイン exit; } else { echo "Sorry , We don't have your password "; <?php } } } ?> コード

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

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

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

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

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

guest

回答3

0

コードの中でどこが不備か教えていただきたいです。

どこがと言われれば、「全部」間違っています。
設計から見直して下さい。ログイン機能として必要な操作がいろいろ抜けています。

また、参考にしているモノも古いのではないでしょうか?
mysql_connect等は、古い php でしか動作しないです(現行の php ではすでに動作しない関数です)。

ちょっと駆け足ですけど、ログイン機能の設計に関しては以下の記事で触れられているので参考にすると良いです。
PHPでログイン機能を実装するチュートリアル #1

投稿2019/05/23 06:56

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

php

1if(isset($_SESSION['user'])!==''){ 2 header("Location:index.php"); 3 } 4 5<?php //閉じてないのに始めちゃダメ 6$SERVER = 'localhost';

むしろ前も後ろもPHPコードなのでしたら閉じる必要ないと思います。

php

1mysql_select_db($DATABASE); 2 3//↓この下の空白も画面に出力されてしまいます。header()とか使うのだったら絶対NG 4?> 5 6<?php 7 if(isset($_POST['login'])){

構文チェック機能の付いたエディタか、EclipseのようなIDEの利用を強くすすめます。

構文チェックだけで良ければpaiza.ioという手もありますがやはり手元のエディタをかえたほうがいいです。

以下蛇足。


慣習的な話なのですが、自身でつける変数名に全て大文字はやめておいたほうが良いです。
慣習として全て大文字は定数に使われます。

デフォルトで定数では大文字小文字を区別します。慣習的に、 定数は常に大文字で表記されます。

また$SERVERのような名前を付けてしまうとスーパーグローバル変数である$_SERVERと区別がつきにくくなります。
予約語との衝突も避けたいですね。

投稿2019/05/23 06:23

編集2019/05/23 06:23
m.ts10806

総合スコア80850

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

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

amaturePy

2019/05/23 06:30

ありがとうございます。 phpのタグを一つでまとめていいのかなど初歩的すぎて調べてもでなかったので、大変参考になります。 エディターも考えてみます。現状はbracketを使用してます。 文字もなるべく小文字で対応します。
m.ts10806

2019/05/23 06:37

Bracketsですね。私もよく使ってます。PHP構文チェック機能入れられないことはないですが簡単ではないようなので私はhtml,css,JavaScriptのみでしか使ってないです。 多少重たいもののEclipseがやはり手を出しやすいかなと。
amaturePy

2019/05/23 06:40

承知しました。特に私みたいな初学者は変えた方が良さそうですね。一つハマると丸2日とか使ってしまうんで
m.ts10806

2019/05/23 06:41

はい。構文エラーで毎回実行して確認では時間はもったいないと思います。 確認前にわかったほうが対策もとりやすいです。
hentaiman

2019/05/23 06:47

初心者の頃から今に至るまでサクラエディタ(windows)一本でやってる人もココにイマスヨーw javaの時だけeclipseに浮気したけど
m.ts10806

2019/05/23 06:53

サクラはGrepでよく使いますね。職場によってはヒデ。 昔はTeraPadが異常に推されてた時代がありましたね。 UIキレイなのでEclipse使い始めるまでTepaEditorというのを使ってた時期もあります。
guest

0

11行目の<?phpの書き間違えが動かない原因だね
コマンドライン使っているなら

php -l ファイル名.php

で構文チェックできるので活用してみるといいですよ

投稿2019/05/23 06:15

hentaiman

総合スコア6415

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

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

amaturePy

2019/05/23 06:23

macなのでターミナルですが、これを構文チェックに使用する発想はなかったです! sudoで権限も与えて試してみたのですが、ファイルを開いてくれません。
hentaiman

2019/05/23 06:34

ファイル開かないわけないでしょうが、開けないファイルをどうやって編集してるのさ せっかくなのターミナルになれるといいです。ls 打てばディレクトリ内のファイル見れるしmacの中のファイル構成を知る良い機会でしょう macの良いところはターミナルとbrewだけなんだから有効活用しようよ
amaturePy

2019/05/23 06:51

承知しました。サクラエディタ聞いたこと有ります。 php -l login.phpだとCoukd not open file となるので、ちょっと調べてみます。
hentaiman

2019/05/23 06:54

ls と打って出てくるファイル一覧にlogin.phpはありますか?ないなら今いるディレクトリにはないので、正しいディレクトリにcdで移動しするか、フルパスでlogin.phpを指定すれば正常にコマンド打てますよ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問