- ベストアンサー
phpのみで記述されたhtmlページにリンクする時bodyタグのvlinkが効かない
htmlもphpも初心者です。 あるhtmlページ”A”から、phpのみで記述されたhtmlページ”B”にリンクして、”A”ページに戻る場合の質問です。 ページ”A”には、bodyタグで vlink色指定をしているのに、効かないのはなぜでしょうか。 まだ見ていないページと見たページを確実に色指定したいのですが…。 宜しくお願い致します。
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
ごめんなさい。前に書いた$_GETほにゃららも 一回ブラウザを閉じると元に戻っちゃいます。 嘘を書いてしまいました。
その他の回答 (9)
- moon_night
- ベストアンサー率32% (598/1831)
普通に考えれば、 A.htmlがHTMLのみのページで、 B.htmlがPHPでブラウザ(OS)の判定を行うのでしたら、 B.htmlの戻り先は 余計な引数をつけずに、 <a href="A.html">もどる</a> とすればいいのではないのでしょうか? そうすればvlinkが利くはずです。 もしやA.htmlでもPHPでの判定をしているのでしょうか?
お礼
ありがとうございました。 もう少し考えてみます。
補足
ご回答ありがとうございます。 A.htmlにはphp表記はありません。 現状のソースのvlinkに関係する部分のみもう少し詳しく下記に記述します。 【A.html】 <HTML> <HEAD><TITLE>******</TITLE></HEAD> <body link=#0000FF vlink=#FF0000> <A HREF="B.html?mldfile=*****&page=A.html &uid=*********">******</A><BR> </BODY> </HTML> 【B.html】 <?php require('../lib/**********.php'); if(! $page || ! $mldfile){ Header("Location: http://$HTTP_HOST/********/$page.html"); exit ; } if( checkAgentAbility("*****",$HTTP_USER_AGENT) ){ $besttype = Sound($HTTP_USER_AGENT, 'mld/', $mldfile); Header("Location: http://$HTTP_HOST/******************.mld"); exit ; } ?> <HTML> <HEAD><TITLE>My D-style</TITLE></HEAD> <body link=#0000FF vlink=#FF0000> <BR> <?php echo "ご利用できません。<BR>\n" ; echo "<BR>\n" ; echo "<A HREF=\"$page.html\"><FONT COLOR=\"#0000FF\">戻る</FONT></A><BR>\n" ; ?> </BODY> </HTML> 利用できない人が判別ではねられて、Bページhtml部分が表示されますとvlinkが効きます。
- cororo
- ベストアンサー率22% (2/9)
ごめんなさい。セッションつかったら、一回閉じちゃうと、元に戻っちゃう。
- cororo
- ベストアンサー率22% (2/9)
BページからAページに戻ったときにリンクの色が変わるようにしたいのであれば、 Aページに先ほど書いたコードを書くといいと思います。 一応、スタイルシートというのを使ってます。 参考urlのCSS講座を見たら面白いよ。 style=というところがそうです。 でも、これだとちょっと心配なので,セッション使ってもいいかも。 Bページに <?php session_start(); $_SESSION['vlink']="style='color:white;'"; ?> んでAページで <?php session_start(); if(isset($_SESSION['vlink'])){ $vlink=$_SESSION['vlink']; }else{ $vlink=""; } echo "<a". $vlink."href=="*****.html?mldfile=******&page=******&uid=*******">"; ?> 試していないので、間違ってたらごめんなさい。 ただ、前のコードも今回のコードもWWWサーバー(apacheとか)で拡張子をphpに設定していなかったら、多分動かないと思います。
- 参考URL:
- http://www.cybergarden.net/
お礼
ありがとうございます!! ご紹介いただいたCSS講座、参考にさせていただきます。 CSSの外部ファイル化のところ、興味深いです。 現在、勉強中で内容についていくのがいっぱいいっぱいですが、こんなの、自分でスラスラできたらかっちょい~ですね。
- cororo
- ベストアンサー率22% (2/9)
<?php if(isset($_GET['mldfile'])){ $vlink="style='color: #006666;'"; }else{ $vlink=""; } ?> <a ${vlink} href="*****.html?mldfile=******&page=******&uid=*******"> にしたらだめだべか。<body>のvlinkは必要なくなるとおもうけども。 ところでこの間は自身ありになってましたが、チェックを間違っただけです。
お礼
よくよく考えると私の勘違いでしたでしょうか。 Bページに <?php if(isset($_GET['mldfile'])){ $vlink="style='color: #006666;'"; }else{ $vlink=""; } ?> Aページに <a ${vlink} href="*****.html?mldfile=******&page=******&uid=*******"> でしょうか。
補足
cororoさん、ありがとうございます。 具体的にphp記述していただき感激です。 なるほど…Bページへリンクする際にvlinkを渡してしまうのですね。 phpは、読んでやっとロジックがわかる程度の知識しかないのですが、 Bページから、Aページへの戻りはそのままでいいのでしょうか。
- moon_night
- ベストアンサー率32% (598/1831)
原因はそこだと思われます。 <A HREF="*****.html?mldfile=******&page=******&uid=*******"> ここで、値が可変の場合、まったく同じ値にしなければvlinkが発動しません。 たとえ*****.htmlが同じであっても、その後のmidfile...もまったく同じURLでなければいけません。 (A.htmlはアクセスしたことがあっても、A.html?id=xx はアクセスしたことがないので)
お礼
ありがとうございました。 よく分かりました。 もう少し、悩んでみます。。
- moon_night
- ベストアンサー率32% (598/1831)
再度補足要求。 3.require('../lib/*****.php'); で何をしているのか?↓ このphpファイルで、判別をしています。 何を判別しているのですか? 4.その拡張子 .htmlのPHPは動作しているのか?↓ このhtmlのphpはただlib下の*****.phpに飛ばしているのみです。 lib下の*****.phpの判別にひっかからなかったもののみ、Bページのhtml本文を表示させています。 よく意味が分からないのですが、 b.html内の******.phpは動作しているのですね。 何を判別しているのか分かりませんが、 BページからAページのリンクはどのようにしているのですか? CSSなどは設定していませんよね? 一応デフォルト(Bodyの設定が<BODY>だけ)でもvlinkはデフォルトの色を使うはずなので動くはずなのですけども。。。 多分リンクのしかたの問題かな・・・?
補足
ありがとうございます。 何を判別しているのですか?↓ あるファイルをダウンロードするのに適した機種なのかそうでないのかを判別しています。 判別後、ダウンロードできない場合のみBページのhtml本文が表示されるようになっています。 自分で検証しましたが、Bページのhtml本文が表示されたこの場合は、vlinkが効いて正常動作します。 問題なのはダウンロードできる機種の場合、そのままBページのphpでダウンロード実行し、戻りはAページの、Bページへのリンクの際の変数で渡したページに戻るようにしてあります。(下記のpage=******) <A HREF="*****.html?mldfile=******&page=******&uid=*******">
- moon_night
- ベストアンサー率32% (598/1831)
すいません。 補足要求します。 分かっていること。 1、まずAページからBページに移動する。 そしてBページからAページにもどるときにvlinkの色指定が適用されていない 2、Aページには <body link="#0000FF" vlink="#FF0000"> と書いてある。 分からないこと。 1、リンクはどのようにしている?(リンクのソースを書いてください) <a href="xxx.php?id=xx">リンク</a> とかでIDを指定などとした場合は違うURLと認識されるのでvlinkは適用されない。 2、BページのBodyはどうなっていますか? Bページに vlink="#ff0000" といった指定がなければ適用されません。 3、require('../lib/*****.php'); で何をしているのか? 単にデザインのテンプレートだったら特に無視しても構わないでしょうが、BodyやCSSを書き出ししているのでしたらソースがないと答えようがありません。 4、その拡張子 .htmlのPHPは動作しているのか? 通常の設定では .htmlの拡張子ではPHPは動きません。 サーバの設定を変更すれば動作させることは可能ですけども。 できればAページとBページの全ソースがあれば正確な答えが返せると思います。
お礼
ありがとうございました。but… BページのBody、vlink指定しましたが、やはりダメでした。 (T_T)
補足
moon_nightさん、ありがとうございます。 丁寧に考えていただき、恐縮です。 1.AページのBページへのリンクのソースです。↓ <A HREF="*****.html?mldfile=******&page=******&uid=*******">Bページへ</a> 2.BページのBody↓ <BODY>のみです。 3.require('../lib/*****.php'); で何をしているのか?↓ このphpファイルで、判別をしています。 4.その拡張子 .htmlのPHPは動作しているのか?↓ このhtmlのphpはただlib下の*****.phpに飛ばしているのみです。 lib下の*****.phpの判別にひっかからなかったもののみ、Bページのhtml本文を表示させています。 ---所見--- ・1のリンクソース****が多くてすみません。 個人ページではないので、申し訳ありません。 ・2ですが、リンク先のBページのBodyにもvlink="#ff0000"が必要なのですか・・。書き加えてもう一度検証してみます。
- cororo
- ベストアンサー率22% (2/9)
キャッシュは指定しないと、そのままキャッシュされると思ったけれども。。。 header('expires:Tue,Jun 1980 00:00:00 GMT'); header('Last-Modified:'.gmdate('D,dMYH:i:s').'GMT'); header('cache-control:no-chche,must-revalidate'); header('Pragma:no-cache'); とか htmlだと <meta http-equiv="Pragma" content="no-cache"> とか Bのページで指定していますか!? それと、phpで作ったときって、拡張子は.phpにしないといけなかったのでは。 ×attention.html ○attention.php 僕も初心者なのでピントのずれたことかいてるかもしれませんが。
お礼
cororo様、ご回答ありがとうございます。 すみません、略しすぎて分かりにくかったですね。 Bのページでno-cache指定はしていないのです。 ”B”ページは冒頭に下記php記述があり、そのあとhtml記述をしているページです。 <?php require('../lib/*****.php'); ~~~ ?> <html> ~~ </html>
補足
すみません、phpのみで記述という表現が間違っていました。 正しくは、あるphpに飛ばすphpを冒頭に記述してあるhtmlファイルです。
- moon_night
- ベストアンサー率32% (598/1831)
情報が少ないです。 リンクのソース、HTMLのソースなどを表示していただければ詳しいアドバイスができると思います。 ちなみに、リンクの色はブラウザで指定できるので、完璧に色分けする手段はありません。 でも、デフォルトの人が多いですが。
お礼
moon_nightさん、ご回答ありがとうございます。 ”A”ページ⇒ <body link="#0000FF" vlink="#FF0000"> ”B”ページ⇒ <?php require('../lib/*****.php'); ~~~ ?> リンク先のページattention.htmlがphpで記述されていて、もともと動的なページを生成するphpではアクセスするたびに常に新しい結果を得ようとしていてキャッシュに残らないという推測で正しいでしょうか。。
お礼
とんでもないです。お気になさらず。。 丁寧に考えていただいて、恐縮です。 ご紹介いただいたcss講座を見ながら、奮闘中です。