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

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

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

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

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

Q&A

解決済

1回答

3334閲覧

MAMPでindex.phpにアクセスしようとした時にエラーが...

culuculu

総合スコア52

PHP

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

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

0グッド

0クリップ

投稿2016/01/12 19:49

編集2016/01/13 01:12

よくわかるPHPの教科書という本のPart5のPractice2でindex.phpを作成し、そのファイルにアクセスしようとした時に
Access denied for user 'root'@'localhost' (using password: NO)
と表示されてしまいます。
このエラーを調べてもMySQLでの対処法が多く載っていましたがMySQLは一切使ってないのでMAMPでの対策が知りたいです。
どなたかご教授願います。
以下にindex.phpのコードを載せたいと思います。

<------index.php------->

<?php session_start(); require('dbconnect.php'); if (isset($_SESSION['id']) && $_SESSION['time'] + 3600 > time()) { // ログインしている $_SESSION['time'] = time(); $sql = sprintf('SELECT * FROM members WHERE id=%d', mysqli_real_escape_string($db, $_SESSION['id']) ); $record = mysqli_query($db, $sql) or die(mysqli_error($db)); $member = mysqli_fetch_assoc($record); } else { // ログインしていない header('Location: login.php'); exit(); } // 投稿を記録する if (!empty($_POST)) { if ($_POST['message'] != '') { $sql = sprintf('INSERT INTO posts SET member_id=%d, message="%s", reply_post_id=%d, created=NOW()', mysqli_real_escape_string($db, $member['id']), mysqli_real_escape_string($db, $_POST['message']), mysqli_real_escape_string($db, $_POST['reply_post_id']) ); mysqli_query($db, $sql) or die(mysqli_error($db)); header('Location: index.php'); exit(); } } // 投稿を取得する $page = $_REQUEST['page']; if ($page == '') { $page = 1; } $page = max($page, 1); // 最終ページを取得する $sql = 'SELECT COUNT(*) AS cnt FROM posts'; $recordSet = mysqli_query($db, $sql); $table = mysqli_fetch_assoc($recordSet); $maxPage = ceil($table['cnt'] / 5); $page = min($page, $maxPage); $start = ($page - 1) * 5; $start = max(0, $start); $sql = sprintf('SELECT m.name, m.picture, p.* FROM members m, posts p WHERE m.id=p.member_id ORDER BY p.created DESC LIMIT %d, 5', $start ); $posts = mysqli_query($db, $sql) or die(mysqli_error($db)); // 返信の場合 if (isset($_REQUEST['res'])) { $sql = sprintf('SELECT m.name, m.picture, p.* FROM members m, posts p WHERE m.id=p.member_id AND p.id=%d ORDER BY p.created DESC', mysqli_real_escape_string($db, $_REQUEST['res']) ); $record = mysqli_query($db, $sql) or die(mysqli_error($db)); $table = mysqli_fetch_assoc($record); $message = '@' . $table['name'] . ' ' . $table['message']; } // htmlspecialcharsのショートカット function h($value) { return htmlspecialchars($value, ENT_QUOTES, 'UTF-8'); } // 本文内のURLにリンクを設定します function makeLink($value) { return mb_ereg_replace("(https?)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)", '<a href="\1\2">\1\2</a>' , $value); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="stylesheet" type="text/css" href="style.css" /> <title>ひとこと掲示板</title> </head> <body> <div id="wrap"> <div id="head"> <h1>ひとこと掲示板</h1> </div> <div id="content"> <div style="text-align: right"><a href="logout.php">ログアウト</a></div> <form action="" method="post"> <dl> <dt><?php echo htmlspecialchars($member['name']); ?>さん、メッセージをどうぞ</dt> <dd> <textarea name="message" cols="50" rows="5"><?php echo h($message, ENT_QUOTES, 'UTF-8'); ?></textarea> <input type="hidden" name="reply_post_id" value="<?php echo h($_REQUEST['res'], ENT_QUOTES, 'UTF-8'); ?>" /> </dd> </dl> <div> <p> <input type="submit" value="投稿する" /> </p> </div> </form> <?php while($post = mysqli_fetch_assoc($posts)): ?>
<div class="msg"> <img src="member_picture/<?php echo h($post['picture']); ?>" width="48" height="48" alt="<?php echo h($post['name']); ?>" /> <p><?php echo makeLink(h($post['message'])); ?><span class="name">(<?php echo h($post['name']); ?>)</span>[<a href="index.php?res=<?php echo h($post['id']); ?>">Re</a>]</p> <p class="day"><a href="view.php?id=<?php echo h($post['id']); ?>"><?php echo h($post['created']); ?></a>
<?php if ($post['reply_post_id'] > 0): ?>
<a href="view.php?id=<?php echo h($post['reply_post_id']);

?>">返信元のメッセージ</a>

<?php endif; ?> <?php if ($_SESSION['id'] == $post['member_id']): ?>
[<a href="delete.php?id=<?php echo h($post['id']); ?>" style="color: #F33;">削除</a>]
<?php endif; ?> </p> </div> <?php endwhile; ?> <ul class="paging"> <?php if ($page > 1) { ?> <li><a href="index.php?page=<?php print($page - 1); ?>">前のページへ </a></li> <?php } else { ?> <li>前のページへ</li> <?php } ?> <?php if ($page < $maxPage) { ?> <li><a href="index.php?page=<?php print($page + 1); ?>">次のページへ </a></li> <?php } else { ?> <li>次のページへ</li> <?php } ?> </ul> </div> <div id="foot"> <p><img src="images/txt_copyright.png" width="136" height="15" alt="(C) H2O SPACE, Mynavi" /></p> </div> </div> </body> </html>

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

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

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

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

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

tanat

2016/01/12 23:10

現在の質問だと、その本を持っている人しか回答出来ませんので、 index.php のソースコードを書くと回答が得られるかもしれませんよ。
KoichiSugiyama

2016/01/13 00:43

MAMPということはMacにPHP、Apache、MySQLを使ったシステム環境を作るツールですので、MySQLが全く無関係というわけではありません。index.phpの内容によっては、しらずしらずのうちMySQLにアクセスするコードがふくまれているかもしれません。まずはindex.phpの内容を提示してください。
culuculu

2016/01/13 01:10

ご指摘ありがとうございます。 index.phpのコードを載せたいと思います。
guest

回答1

0

ベストアンサー

データベースにつながらないエラーだと思いますが・・・

コードを拝見するに、DBに接続している箇所がないように見えます。
冒頭にある

require('dbconnect.php');

の、dbconnect.php 内部でDB接続しているかと思われます。
(だとしたらちょっと乱暴な処理です・・・)

このソース内でDB接続している際の、ユーザー名とパスワードを確認してみてください。

投稿2016/01/13 02:07

Toyoshima

総合スコア422

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

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

culuculu

2016/01/13 03:15

ありがとうございます。 MySQLに関係するエラーなのでDBに関するphpに問題があることがわかりました。 dbconnect.phpのコードをもう一度確認したいと思います。
culuculu

2016/01/13 03:23

<?php $db = mysqli_connect('localhost', 'root', 'root', 'mini_bbs') or die(mysqli_connect_error()); mysqli_set_charset($db, 'utf8'); ?> このコードの2行目の2つ目のrootを記載していませんでした。 記載してブラウザを更新しなおすと直りました。 答えていただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問