foreach文を使用したところ、警告が発生した

以下のメッセージが表示される。
(エラーメッセージ表示部分)

Warning: Invalid argument supplied for foreach() in I:\sotsusei\html\blog\blog_lib.php on line 483

原因は、配列でない変数をforeachに定義したため。

参考URL
http://blog.livedoor.jp/unixtips/archives/55133930.html
スポンサーサイト

フォームで複数のボタンをもうけたときの個々のボタンの判定方法

一つのフォームに複数のボタンをもうける。


valueで判定する。nameは同一の値が取れるので、どのボタンが押されたかには
使用できない。


参考URL
http://www.akatsukinishisu.net/itazuragaki/html/multiple_submit_buttons.html

PHPのセッション変数のクリアについて

セッション変数のクリア
$_SESSION[変数名] = "";で可能

参考URL
http://php-web.net/nyumon/session.html

PHPで変数が空かどうかを調べる方法

変数が空かどうかをチェックするには、以下のようにする。
if (!isset($test) || (!$test && strlen($test)==0)) {

参考URL
http://pentan.info/php/empty_func.html

または、if($_SESSION([変数名]) {
    }
の形でも良い。


empty関数について

phpで、変数が空かどうかをチェックするために、empty関数を使用したところ、
Fatal error: Can't use function return value in write context
が発生した。

原因はempty関数の仕様の認識違い。
empty関数は、引数がセットされているかどうかのチェック用関数である。
チェックする変数があらかじめ引数として定義されていないとエラーとなる。

たとえば、$testの内容をチェックしたいのであれば、
$a = $test;
if empty($a);
のように、いったん別の変数に格納しないとだめである。


Webアプリのセキュリティー対策

www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html

PHPで、IF文の判定がおかしい

原因はif文の記述。

aとbが等しいと言う記述はphpでは、
if (a == b) {
}
と書かなければならないのに、
if (a = b) {
}
と記述していた。

追記:
if (a === b){
}
という記述方法もある。

PHPで、どのリンクが押されたかを判断する方法

どのリンクが押されたかを判定する。

参考URL
http://plog.pya.jp/program/php/lesson09/sample01.html

2010/5/28現在、上記のリンクが無効になっているようなので、
以下に変更
http://okwave.jp/qa/q3042243.html
http://maruaoi000.blog54.fc2.com/blog-entry-15.html

ページング処理がうまくいかない

PHPで、MySQLを使用したページング処理がうまくいかない。

参考URL
http://try.snapshot-mylife.jp/2009/12/pear-pager.php#extended
これはsmatyを使用した例である。

http://syokyotan.jugem.jp/?eid=3
http://oshiete1.goo.ne.jp/qa2215257.html

Selectで start limitを使用した例。
http://oshiete1.goo.ne.jp/qa5119761.htm

session_start関数を定義したところ、以下の警告が表示された。

session_start関数を定義したところ、以下の警告が表示された。
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at O:\sotsusei\html\blog\blog.php:2) in O:\sotsusei\html\blog\blog.php on line 3

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at O:\sotsusei\html\blog\blog.php:2) in O:\sotsusei\html\blog\blog.php on line 3

原因は、session_start関数の記述位置。
session_start関数は、HTTPヘッダの送信前に行う必要がある。
つまり、
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
の記述を行う前に各必要がある。

今回は、<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
の前に、
<?php
    session_start();
    include_once('blog_config.php');
    include_once('blog_lib.php');

?>
の形で記述した。(include_once関数などで読み込んでいる場合は、その前に記述する必要がある)

phpで、html上に表示する2バイト文字をコーディング(例ABC) すると、その部分が文字化けしてしまう。

phpで、html上に表示する2バイト文字をコーディング(例<p>ABC</p>)
すると、その部分が文字化けしてしまう。

原因は、php.iniの設定とコーディングミス。
php.iniは以下の設定を行う。

output_buffering = Off
output_handler = none
default_charset = "UTF-8"
mbstring.language = ja
mbstring.encoding_translation = On
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.internal_encoding = UTF-8
mbstring.substitute_character = none

上記設定は、;でコメントアウトしてある場合があるので注意すること。
php.iniは、\xampp\phpと\apache\bin両方にあるので注意すること。
phpinfo()でLoaded Configuration Fileの部分をチェックし、
ここで指定されているiniファイルに対し、修正を行う。

参考url
http://www.yamada-lab.org/doc/win/mysql5/utf8/index.html

コーディングについては、mb_convert_encoding関数を使用し、utf-8へ変換する。
例:$str = mb_convert_encoding("次123464548", "utf-8", "auto");

追記:ソースの漢字コードをUTF-8で保存すれば、mb_convert_encoding
での変換は必要ない。

PHPで、mb_strlen関数の返却文字数がおかしい。

原因は第3パラメータの文字コードを指定していなかったため。
"utf-8"をセットするようにする。

PHPでidセレクタを設定しようとするとエラーになる。 (id=

原因は"をエスケープさせていなかったため。
"の前に、\をつけるようにする。
php mysql参考url
http://bg.pi-ppi.com/page/n01/index.html
プロフィール

e.swan

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

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

この人とブロともになる

QRコード
QR