• 締切済み

ログインシステムでエラーがでます

たびたび失礼します。 PHPを勉強しています。 パスワードとIDを入力し、ログインするサンプルシステムを作成しているのですが、if文がうまくできずエラーが出てしまいます。 elseにはネストできないのでしょうか? 以下、ソース概要です。 session_start(); if($_SESSION=="1") { ログイン完了 } else // $_SESSION=="1"じゃない { ・入力されたパスワードとIDが正しいかどうか 判断する処理(自作関数です) if(パスワードとIDが正しい) { ・$_SESSION="1"に設定 ・この画面の最初に戻る }(※) else // { ログイン画面に戻る } } (※)の部分でParse errorがでます。

  • PHP
  • 回答数3
  • ありがとう数3

みんなの回答

  • calltella
  • ベストアンサー率49% (317/635)
回答No.3

elseと{の間にコメントが書かれているからじゃないですかね? elseの部分2箇所を }else{ にしてみてください。

maa_rico
質問者

お礼

みなさん回答ありがとうございました。 質問の書き方が悪くてすみません。 実際のソースにはelseとelseの間にコメントはいれてません。 結局どこがエラーなのかわからないまま、if文のつくりを変えることになり、変えた際にエラーが消えました。 もっと勉強して、自分でデバッグできるようになろうと思いました。

  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

>> エラーが出てしまいます。 多くの場合、そのエラーメッセージに間違いの内容と場所が書いて有ります。まずそこを当たってみましょう  自力解決が難しい場合は、エラーメッセージを略さずに開示すれば 適切な回答を得られると思います

maa_rico
質問者

お礼

回答ありがとうございました。 文法エラーは、エラー文に示されている行より前にエラーがある場合があるので、探すのにいつも苦労してしまいます。

  • tsaito
  • ベストアンサー率68% (17/25)
回答No.1

2箇所ある、elseの後に全角のスペースが入っていませんか?

maa_rico
質問者

お礼

回答ありがとうございました。 全角スペースは入っていませんでした。 よくやる;の閉じ忘れもなく、困っていました。

関連するQ&A

  • 一つのphpファイルでログイン画面を作りたい

    一つのphpファイルでログイン画面を作りたい 一つのphpファイルでログイン画面→管理者画面 ログインエラー画面を作りたいと思っております。 下記のスクリプトで上手くセッションが保持できないので、 どなたかご教授ください。 宜しくお願いいたします。 -------------------------------------------- session_start(); //パスワードチェック $error_flag = 0; if(isset($_POST["login"])){ if($_POST["id"] == $login_id && $_POST["password"] == $login_pass){ $_SESSION["login"]["admin"] = 1; }else{ $error_flag = 1; } } if(isset($_SESSION["login"]["admin"]) && $_SESSION["login"]["admin"] == 1){ //管理者画面 }else{ //エラー画面 }

    • ベストアンサー
    • PHP
  • php sqlでログイン認証システムについてです。

    このようなソースを書いてログインシステムを書いています。 ここで接続はできたのですが、クエリーが失敗しましたと出てきます。 このソースをどのように修正すればよいのかアドバイスお願いできないでしょうか。よろしくお願いします。 <?php session_start(); $link = mysql_connect('localhost', 'root', 'root'); if (!$link) { die('接続失敗です。'.mysql_error()); } $db_selected = mysql_select_db('mydb', $link); if (!$db_selected){ die('データベース選択失敗です。'.mysql_error()); } mysql_set_charset('utf8'); // エラーメッセージの初期化 $errorMessage = ""; // ログインボタンが押された場合 if (isset($_POST["login"])) { // 1.ユーザIDの入力チェック if (empty($_POST["userid"])) { $errorMessage = "ユーザIDが未入力です。"; } else if (empty($_POST["password"])) { $errorMessage = "パスワードが未入力です。"; } // 2.ユーザIDとパスワードが入力されていたら認証する if (!empty($_POST["userid"]) && !empty($_POST["password"])) { // mysqlへの接続 $mysqli = new mysqli($db['localhost'], $db['root'], $db['root']); if ($mysqli->connect_errno) { print('<p>データベースへの接続に失敗しました。</p>' . $mysqli->connect_error); exit(); } // データベースの選択 $mysqli->select_db($db['mydb']); // 入力値のサニタイズ $userid = $mysqli->real_escape_string($_POST["userid"]); // クエリの実行 $query = "SELECT * FROM db_user WHERE name = '" . $userid . "'"; $result = $mysqli->query($query); if (!$result) { print('クエリーが失敗しました。' . $mysqli->error); $mysqli->close(); exit(); } while ($row = $result->fetch_assoc()) { // パスワード(暗号化済み)の取り出し $db_hashed_pwd = $row['password']; } // データベースの切断 $mysqli->close(); // 3.画面から入力されたパスワードとデータベースから取得したパスワードのハッシュを比較します。 //if ($_POST["password"] == $pw) { if (password_verify($_POST["password"], $db_hashed_pwd)) { // 4.認証成功なら、セッションIDを新規に発行する session_regenerate_id(true); $_SESSION["USERID"] = $_POST["userid"]; header("Location: main.php"); exit; } else { // 認証失敗 $errorMessage = "ユーザIDあるいはパスワードに誤りがあります。"; } } else { // 未入力なら何もしない } } ?>

    • 締切済み
    • PHP
  • 会員ログイン認証について

    仕事でログインの会員認証を作成する事になり セキュリティの件でよかったらアドバイス下さい。 これまでは趣味でログイン認証を作った事があるんですが その時の手順は初めログインページでIDとパスワードの入力させ、 データベースにアクセスし該当のIDとパスワードがあるか確認、 OKの場合はsessionにIDを記録させ 以後ログイン中か否かの判断はsessionのIDを保持してるかどうかで 判別させてました。 例 if($_SESSION["id"]){ ....ok }else{ ....no } 今回実務でログイン判定を作る事になりこのやり方では セキュリティが大丈夫か心配です。 このやり方ならセキュリティもある程度大丈夫だというやり方を 教えていただけませんか? すいませんがよろしくお願いします。

    • ベストアンサー
    • PHP
  • ログインページ

    PHPとMySQLで ログインするときに、ログインIDとパスワード(md5処理)を 入力する普通のログインページをつくったのですが 照合するときに例えば ログインIDがphp パスワードが178だとログインできず ログインIDがabe パスワードがabeだとログインできる ログインIDがパスワード一致の場合だけ何故かログインできて しまうのですが、自分で書いていてなんなんですが 以下のプログラムではそういう風になってしまうんでしょうか。 <?php if($_POST["keep_login"] != ""){ session_set_cookie_params(365*25*3600); }else{ session_set_cookie_params(0); } session_start(); require("config.php"); if($_POST["passwd"]==""){ $_POST["passwd"]=time(); } if($_POST["action"]=="login"){ $login_id = mysql_real_escape_string($_POST["login_id"]); $sql="select * from users where login_id= '$login_id' and state='0'"; $result=mysql_query($sql); $users=mysql_fetch_array($result); if($users["passwd"]==md5($_POST["passwd"])){ $_SESSION["login_id"]=$_POST["login_id"]; $_SESSION["auth_code"]=md5($magic_code.$_POST["login_id"]); $_SESSION["name_kanji"]=$users["name_kanji"]; $sql="update users set login_date = '".date('Y-m-d H:i:s')."' where login_id= '".mysql_real_escape_string($_POST['login_id'])."' and state='0'"; $result=mysql_query($sql); if($_GET["redirect"] !=""){ header("Location:".$_GET["redirect"]); exit; }else{ header("Location:".$site_url); exit; } }else{ $message='<br><br><font color="red">ログインできませんでした</font><br>'; } } ?>

    • 締切済み
    • PHP
  • phpでログイン時のIDチェック

    phpでIDとパスワードを入力してもらいそれをチェックしてログインするシステムを作っています。 普通にログインはできるのですがIDがsから始まりその後に数字が7桁来れば会員専用のメイン画面に移行し、それ以外のIDであれば普通のメイン画面に移行するプログラムを書きたいです。 例)IDがs1234567であれば会員用の画面、それ以外s1234,1234567,d1234567などのIDであれば違う画面に移行したいです。 自分が書いたコードはこのようになっておりこちらをどのように改良していけばこのようなプログラムが書けるか知りたいです。 どなたかご教授お願いします。 <?php require('dbconnect.php'); session_start(); if (!empty($_POST)) { // ログインの処理 if ($_POST['name'] != '' && $_POST['password'] != '') { $sql = sprintf('SELECT * FROM members WHERE name="%s" AND password="%s"', mysql_real_escape_string($_POST['name']), sha1(mysql_real_escape_string($_POST['password'])) ); $record = mysql_query($sql) or die(mysql_error()); if ($table = mysql_fetch_assoc($record)) { // ログイン成功 $_SESSION['id'] = $table['id']; $_SESSION['time'] = time(); header('Location: group.php'); exit(); } else { $error['login'] = 'failed'; } } else { $error['login'] = 'blank'; } } ?>

    • ベストアンサー
    • PHP
  • PHPのログイン認証管理について

    PHPのログインシステムを開発することになったのですが、一般的に どういった手法がとられているのかお伺いしたくこちらに書き込ませて いただきました。 私が現在実装しているものは、下記となります。 ■ログインフォームからの入力値と照合させ、通った場合、下記の   ようにsession_idをセッションに保存   $_SESSION['authentication'] = sha1(session_id()); ■ログイン後はDBとの通信はせず、上記で保存されたセッション   情報を照合させることにより、認証させる。 if($_SESSION['authentication'] == sha1(session_id())){   認証成功処理 } else{   認証エラー処理 } なにか足りない点や、セキュリティ等の考え方から根本的に誤りが ある場合は、ご指摘いただけますと幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ログイン画面を作るとき

    ログイン画面を作っています。 メールアドレスとパスワードを入力するとログイン完了画面に飛ぶという形です。 入力したメールアドレスをデータベースから検索し、パスワードを照合して合致すれば完了画面へ、しなければはじかれるようにしたいのですが正しいパスワードを入力しても完了画面に飛びません。 回答よろしくお願いします。 ソース文(入力するテキストボックス等のソースは省いています) <?php if(isset($_POST['login'])) { if(empty($_POST['email'])) { print('メールアドレスを入力してください'); } elseif(empty($_POST['password'])) { print('パスワードを入力してください'); } elseif(!empty($_POST['email']) && !empty($_POST['password'])) { try { $db = new PDO('mysql:host=●;dbname=●;charset=utf8', '●', '●'); $stt = $db->prepare('SELECT password FROM `information` WHERE email=:email'); $stt->bindValue(':email', $_POST['email']); $stt->execute(); } catch(PDOException $e) { die('Error:'.$e->getMessage()); } /* while ($row = $stt->fetch()) { print($row['password']); } */ if($row['password'] == $_POST['password']) { header('Location: ログイン完了画面のページ'); } else { print('入力内容が間違っています。'); } } } ?>

    • ベストアンサー
    • PHP
  • セッションをログインについて

    はじめまして。 今、セッションを使ったログインのページを作っています。 流れは、 1.ログインページでIDとパスワードを入力。 2.入力したID・パスワードがあらかじめMysqlに保存してあったのと一致していたら会員ページに移動。 3.セッションにID・パスワードを保存してブラウザを閉じない限り、次回はログイン無しで会員ページに直接いけるようにする。セッションに保存されてないときはログインページにもどす。 以上の流れにそってプログラムを作りました しかし1・2は上手くいったのですが3の部分がうまくいきません。セッションにIDとパスワードを保存することができてるようなのですが、ブラウザを閉じずに、いったん別にページに行き、もう一度会員ページにもどろうとすると、ログインページ戻されてしまい、もう一度ログインしなければいけません。 以下に今回のプログラムを書きました。このプログラムのどこを直せば、いいのかお分かりになる方いらっしゃいましたらアドバイスのほうよろしくお願いします。 使用環境は PHP 5.2.5(xampp使用) MySQL 5.0.51a register_globals = Onになっています。 /*ログインページは省略しました。パスワードとユーザーIDを入力してこのページに飛びます。*/ <?php function redirect($url) { header("Location: ".$url); exit; } session_start(); /*保存していたセッションが存在するか確認なければログインのページにもどす。$_SESSION['username']) の部分を$_POST…にしたのですがそれでも結果は同じでした。*/ if(empty($_SESSION['username']) || empty($_SESSION['password'])) redirect("loginpage.php"); $user = $_POST['username']; $pass = md5($_POST['password']); /*Mysqlへ接続。セッションの問題が解決したらMysql用のクラスを作る予定です。*/ $dbHost = "localhost"; $dbUser = "*****"; $dbPass = "******"; $dbDatabase = "mysql"; $db = mysql_connect("$dbHost", "$dbUser", "$dbPass") or die ("Error connecting to database."); mysql_select_db("$dbDatabase", $db) or die ("Couldn't select the database."); $result=mysql_query("select * from users where username='$user' AND password='$pass'", $db); $rowCheck = mysql_num_rows($result); /*ID・パスワードが間違ってたら、ログインページに戻す。*/ if(empty($rowCheck)) redirect("loginpage.php"); $row = mysql_fetch_array($result); /*IDとパスワードをセッションに保存*/ $_SESSION['username'] = $user; $_SESSION['password'] = $pass; if($rowCheck > 0) { while($row = mysql_fetch_array($result)) { } /*ログイン成功したら会員ページを表示。*/ echo "Login Succeeded!".$_SESSION['username'];/*←セッションに保存されてるかのテスト。ちゃんと表示されました*/ include("C:/xampp/htdocs/cvptoylibrary.com.au/assets/includes/link1.php"); include("C:/xampp/htdocs/cvptoylibrary.com.au/assets/includes/link3.php"); } else { /*ID・パスワードを間違えてたらログインページに戻す。*/ echo 'Incorrect login name or password. Please try again.'; redirect("loginPage.php" ); } ?>

    • ベストアンサー
    • PHP
  • ログインシステムについて

    例えばこのようなサイト。 http://www.fimosw.com/ 左上にID(メールアドレス)パスワード その下に新規会員登録とありますが、 この、新規会員登録のシステムを自分で制作して、IDパスワードを入力して 自由にログインできるサイトを作りたいと思ってます。 ちなみに、CMSはWordPressを利用します。 私はhtml・css・phpは理解してますが、データベース(mysql)に 関しては疎く途方にくれてます... どなたか、作り方の概要だけでもいいので教えていただけ ないでしょうか・・・? または、参考になるような書籍でも.... お願いします(。・ω・。)

    • ベストアンサー
    • MySQL
  • ログイン画面から入って、「戻る」ボタン→「進む」ボタンを押したらエラーになる方法

    現在サイトを作成しており、ログイン画面にIDとパスワードを入力するとマイページに入れるというものを作りました。 しかしIDとパスワードを入力してマイページに行き、そこで「戻るボタン」でログイン画面に戻り、また「進むボタン」を押すとIDとパスを入力していないのにマイページに入れてしまいます; 「進むボタン」を押すと、”情報を再送信し、この Web ページを表示するには、ツール バーの [更新] ボタンをクリックしてください。”というようなエラー画面を表示させるためにはどうしたらいいのでしょうか? ご回答よろしくお願いいたします。

    • 締切済み
    • PHP

専門家に質問してみよう