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

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

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

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

3600閲覧

ツイッターカードの画像をPHPで動的に変更したい

atomatom

総合スコア17

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/04/29 10:36

ツイッターカードの画像URLをPHPの変数で動的に変更したいのですが、headの最初に書くと変数imageの定義前なので空になってしまいます。しかし、メタタグをソースのようにphpのあとに書くとツイッターカードのエラーになります。どうしたらいいでしょうか?

<!DOCTYPE html> <html lang="ja"> <head> <?php session_start(); include_once 'dbconnect.php'; if(!isset($_SESSION['user'])) { header("Location: index3.php"); } // ユーザーIDからユーザー名を取り出す $query = "SELECT * FROM ???? WHERE user_id=".$_SESSION['user'].""; $result = $mysqli->query($query); $result = $mysqli->query($query); if (!$result) { print('クエリーが失敗しました。' . $mysqli->error); $mysqli->close(); exit(); } // ユーザー情報の取り出し while ($row = $result->fetch_assoc()) { global $username; $username = $row['username']; $user_id = $row['user_id']; $email = $row['email']; global $image; $image = $row['image']; } // データベースの切断 $result->close(); ?> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:site" content="http://????/home.php"> <meta name="twitter:creator" content="@Sarah"> <meta name="twitter:title" content="Parade of Fans for Houston’s Funeral"> <meta name="twitter:description" content="NEWA"> <meta name="twitter:image" content="http://feed.littlestar.jp/???/images/<?php echo $image;?>">

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

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

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

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

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

guest

回答2

0

ベストアンサー

がると申します。
気付いた点をいくつか。

この書き方ですと

PHP

1if(!isset($_SESSION['user'])) { 2 header("Location: index3.php"); 3}

の所で、if文がtrueだった時に警告が出ると思います(警告自体を抑止していたら警告はでませんが、Location: index3.php 自体は出力されないので、意図したとおりには動かないと思います)。
上述の処理は、

HTML

1<!DOCTYPE html> 2<html lang="ja">

より前に書いたほうがよいと思います。

PHP

1$query = "SELECT * FROM ???? WHERE user_id=".$_SESSION['user']."";

の所ですが、外部由来ではないと思われるであろう、にしても、念のために「プリペアドステートメント」で書いておいたほうが、より安全(または安心)かと思います。

PHP

1while ($row = $result->fetch_assoc()) {

何となくではあるのですが、WHERE user_id=、というSQL文的に「複数行が入ってくるケース」はないと思うので、whileではなくifのほうが、意図としてはより妥当かと思います。

3番にも少し関連する内容になるのですが。

PHP

1$image = $row['image'];

ここが通らない(SQL文でデータが取得できていない)時の処理が、欠けているように思われます。

また、余談に近いですが

PHP

1global $image;

等の、global宣言部分は、このコードですと不要かと思われます。

で。

ツイッターカードのエラー

になるのは、直接的には

HTML

1<meta name="twitter:image" content="http://feed.littlestar.jp/???/images/<?php echo $image;?>">

のcontentの部分のURIが壊れている事が予見されて。
恐らく可能性としては
・そもそも「<?php echo $image;?>」の中にある、$imageの変数の中に適切な値が入っていない
・URIの記述に間違いがある
のどちらか、かと思われるので。

PHPのプログラム側のアプローチとしては、まず「$imageに適切なデータが入っているか?」を確認するのがよいか、と思います。

投稿2017/04/29 13:59

gallu

総合スコア506

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

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

0

htmlをphp変数を埋め込んだテンプレートにして、
dbから取得するphpから値をセットしてテンプレートに呼び出すとか?

投稿2017/04/29 12:30

yuki84web

総合スコア1857

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問