リンクが設定されない。

// マウスイベント用
btn_link.addEventListener(MouseEvent.CLICK,recruitment_app);

/*
//
//     詳しくはこちらをご覧下さい(応募要項へのリンク)をクリックしたとき。
//
*/
function recruitment_app(evt:MouseEvent):void{
    var url:URLRequest=new URLRequest("beauty_pag/recruitment_ess.html");
    navigateToURL(url);
}

上記のActionScriptで設定されたリンクが有効にならない。

原因は、レイヤーの順番。
説明文章の下に上のボタンがタイムラインで設定されていたため。

説明文章の上にボタンのレイヤーを移動させることで解決。

スポンサーサイト

IEで、a:hoverを指定するとmarginがずれる。

今回の現象は、a:hoverを指定し、Border-bottomを指定したものに対し、
該当部分にカーソルを持って行くと、
文字の上部のマージンがなくなるという現象であった。

IEには、a:hoverを指定すると、親ボックスの高さが変わる
というバグがある。

今回は、それに該当したようである。

関連URL
h2ham.seesaa.net/article/93500927.html

Boxの組み合わせ方で回避も可能なようである。
今回は、Border-bottomの指定をやめ、
background?positionによる指定で行った。


IE6,7で、背景に指定した画像が、文字上にかぶって表示される

IE6_backgroundバグ

IE8,FireFoxでは問題なし。
上記のように表示は行われるが、文字は背景上に表示された。

正式な原因は不明。z-indexの関係?

上記の原因は、boxのmaginを指定していたため、その分はみ出して表示された。
その分が文字上にかぶっていた。

この件については、上記のように表示するのはやめ、
background-positionを指定して、
a:hover時に座標をずらすことにより、違う画像を表示させて、
選択されたことがわかるようにした。


IEで、以下のようなレイアウトで、a:hoverを指定したところ、はみ出て表示される。

ie_ahover_bug.jpg

原因は、CSSにdisplay:inline-blockを指定していなかったために、
widthが無視されたため。

修正前は、以下のような記述をしていた。

/* 月例会写真 選択時 */
#mnth_r_photo ul li a:hover {
    border-bottom:#ff871b solid 2px;
    width:148px;
}

aタグは、inline要素のため、widthが効かない。
そのため、widthが無視されてしまったため、このような結果になった。

CSSを以下のように修正した。
/* 月例会写真 選択時 */
#mnth_r_photo ul li a:hover {
    border-bottom:#ff871b solid 2px;
    width:148px;
    display:inline-block;
}

inline-blockの解説については、以下を参照のこと。

www.mozilla.gr.jp/standards/webtips0015.html

Flashコンテンツを配置すると、下部に余白が発生する。

以下のCSSで回避可能

object,
embed [
vertical-align:top;
}

PHPで数値の表示形式のフォーマットをするには?

sprintf関数を使用する。


sprintf("%02d",$l_month);
$l_monthの内容を01の形にフォーマットする。
(ゼロ付きの数字二桁にする)

参考URL
fdays.blogspot.com/2008/03/php-sprintf-manual-c-5-str-sprintf05d.html

PHPでテキストファイルを一件ずつ(fgets)で読み込んだときのEOFの判定について

PHPの場合、テキストファイルをfgets関数で一件一件読むとき、
ファイルの終了[EOF]が検出されるのは、最終レコードが読み込まれたときなので、
注意すること。

例1
aaaaa[EOF]

上記レコードが読み込まれたときにファイルの終了が検出される。

COBOLのREAD命令では、最終レコードの次でEOFが検出される。

例2
aaaaaa
[EOF]

つまり、fgets関数で一件一件読み込んだときは、[EOF]の位置に気をつけないと、
異常終了などの原因になるので注意すること。

Excelなどで、csvファイルを作成した場合、例2の形になるので注意すること。

参考URL
www.asp-edita.jp/doda/one/doda1789_233.html
(VBの例であるが、PHPでも使用出来る)

PHPを動作させたところ、Warning: mb_convert_encoding() [function.mb-convert-encoding]: Unable to detect character encoding in C:\sotsusei\SGP\html\sgp\php\sgp_mon_meet_result.php on line 107が表示される。

原因は、php.iniのmbstring.language = Japanese がコメントアウトされていたため。

上記のコメントをはずすか、
プログラム上にmb_language( 'Japanese' );
を記述する。

参考URL

ml.php.gr.jp/pipermail/php-users/2004-May/022334.html

テキストファイルを1レコードごとに配列に格納するには?

file関数で可能。


SSL対応のページからSSL非対応のページへ戻ろうとすると、 意図しないページへ遷移してしまう(その2)

原因は、SSL対応ページとSSL非対応ページの間では、
セッション情報が受け渡されないため。

たとえば、SSL非対応ページからSSL対応ページへ遷移し、またSSL非対応ページへ遷移すると。
セッション情報は、最初のSSL非対応ページのものが保持される。

この現象はローカルでは発生しなかった
(SSL非対応ページとSSL対応ページの間ではセッション情報は受け渡された)ことであり、
さくらインターネットでは発生した。

