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

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

ただいまの
回答率

87.58%

コアサーバー上のphpmyadminへ繋ぐにはどうすればいいですか?

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 651

score 27

連絡相手から「作ってもらったWebアプリケーションをローカルではなく
こちらで用意したコアサーバーに繋げて動かしてほしい」と言われ、

ーーーーーーーーーーーーーーーーーーーーーーー
ドメイン
ーーーーーーーーーーーーーーーーーーーーーーー
コアサーバのホスト 
FTP/SFTPポート
ユーザー名
パスワード 
ディレクトリ
ーーーーーーーーーーーーーーーーーーーーーーーー
DB名/DBユーザー名  
DBパスワード 
文字コード
接続ホスト名
接続ポート番号
ーーーーーーーーーーーーーーーーーーーーーー
phpMyAdmin
Basic認証
ユーザー名  
パスワード
ーーーーーーーーーーーーーーーーーーーーーーーー

これらの情報が送られてきて自分でも調べたのですがさっぱり
理解できません、下記に書くプログラムのコードのどこをどう
いじれば上手くいきますか?
宜しくお願いします。

<?php

/* HTML特殊文字をエスケープする関数 */
function h($str) {
    return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
}

// XHTMLとしてブラウザに認識させる
// (IE8以下はサポート対象外w)
header('Content-Type: application/xhtml+xml; charset=utf-8');

try {

    // データベースに接続
    $pdo = new PDO(
        'mysql:host=localhost;dbname=board;charset=UTF8;',
        'root',
        '',
        [
            PDO::ATTR_EMULATE_PREPARES => false,
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        ]
    );

    /* 書き込みがあったとき */



    if ($_POST['word']) {

        // バッファリングを開始
        ob_start();

        try {

            // $_FILES['upfile']['error'] の値を確認
            switch ($_FILES['upfile']['error']) {
                case UPLOAD_ERR_NO_FILE:
                    break;
                case UPLOAD_ERR_OK: // OK
                    break;
                case UPLOAD_ERR_INI_SIZE:  // php.ini定義の最大サイズ超過
                case UPLOAD_ERR_FORM_SIZE: // フォーム定義の最大サイズ超過
                    throw new RuntimeException('ファイルサイズが大きすぎます', 400);
                default:
                    throw new RuntimeException('その他のエラーが発生しました', 500);
            }

            /* 画像があったとき */
            if(is_uploaded_file($_FILES['upfile']['tmp_name'])){
                // $_FILES['upfile']['mime']の値はブラウザ側で偽装可能なので
                // MIMEタイプを自前でチェックする
                if (!$info = @getimagesize($_FILES['upfile']['tmp_name'])) {
                    throw new RuntimeException('有効な画像ファイルを指定してください', 400);
                }
                if (!in_array($info[2], [IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG], true)) {
                    throw new RuntimeException('未対応の画像形式です', 400);
                }

                // サムネイルをバッファに出力
                $create = str_replace('/', 'createfrom', $info['mime']);
                $output = str_replace('/', '', $info['mime']);
                if ($info[0] >= $info[1]) {
                    $dst_w = 120;
                    $dst_h = ceil(120 * $info[1] / max($info[0], 1));
                } else {
                    $dst_w = ceil(120 * $info[0] / max($info[1], 1));
                    $dst_h = 120;
                }
                if (!$src = @$create($_FILES['upfile']['tmp_name'])) {
                    throw new RuntimeException('画像リソースの生成に失敗しました', 500);
                }
                $dst = imagecreatetruecolor($dst_w, $dst_h);
                imagecopyresampled($dst, $src, 0, 0, 0, 0, $dst_w, $dst_h, $info[0], $info[1]);
                $output($dst);
                imagedestroy($src);
                imagedestroy($dst);
            }

            // INSERT処理
            $stmt = $pdo->prepare('INSERT INTO contributions(user_name,word,img_name,type,raw_data,thumb_data,date) VALUES(?,?,?,?,?,?,?)');
            $stmt->execute([
                $_POST['user_name'],
                $_POST['word'],
                $_FILES['upfile']['name'],
                $info[2],
                file_get_contents($_FILES['upfile']['tmp_name']),
                ob_get_clean(), // バッファからデータを取得してクリア
                (new DateTime('now', new DateTimeZone('Asia/Tokyo')))->format('Y-m-d H:i:s'),
            ]);

            $msgs[] = ['green', '投稿しました'];

        } catch (RuntimeException $e) {

            while (ob_get_level()) {
                ob_end_clean(); // バッファをクリア
            }
            http_response_code($e instanceof PDOException ? 500 : $e->getCode());
            $msgs[] = ['red', $e->getMessage()];

        }

    }

    // 一覧取得
    $rows = $pdo->query('SELECT id,user_name,word,img_name,type,thumb_data,date FROM contributions ORDER BY date DESC')->fetchAll();

} catch (PDOException $e) {

    http_response_code(500);
    $msgs[] = ['red', $e->getMessage()];

}

