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

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

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

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

Q&A

解決済

2回答

1775閲覧

ドットインストールで「PHPでTwitterログインを実装しよう (全23回) プレミアム」と「PHPでFacebookログインを実装しよう (全24回) プレミアム」

KosukeYamamoto

総合スコア220

PHP

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

0グッド

0クリップ

投稿2016/01/16 11:10

編集2016/01/16 11:36

ドットインストールで「PHPでTwitterログインを実装しよう (全23回) プレミアム」と「PHPでFacebookログインを実装しよう (全24回) プレミアム」
を同じページに作ると

Notice: Constant DSN already defined in /home/vagrant/config.php on line 13

Notice: Constant DB_USERNAME already defined in /home/vagrant/config.php on line 14

Notice: Constant DB_PASSWORD already defined in /home/vagrant/config.php on line 15

Notice: Constant CALLBACK_URL already defined in /home/vagrant/config.php on line 17

Notice: A session had already been started - ignoring session_start() in /home/vagrant/config.php on line 19

Fatal error: Cannot redeclare h() (previously declared in /home/vagrant/functions2.php:3) in /home/vagrant/functions.php on line 5

となります。

おそらくインデックスにrequire_once(DIR . '/config2.php');
require_once(DIR . '/config.php');

この二つがあるからだと思うのですがどうすれば

どうすれば同じページにツイッターログインボタンとフェイスブックログインボタンを作ることができますか?

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

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

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

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

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

izkn

2016/01/16 11:12

こちらの質問が他のユーザから「質問の範囲が広すぎる」という評価を受けています わからない点を明確にし、調査したこと・試したことと共に記入していただくと、回答が得られやすくなります。
退会済みユーザー

退会済みユーザー

2016/01/16 11:25

エラーメッセージの解決方法は分かっているのですか? 最後の一文のせいで、何を解決したいのかがぼやけてしまっています。 どうすればできるかは実装次第です。 まず、config.phpを二つrequireしているのをやめてみたらどうでしょうか。
KosukeYamamoto

2016/01/16 11:37

configを二つ作らなければ、DSNを defineできなくはないでしょうか?
退会済みユーザー

退会済みユーザー

2016/01/16 11:42

どちらにしてもredeclareで重複定義されているというエラーが出ているので、config.phpを整理して、一個にまとめるべきでは?それか、どちらかのファイルのh()という関数を消すとか。
KosukeYamamoto

2016/01/16 12:45

なるほど!わかりました。ありがとうございます。
KosukeYamamoto

2016/01/16 12:46

一つにまとめたとき、DSNはどうしましょうか?
KosukeYamamoto

2016/01/16 12:47

ちなみにh()はconfigに出てきていません><
退会済みユーザー

退会済みユーザー

2016/01/31 04:53

こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました 「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。
guest

回答2

0

エラーメッセージを読みましょう。
まずこれができないと、エラー一個ずつ質問しないといけなくなりますよ。

Fatal error: Cannot redeclare h() (previously declared in /home/vagrant/functions2.php:3) in /home/vagrant/functions.php on line 5
ここにファイル名が出ていますよね。config.phpから呼び出していませんか?
自分の書いたコードが、どのように動いているか、追いかけていきましょう。

投稿2016/01/16 13:04

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

KosukeYamamoto

2016/01/16 13:17

h()は二回使えないということですか? 二回使うにはどうすればいいでしょうか?
KosukeYamamoto

2016/01/16 13:37

h()は解決しました。 一つにまとめたとき、DSNはどうしましょうか?
退会済みユーザー

退会済みユーザー

2016/01/16 22:34

DSNの設定は2つ要らないですよね。 既にconfigで設定してて、config2でも設定しているために重複の警告が出ているのですから、不要な方のdefineを消せば良いです。 そういうことを続けていくと、結局config2は不要で、configに必要な設定を編集・追記すればいいと気が付くはずです。
KosukeYamamoto

2016/01/16 23:19 編集

いえDSNは二つ必要です。ツイッター用とフェイスブック用です。 なので、困っているのです。
guest

0

ベストアンサー

Constant DSN already defined

ここで言っているDSNというのは只の定数名なので、意味はないのです。HOGEでもHAGEでもいいのです。

だから、只動けばいいのであれば、
片方をFACEBOOK_DSN、もう片方をTWITTER_DSNなんかにしてしまえばいいです。
他の定数も同様、それを使う場所も書き換えればいいです。

本来は、こういうのを定数にしちゃうのはおかしいのですが、
ドットインストールは勉強サイトなので、まぁ、勉強用と割りきりましょう。

投稿2016/01/16 23:44

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2016/01/16 23:48

>A session had already been started これは、session_start()が二回呼ばれてるってことでしょう。 これは、後に実行されてる方を消すだけでいいですが、そもそもの書く場所を変えるほうがいいと思います。
KosukeYamamoto

2016/01/16 23:49

ちなみに 'FACEBOOK_DB_USERNAME', こういった形にしても問題ないでしょうか? Notice: A session had already been started - ignoring session_start() in /home/vagrant/config.php on line 19 あと上記の部分はどうしましょうか??
退会済みユーザー

退会済みユーザー

2016/01/17 00:00 編集

あんまり良く見ないで書いたのですが、新規質問のほうをみてなんとなく意味がわかりました。 >'FACEBOOK_DB_USERNAME', >こういった形にしても問題ないでしょうか? このDBというのは、あなたのデータベースのことですよね? であれば、 DB_USERNAME DB_PASSWORD CALLBACK_URL については、どちらか片方を削除するだけでいいです。あるいは、例えばcommon_config.phpなんかをつくって、そこで1回定義すればいいです。 session_start()も、そこで1回実行すればいいかなと。(configファイルでsession_start()するって変な気もしますが)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問