プロバイダーによっても違うのかもしれない。



IE6で同じ文字が複数表示される。

ie6バグ

IE6で、上記のような表示が行われる。
(赤丸の部分)

この文字は、複数存在しない。
最下行の最終文字が二重に表示されている。

IE7以降、FireFoxでは起こらない。

原因は、floatの解除忘れ。
該当部分にclear:bothを指定することにより解決した。




PHPをうごかしたところ。Deprecated: Assigning the return value of new by reference is deprecated が発生した。

PHPを実行したところ、以下のメッセージが表示された。

Deprecated: Assigning the return value of new by reference is deprecated in C:\sotsusei\SGP\html\sgp\php\simplepie\simplepie.inc on line 737

原因は、PHPのエラー出力レベルの変更。
PHP 5.3.0からエラー出力レベルに変更があり、
新たに新しいパラメータが追加された。
(E_DEPRECATEDなど)

推奨されない関数などを使用するとメッセージが表示されるようになった。

php.iniのエラーレベルの出力を変えるか、
使用関数の変更を行う。


テキストの先頭と画像の先頭をあわせる方法。画像の高さとテキスト行をあわせる方法

テキストの先頭と画像の先頭、画像の高さとテキストの行をあわせたいケースがある。
(画像はfloatさせる)

このような場合、そのままでは画像の先頭とテキストの先頭が
line-heightとの関係であわないケースが出てくる。

このようなときは、以下の計算式を使用するとあわせることが出来るようになる。

画像の上部のマージン算出式
(line-height(単位em) - 1em) /2

画像の高さの算出式
line-height(単位em) * (行数 - 1) + 1em

上記は単位をemとしているが、使用単位にあわせることも可能(pxなど)
pxの場合は端数が出ることがあるので、考慮が必要である。

今回は切り捨てを行ったが、特に問題は発生しなかった。

ulタグの入れ子でbackground-imageを指定するときの注意点

下記のようなリストを組む場合

<ul>  (1)
    <li>
        <ul> (2)
            <li>
            </li>
       </ul>
     </li>
</ul>

(1)と(2)のbackground-imageに背景画像を指定した場合、
(1)に指定した背景画像は、(2)にも反映されるので注意すること。

 

SSL対応のページからSSL非対応のページへ戻ろうとすると、 意図しないページへ遷移してしまう。

原因は$_SERVER["HTTP_REFERER"]がセットされないため。
今回は、直接リンク防止のため、$_SERVER["HTTP_REFERER"]をチェックし、
$_SERVER["HTTP_REFERER"]が存在しないときは、トップページへ(下図のAへ)
戻るような仕様にしていた。

A?→?B?→?C
|       ↑       |
↑       ←???←
|               ↓
|???←???|

たとえば、A,B,Cというページがあったとする。
画面遷移は、AからB、BからC、CからB、CからAへの遷移が可能である。

A,BはSSL非対応ページ、CはSSL対応のページである。
CからBへ戻るような仕様としていたが、今回はこれがうまくいかなかった。
(Aへ戻ってしまった)

$_SERVER["HTTP_REFERER"]を調べてみたところ、
Bへ戻ったときは、$_SERVER["HTTP_REFERER"]がNULLになることが判明した。
そのため、$_SERVER["HTTP_REFERER"]が存在しないと見なされ、Aへ遷移してしまった。

このことからSSL対応のページからSSL非対応ページへ
遷移するときは、$_SERVER["HTTP_REFERER"]がNULLになることが判明した。

直接リンクをチェックする際は、上記に注意する必要がある。

今回は、BもSSL対応のページとすることで対応した。


HTMLエンティティーソフトでエンコードしたメールアドレスを復号してもメールアドレスが有効にならない。

htmlエンティティーソフトでエンコードしたメールアドレスをデコードし(PHPのurldecode関数使用)
JPHPMailerでメールを送信したところ、エラーで送信が出来ない。

原因は、エンコードの指定。

今回、以下のHTMLエンティティ作成というソフトでメールアドレスをエンコードしたが、
ab.jpn.ph/soft/html_rand.html
このときに、「エンティティー出力形式」に16進以外もを指定したため、
デコード時に不正な文字になったため。

エンコードは16進のみを指定するようにする。

PHP5.3.0で実行したところ、以下のWaringが出るようになった。

PHP5.3.0の環境であるプログラムを実行したところ、以下のWaringが出るようになった。

Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for '9.0/no DST' instead in C:\sotsusei\SGP\html\sgp\php\simplepie\simplepie.inc on line 3629

原因は、PHPの仕様変更。
PHP5.1.0以降、以下の関数については、タイムゾーンが明確に指定されていないと上記のWaringが
表示されるようになった。

date
strtotime
date-create
mktime

date_default_timezone_set関数でタイムゾーンを設定するか、
各命令のパラメータタイムゾーンをで設定するようにする。

タイムゾーン指定例
date_default_timezone_set('Asia/Tokyo');

添付ファイルの処理

エラーチェック

上記のように、添付ファイルを添付する処理において、
かつ、必須入力になっている場合、$_FILEの関係でうまくエラーチェックが出来ないことがある。