?>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>掲示板</title>
        <style>
            <![CDATA[
                fieldset { margin: 10px; }
                legend { font-size: 12pt; }
                img {
                    border: none;
                    float: left;
                }
            ]]>
        </style>
    </head>

    <body>
        <form enctype="multipart/form-data" method="post" action="">
            <fieldset>
                <input type="text" name="user_name" placeholder="名前を入力" /><br />
                <input type="text" name="word" placeholder="言葉を入力" />

                <legend>書き込みフォーム</legend>
                <input type="file" name="upfile" /><br />
                <input type="submit" value="送信" />
            </fieldset>
        </form>

        <?php if (!empty($msgs)): ?>
            <fieldset>
                <legend>メッセージ</legend>
                <?php foreach ($msgs as $msg): ?>
                <ul>
                    <li style="color:<?=h($msg[0])?>;"><?=h($msg[1])?></li>
                </ul>
                <?php endforeach; ?>
            </fieldset>
        <?php endif; ?>

        <?php if (!empty($rows)): ?>
            <fieldset>
                <legend>書き込み一覧</legend>
                <?php foreach ($rows as $i => $row): ?>
                    <?php if ($i): ?>
                        <hr />
                    <?php endif; ?>
                    <p>
                        番号: <?=h($row['id'])?> 
                        名前: <?=h($row['user_name'])?> 
                        日付: <?=h($row['date'])?> <br />
                        <?=h($row['word'])?> <br />
                        <?=
                            sprintf(
                                '<a href="?id=%d"><img src="data:%s;base64,%s" alt="%s" /></a>',
                                $row['id'],
                                image_type_to_mime_type($row['type']),
                                base64_encode($row['thumb_data']),
                                h($row['img_name'])
                            )
                        ?>
                        <br clear="all" />
                    </p>
                <?php endforeach; ?>
            </fieldset>
        <?php endif; ?>
    </body>
</html>
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m.ts10806

    2018/10/01 15:22

    そのコアサーバーへping投げて返ってきますか?また、アプリケーションはどこに載せて動かすのでしょうか?

    キャンセル

回答 2

checkベストアンサー

0

推測ですが、

プログラム内で使用しているDBを「ローカルではなく」、「コアサーバー」というレンタルサーバー上のDBに「繋げて」実行してください。

という指示だと思います。

確認が必要なのは、プログラムの実行そのものはローカルで良いのか、それとも「コアサーバー」に移設するのかどうかです。

いずれにしても、プログラム上のDB接続のところを与えられた情報に従い変更する必要があります。

// データベースに接続
$pdo = new PDO(
        'mysql:host=localhost;dbname=board;charset=UTF8;',
        'root',
        '',
        :

ただ、DBだけを外部接続ということになると、
サーバー側で外部からの接続を許可している必要があるので注意してください。
テーブル自体がサーバー側に作成されていないのであればphpMyAdminで作成してください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

以下の部分を書き換えてあげれば上手くいきそうな気がします。

    // データベースに接続
    $pdo = new PDO(
        'mysql:host=localhost;dbname=board;charset=UTF8;',
        'root',
        '',

↓

    // データベースに接続
    $pdo = new PDO(
        'mysql:host=ホスト名;dbname=DB名;charset=UTF8;',
        'DBユーザー名',
        'DBパスワード',

PHPでデータベースに接続するときのまとめ

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 87.58%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る