こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHP エラー

PHP勉強中の初心者です。会員登録画面を作り動作確認しているのですが
ログインするときに下記のエラーが出ます。
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'nakahiro7'@'localhost' (using password: NO) in /home/nakahiro7/nakahiro7.webcrow.jp/public_html/public_html/login.php on line 15
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/nakahiro7/nakahiro7.webcrow.jp/public_html/public_html/login.php on line 15
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'nakahiro7'@'localhost' (using password: NO) in /home/nakahiro7/nakahiro7.webcrow.jp/public_html/public_html/login.php on line 16
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/nakahiro7/nakahiro7.webcrow.jp/public_html/public_html/login.php on line 16
Warning: mysql_query() [function.mysql-query]: Access denied for user 'nakahiro7'@'localhost' (using password: NO) in /home/nakahiro7/nakahiro7.webcrow.jp/public_html/public_html/login.php on line 18
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/nakahiro7/nakahiro7.webcrow.jp/public_html/public_html/login.php on line 18
Access denied for user 'nakahiro7'@'localhost' (using password: NO)

login.phpのソースは下記です
<?php require('dbconnect.php');
session_start();
if ($_COOKIE['email'] != ''){
$_POST['email'] = $_COOKIE['email'];
$_POST['password'] = $_COOKIE['password'];
$_POST['save'] = 'on'; }

if(!empty($_POST))


//ログインの処理
if ($_POST['email'] != '' && $_POST['password'] != ''){
$sql = sprintf('SELECT * FROM member WHERE email="%s" AND password="&s"',

mysql_real_escape_string($_POST['email']),
mysql_real_escape_string(sha1($_POST ['password'])));

$record = mysql_query($sql) or die(mysql_error());
if ($table = mysql_fetch_assoc($record)) {

//ログイン成功
$_SESSION['id'] = $table['id'];
$_SESSION['time'] = time();

//ログイン情報を記録する
if ($_POST['save'] == 'on') {
setcookie('email',$_POST['email'],time()+60*60*24*14);
setcookie('password',$_POST['password'],
time()+60*60*24*14); }

header('Location: index.php');
exit();}else{
$error['login'] = 'failed'; }}else{ $error['login'] = 'blank'; } ?>



<div id="lead">
<p>アドレスとパスワードを入力しログインしてください</p>
<p>メンバーズ登録がまだの方はこちら</p>
<p>&raquo;<a href="join/">メンバーズ登録をする</a></p>
</div>


<form action="" method="post">

<d1>
<dt>アドレス</dt>
<dd>
<input type="text" name="email" size="35" maxlength="255"
value="<?php echo htmlspecialchars($_POST['email']); ?>" />
<?php if($error['login'] == 'blank'): ?>
<p class="error">*アドレスとパスワードを記入ください</p>
<?php endif; ?>
<?php if ($eoor['login'] == 'failed'): ?>
<p class="error">*ログインに失敗しました。正しく入力してください。</p>
<?php endif; ?>
</dd>

<dt>pasword</dt>
<dd>
<input type="password" name="password" size="35" maxlength="255"
value="<?php echo htmlspecialchars($_POST['password']); ?>" />
</dd>

<dt></dt>
<dd><input id="save" type="checkbox" name="save" value="on">
<label for="save">次回から自動的にログイン</label> </dd>
</d1>
<div> <input type="submit" value="Log in"/></div>

</form>
ググりまくりましたが解決できませんでした。
エラーの解決方法 その他ご指摘ありましたらお願いいたします。

投稿日時 - 2015-11-18 11:15:38

QNo.9082127

困ってます

質問者が選んだベストアンサー

よく見てみると、エラーの中に"webcrow.jp"の文字が…

実サーバー上でテストをするのはやめましょう!!!

その上で、エラーを見てみると"@'localhost' (using password: NO)"という記述が…
実際のサーバー上で(using password: NO)なんてことはあり得ない。

中身がわからんが、require('dbconnect.php')内で行っているであろうDB接続に、パスワードを指定していないから接続できていないんじゃないかな?



○mysql_real_escape_stringを使うのはやめましょう

http://php.net/manual/ja/function.mysql-real-escape-string.php

>この拡張モジュールは PHP 5.5.0 で非推奨になり、PHP 7.0.0 で削除されました。 MySQLi あるいは PDO_MySQL を使うべきです。

○サーバー上でテストなんてするのはやめましょう

XAMPP等のローカルでテストできる環境を構築しましょう

https://www.apachefriends.org/jp/index.html


○ mysql_query($sql) or die(mysql_error());

構築中やテスト中にはエラー情報がとても有用だが、実稼働サーバーではエラーは必ず隠さなければならない。
攻撃者にとってエラー情報はとても有用な情報源だから。
die(mysql_error())なんてのは最もダメなことの一つ。

○setcookie('email',$_POST['email'],time()+60*60*24*14);
setcookie('password',$_POST['password'],
time()+60*60*24*14);

クッキーにemail(ログインID)やパスワードを保存しちゃダメーーーッ!!
クッキーは他人から見られるものと考えるべきで、ログイン情報がダダ漏れ!!

○「次回から自動的にログイン」機能にとてつもない違和感が…

$_COOKIE['email']になんらかのログインできないデータが登録された場合、その後二度とログインできなくなるあたりだろうか?(クッキーを削除すればできるようになるが)

おそらくその潜在バグの他にも、何かが隠れている予感が…

ログアウト処理、退会処理、あるいはパスワードの変更辺りで、高確率でバグが発生しそうな実装だという問題だろうか?
いまいち判らん。

投稿日時 - 2015-11-18 13:32:12

お礼

仕事のためお礼が遅くなり申し訳ございません。
現在 たにぐちまことの「よくわかるphpの教科書」で勉強中ですが かなり評判の悪い教材みたいです。教科書の練習問題ですらバグが起きるということなので 今日2015年版の秀和システムの新しい教材を買いました。
これでまた地道に学んでいこうと思います。 ありがとうございました。

投稿日時 - 2015-11-19 19:26:05

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

「Access denied for user 'nakahiro7'@'localhost'」と怒られているので、「nakahiro7」と言うユーザーがMySQLに登録されていないか、localhostでのアクセス権が設定されていないんじゃないでしょうか。

投稿日時 - 2015-11-18 12:46:43

お礼

仕事のためお礼が遅くなり申し訳ありませんでした。
現在つかっている教材が評判が悪いので本日新しい教材を買いました。
地道に学んでいこうと思います。 
お忙しい中、回答してくださって誠にありがとうございました。

投稿日時 - 2015-11-19 19:28:07

あなたにオススメの質問