$_FILEは、formのtype="file"が指定されているフィールドに添付ファイルが指定されているときだけ
値が存在し、それ以外のときは値が存在しない。

上記の画面例で、履歴書ファイルにファイルを指定し、E-Mail(携帯)でエラーが発生した場合、
E-Mail(携帯)のエラーを修正した場合、そのままでは、履歴書ファイルの内容はなくなってしまう。
($_FILEの値がなくなってしまう)

上記のようなときは、セッションを使って回避するようにする。
以下はコーディング例である。

// 添付ファイル情報をセッションに待避する。
// ここで待避しないと$_FILESはSubmitしたときに消えるため。
if  ($_FILES["resume"]["name"] <> "") {
   $_SESSION["pageant_app01"]["resume"]["name"] = $_FILES["resume"]["name"];
   $_SESSION["pageant_app01"]["resume"]["size"] = $_FILES["resume"]["size"];
   $_SESSION["pageant_app01"]["resume"]["tmp_name"] = $_FILES["resume"]["tmp_name"];
}

if  ($_SESSION["pageant_app01"]["resume"]["name"] == "") {
   $l_errmsg["resume"] = "※応募資料の添付がありません。";
} else {
    if  ($_SESSION["pageant_app01"]["resume"]["name"] <> "") {
         if  (file_extension_chk($_SESSION["pageant_app01"]["resume"]["name"]) === false) {
             $l_errmsg["resume"] = "※この拡張子のファイルは添付できません。";
        }

       // 添付ファイル存在チェック(IE6は手入力可能なため必要)
      if  ($_SESSION["pageant_app01"]["resume"]["name"] <> "" &&
           $_SESSION["pageant_app01"]["resume"]["size"] == 0) {
        $l_errmsg["resume"] = "※指定されたファイルが存在しません。";
      }

      // 添付ファイルサイズチェック(5MB以下)
      if  ($_SESSION["pageant_app01"]["resume"]["size"] > 5242880) {
         $l_errmsg["resume"] = "※ファイル名:".$l_FILES["resume"]["name"]."は5MBを超えています。";
      }
    }
}



mb_ereg_matchで「mbregex compile err: premature end of char-class」エラーが発生する。

mb_ereg_matchを使用すると、
mbregex compile err: premature end of char-class(Warning)エラーが発生する。

以前の環境では発生していなかったが、
PHP5.3.0の環境にしたところ、発生するようになった。

mb_regex_encoding("UTF-8");をmb_ereg_match前に追加することで回避した。
mb_regex_encodingは、現在のマルチバイト正規表現用のエンコーディングを文字列として返す関数である。
sjis以外の環境の場合は、上記指定が必須になる。

参考URL
memo.seobinder.net/%E6%82%A9%E3%81%BF%E8%A7%A3%E6%B1%BA/php%E3%82%A8%E3%83%A9%E3%83%BC%EF%BC%9Awarning-mb_ereg-functionmb-ereg-mbregex-compile-err-premature-end-of-char-class-php-on-line-xxx.html


本番環境で(さくらインターネット上)上でActionScript3.0からCSVファイルが読めない。

ローカル環境上(Windows)では問題なし。

原因は、CSVファイルの改行コード。

Windowsでは、CR+LF(\r\n)であるが、Unix(Linux)では、LF(\n)が改行コードになっている。
Windows環境上では、CR,LFとも改行コードと見なされるが、
Unix環境上では、LFのみである。

この結果、本番サーバ上では、改行位置がおかしくなり、
その結果、読み込みが出来なくなった。

今回、APミスで、CR+LFをCRに変換していた。
CR+LFをLFに変換するようにする。

[修正前]
var byteData:ByteArray = new ByteArray();
byteData = ByteArray(loader.data);
var src:String = byteData.readMultiByte(byteData.length, "shift-jis");

//正規表現を使用し、改行コード(CR+LF Windows,UNIX:LF,Mac:CR)をすべてLFに着替える。
//これを行わないと、ローカル(Windows)上で、1行おきに表示されてしまう。
var myPattern:RegExp = /\r\n|\r|\n/g;
var result_str:String = src.replace(myPattern, "\r");

//csv形式のファイルを改行コードで区切って配列に格納(CSVの分割はサブルーチン側で行う)
var pht_name:Array = src.split("\r");

[修正後]
var byteData:ByteArray = new ByteArray();
byteData = ByteArray(loader.data);
var src:String = byteData.readMultiByte(byteData.length, "shift-jis");

//正規表現を使用し、改行コード(CR+LF Windows,UNIX:LF,Mac:CR)をすべてLFに着替える。
//これを行わないと、ローカル(Windows)上で、1行おきに表示されてしまう。
var myPattern:RegExp = /\r\n|\r|\n/g;
var result_str:String = src.replace(myPattern, "\n");(この部分を修正)

//csv形式のファイルを改行コードで区切って配列に格納(CSVの分割はサブルーチン側で行う)
var pht_name:Array = src.split("\n");(この部分を修正)

PHPで全角入力のみかどうかをチェックする。

www.n-shinchan.com/
プロフィール

e.swan

Author:e.swan
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR