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

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

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

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

ログイン

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

Q&A

0回答

508閲覧

ログイン機能を作成しましたが、ローカル開発環境からレンタルサーバにアップすると機能しません

ulluegg

総合スコア8

PHP

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

ログイン

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

0グッド

0クリップ

投稿2020/04/09 14:10

PHP初心者です。現在ログイン機能をPHPで作成しており、ログイン状態ならば、ログインユーザーのハンドルネーム表示、ログイン状態でなければ「ゲスト」として表示するようなものを作りたいです。

<?php session_start(); // $_SESSION['id']という値を持っているかどうかでログインの有効性を判断 if (!empty($_SESSION['id'])) // もしidがあれば { header('Location: index.html'); // indexに飛ばす! } require_once('php/config.php'); require_once('php/functions.php'); $clean = array(); // サニタイズ if( !empty($_POST) ) { foreach( $_POST as $key => $value ) { $clean[$key] = htmlspecialchars( $value, ENT_QUOTES); } } // submitボタンで送信された情報が「POST」だったらの処理 if ($_SERVER['REQUEST_METHOD'] == 'POST'){ $email =$clean['email']; $pass =$clean['pass']; $errors = array(); // バリデーションのエラーメッセージ // バリデーション if ($email == '') // もしemailが空だったら { $errors['email'] = '※ メールアドレスが未入力です'; } if ($pass == '') // もしpassが空だったら { $errors['pass'] = '※ パスワードが未入力です'; } // バリデーション突破後 if (empty($errors)) // $errorsが空だったら(=エラーが無かったら) { $dbh = connectDb(); $sql = "select * from users where email = :email and pass = :pass"; // テーブルの中に該当レコードがあるか $stmt = $dbh->prepare($sql); $stmt->bindParam(":email", $email); $stmt->bindParam(":pass", $pass); $stmt->execute(); $row = $stmt->fetch(); // レコードの取り出し // var_dump($row); if ($row) // 該当レコードがあったら { $_SESSION['id'] = $row['id']; // セッションのidにレコードのidを持たせる $_SESSION['name'] = $row['name']; // ログイン成功に飛ばす echo ' <script type="text/javascript"> setTimeout("redirect()", 0); function redirect() { location.href="login-success.php"; } </script>'; exit; } else // もし該当レコードがなかったら { $errors['fales'] = '※ メールアドレスかパスワードが間違っています'; } } } ?> <?php include 'header.php'; ?> <div class="main-wrap"> <main> <div class="main-content"> <div class="content-title">ログイン</div> <div class="contentbox"> <?php if( !empty($errors) ): ?> <ul class="error_list"> <?php foreach( $errors as $value ): ?> <li><?php echo $value; ?></li> <?php endforeach; ?> </ul> <?php endif; ?> <form action="" method="post"> <div class="formbox"> <div class="inputname"> <p>メールアドレス</p><span class="red">(※必須)</span> </div> <input type="text" name="email" class="input"> </div> <div class="formbox"> <div class="inputname"> <p>パスワード</p><span class="red">(※必須)</span> </div> <input type="password" name="pass" class="input"> </div> <input type="submit" class="btn act" value="ログイン"> <a href="register.html"><div class="tac">新規登録はこちらから!</div></a> </form> </div>

このようなコードで、xammpを使用したローカル環境では動作していたのですが、ロリポップレンタルサーバーにアップロードして動作を確認したところ、うまく機能していませんでした。
一連の処理後、ログイン成功の画面にまでは飛んだので、処理自体はされたと思うのですが、肝心のログイン状態を判定する$_SESSION['id']に値を持たすことに失敗しているらしく、ユーザーネームも変化しませんでした。

ローカルでは動いたのになぜレンタルサーバーでは動かなくなるのか分からず、よろしければ御助力お願い致します

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

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

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

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

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

hoshi-takanori

2020/04/12 11:30

どちらのレンタルサーバーをお使いでしょうか?
ulluegg

2020/04/17 09:46

返信が遅れてしまい申し訳ありません。ロリポップを使用しています
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問