ラベル web_develop の投稿を表示しています。 すべての投稿を表示
ラベル web_develop の投稿を表示しています。 すべての投稿を表示

2010年6月13日日曜日

5秒でできる。簡単!ロールオーバー画像の作り方

マウスが重なったときに、ボタンがハイライトになる効果が簡単に作れます。これまでは、通常のボタン画像以外に、ハイライト用画像を作り、それをJavascriptで切り替えると思います。

この方法は、ハイライト用画像さえも作る必要がありません♪
<img>タグに、Javascriptをちょこっと書き足すだけです。



■SAMPLE:ただのボタン画像



ソース:
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihhh-EW2C1LzWWxZ4Ibthqlkue28amzkSlq9tNYiyRscCcwGN4SkumU4bK1YO2AwinFG4_OP6oRsgUw8nS86aQhm9btUdFNzIkjWBns3LEr5cOPtRpOX1mmW8QLb4n31XyFa7gq7lzXg3u/s400/CapD20100313_2.jpeg" border="0">


■SAMPLE:簡単!ロールオーバー画像!



ソース:
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihhh-EW2C1LzWWxZ4Ibthqlkue28amzkSlq9tNYiyRscCcwGN4SkumU4bK1YO2AwinFG4_OP6oRsgUw8nS86aQhm9btUdFNzIkjWBns3LEr5cOPtRpOX1mmW8QLb4n31XyFa7gq7lzXg3u/s400/CapD20100313_2.jpeg" border="0" onMouseOver="this.style.opacity=0.7;this.style.filter ='alpha(opacity=70)'" onMouseOut="this.style.opacity=1.0;this.style.filter ='alpha(opacity=100)'" >



◎作り方:
<img>タグに、以下2つの属性を混ぜています。

onMouseOver="this.style.opacity=0.7;this.style.filter ='alpha(opacity=70)'"
オンマウスで、薄くする(ハイライト)

onMouseOut="this.style.opacity=1.0;this.style.filter ='alpha(opacity=100)'" マウスが外れたら、元に戻す


できあがったら、imgタグを、aタグで挟んでリンクにすることで、重ねた時のカーソルが指マークに変わります。(または、style="cursor:pointer;cursor:hand" 属性をimgタグに追加してください)





これだけで初心者でも、スピードが求められるときでも、速攻で作れますね。

もちろん、CSS の hover属性を使っても同じように出来ますので、全体的に使うときはその方がすっきりします。


   



2010年5月26日水曜日

phpMyAdminで文字化け

ShiftJISで組んだPHPプログラム(けっこう昔から運用中)から、最新のMySQLに書き込むと、文字化けが発生します。


■解決の概要:
PHPで書き込む際に、mb_convert_encoding関数で 日本語文字列をすべて「UTF-8」に変換する。
つまり、表のウェブサイトはSJISでも、データベース内は「UTF-8」で統一するのが無難でしょう。


■それでも文字化けは残るので、さらなる解決法

(1)mb_convert_encoding の書き方を変える。

× ) mb_convert_encoding("文字列", "UTF-8", "SJIS")

○ ) mb_convert_encoding("文字列", "UTF-8", "SJIS-win")

このように、元のエンコードを「 "SJIS-win"」と書く。


(2)/etc/my.cnfを修正:

セクションごとに、UTF-8の設定を追記。

[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
default-character-set = utf8
skip-character-set-client-handshake

[mysqldump]
default-character-set = utf8

[mysql]
default-character-set = utf8






MySQLを再起動する。
sudo service mysqld restart
とか、/etc/init.d/mysqld restart


これで私は直った。
(環境:PHP 5.1.6+mysql5+Admin2.11 )

2010年3月23日火曜日

Google Adsenseのモバイル版のエラー解消方法

Google Adsenseのモバイル版で、PHPのコードを貼った後、下記のようなエラーが出るようです。


エラーメッセージ:
PHP Fatal error: Call to undefined function read_global() in *** on line **


直すためには、function が集まった、

function ……( …… ) {
……………
}



function ……( …… ) {
……………
}


ブロックを上に持ってくると、エラーが出なくなります。



解決後の例:

<?php

//上に移したfunctionブロック

function read_global($var) {
return isset($_SERVER[$var]) ? $_SERVER[$var]: '';
}

function google_append_url(&$url, $param, $value) {
$url .= '&' . $param . '=' . urlencode($value);
}

function google_append_globals(&$url, $param) {
google_append_url($url, $param, $GLOBALS['google'][$param]);
}

function google_append_color(&$url, $param) {
global $google_dt;
$color_array = split(',', $GLOBALS['google'][$param]);
google_append_url($url, $param,
$color_array[$google_dt % sizeof($color_array)]);
}

function google_set_screen_res() {
$screen_res = read_global('HTTP_UA_PIXELS');
if ($screen_res == '') {
$screen_res = read_global('HTTP_X_UP_DEVCAP_SCREENPIXELS');
}
if ($screen_res == '') {
$screen_res = read_global('HTTP_X_JPHONE_DISPLAY');
}
$res_array = split('[x,*]', $screen_res);
if (sizeof($res_array) == 2) {
$GLOBALS['google']['u_w'] = $res_array[0];
$GLOBALS['google']['u_h'] = $res_array[1];
}
}

function google_set_muid() {
$muid = read_global('HTTP_X_DCMGUID');
if ($muid != '') {
$GLOBALS['google']['muid'] = $muid;
}
$muid = read_global('HTTP_X_UP_SUBNO');
if ($muid != '') {
$GLOBALS['google']['muid'] = $muid;
}
$muid = read_global('HTTP_X_JPHONE_UID');
if ($muid != '') {
$GLOBALS['google']['muid'] = $muid;
}
$muid = read_global('HTTP_X_EM_UID');
if ($muid != '') {
$GLOBALS['google']['muid'] = $muid;
}
}

function google_set_via_and_accept() {
$ua = read_global('HTTP_USER_AGENT');
if ($ua == '') {
$GLOBALS['google']['via'] = read_global('HTTP_VIA');
$GLOBALS['google']['accept'] = read_global('HTTP_ACCEPT');
}
}

function google_get_ad_url() {
$google_ad_url = 'http://pagead2.googlesyndication.com/pagead/ads?';
google_append_url($google_ad_url, 'dt',
round(1000 * array_sum(explode(' ', microtime()))));
foreach ($GLOBALS['google'] as $param => $value) {
if ($param == 'client') {
google_append_url($google_ad_url, $param,
'ca-mb-' . $GLOBALS['google'][$param]);
} else if (strpos($param, 'color_') === 0) {
google_append_color($google_ad_url, $param);
} else if (strpos($param, 'url') === 0) {
$google_scheme = ($GLOBALS['google']['https'] == 'on')
? 'https://' : 'http://';
google_append_url($google_ad_url, $param,
$google_scheme . $GLOBALS['google'][$param]);
} else {
google_append_globals($google_ad_url, $param);
}
}
return $google_ad_url;
}



//元々のコードの先頭はここ

$GLOBALS['google']['ad_type']='text_image';
$GLOBALS['google']['channel']='1111111111';
$GLOBALS['google']['client']='pub-4444444444444400';
$GLOBALS['google']['format']='mobile_single';
$GLOBALS['google']['https']=read_global('HTTPS');
$GLOBALS['google']['ip']=read_global('REMOTE_ADDR');
$GLOBALS['google']['markup']='xhtml';
$GLOBALS['google']['oe']='sjis';
$GLOBALS['google']['output']='xhtml';
$GLOBALS['google']['ref']=read_global('HTTP_REFERER');
$GLOBALS['google']['url']=read_global('HTTP_HOST') . read_global('REQUEST_URI');
$GLOBALS['google']['useragent']=read_global('HTTP_USER_AGENT');
$google_dt = time();
google_set_screen_res();
google_set_muid();
google_set_via_and_accept();


//元のfunctionブロックの位置はここ


$google_ad_handle = @fopen(google_get_ad_url(), 'r');
if ($google_ad_handle) {
while (!feof($google_ad_handle)) {
echo fread($google_ad_handle, 8192);
}
fclose($google_ad_handle);
}

?>



この問題が起きる理由は、、、、

いくつかのPHPの実装では、関数を呼び出す前に、(より以前の行で)関数が宣言・定義されている必要があるためです。しかし、GoogleのPHPコードでは、後ろになっているのが原因です。

read_global()関数というふうにエラーメッセージが出るのは、呼び出される関数のたまたま最初がそれだからです。なので、read_global()関数に問題があるわけではなっかたのでした。


   




 

2009年7月16日木曜日

外部リンクをはる際にできるSEO裏技~ JSスカルプティング

自サイトへの内部リンクは通常リンクで、他のサイトにはこのJavascriptリンクを利用します。(JavascriptリンクはGoogleの巡回ロボットにはリンクだと思われません)


こうすることで、ユーザー(訪問者)にはリンクを便利に使ってもらいつつも、内部リンクのSEO効果を落とさずにすみます。


<script type="text/javascript">document.write("<a href=\"index.html\" target=\"_blank\"> ★アンカーテキスト★ </a>");</script>
↓こんな感じ



参考:
※PageRank スカルプティング(PageRank Sculpting )とは、サイト内におけるリンクのエネルギー(リンクジュース)を調整し、ページランクをコントロールする手法のことを指します。

つまり、SEO的に他サイトにリンクジュースが流れないようにすることで、自サイトのページランクのコントロールを行うのです。


※以前の方法(nofollow属性を使う)は Googleによって無効にされてしまいましたので、この記事の方式が、現在、有効な方法になります。









 

2009年7月7日火曜日

Android携帯のUserAgent(ドコモのケータイ:docomo/HTC製 Android Dev Phone 1™)

googleのDevelopperDayで配られたもの。

Mozilla/5.0 (Linux; U; Android 1.5; ja-jp GDDJ-09 Build/CDB56) AppleWebKit/ 528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1

ちなみに、この端末でコピペをする方法ですが、、

ブラウザでのコピーは メニュー>その他 から。
ペーストはトラックボールの長押しにて。








 

2008年5月11日日曜日

PHP5で変わること

PHP4→PHP5(正確には5.2.5) への移行で変わることのメモ:

■mb_sendmailで、件名が文字化ける

→ mb_sendmail は使わず、自前のメール送信用の関数を作成して解決


■php.iniのデフォルト値が変わる

・offになった↓
register_long_arrays =on に戻す必要あり。
→今後は、スーパーグローバル変数($GLOBALS,$_SERVER,$_GET,$_POST,$_FILES,$_COOKIE,$_SESSION,$_REQUEST,$_ENV)でコーディングすること!

・magic_quotes_gpc = On に戻す必要あり。

・今後は、<? ではなく、 <?php で書くこと。

・allow_url_include = On に戻す必要。無ければ書き足す必要あり。
・allow_url_fopen = On 要確認


■ date( "Y年m月d日" ,$hoge_day ) の表示がおかしい(「年」が文字化け)

http://blog.yoheis.net/2007/09/phpsjis-echo-dateymd-20070903-shift.html

→ str_replace ("★","年", date( "Y★m月d日" ,$hoge_day ) )
我流ですが、これでとりあえず不具合を回避。

→追記:date( "Y" ,$hoge_day ) ."年".date( "m月d日" ,$hoge_day ) の方がいいような気がしてきた。


■preg_replace で 日本語の許容が無くなった

(全般的に、日本語文字列のルールが厳格になった感がある)

http://ml.php.gr.jp/pipermail/php-users/2006-November/031190.html

> > 1のパターンでは日本語を置換できるのですが、2のパターン
> > のように、「ー」が入ると下記のようなエラーメッセージが出て
> > しまいます。この現象を解決したいのですが、どのようにコードを
> > 修正すればいいのでしょうか?どなたかアドバイスをお願いします。
> >
> > Warning: preg_replace(): Compilation failed: missing terminating ]
> > for character class at offset 8
> >
> > <?php
> > //1のパターン
> > $text = "彼は僕の友達です。";
> > $result = preg_replace("/彼/", "彼女", $text);
> > print $result."\n";
> >
> > //2のパターン
> > $text = "ミッキーは僕の友達です。";
> > $result = preg_replace("/ミッキー/", "ミニー", $text);
> > print $result."\n";
> > ?>
>
>
> > > のように、「ー」が入ると下記のようなエラーメッセージが出て
> > > しまいます。この現象を解決したいのですが、どのようにコードを
> > > 修正すればいいのでしょうか?どなたかアドバイスをお願いします。
> > >
> > > Warning: preg_replace(): Compilation failed: missing terminating ]
> > > for character class at offset 8
> >
> > 「ー」はシフトJISだと815Bになります。
> > 5Bは「[」になるので、そのためにterminateしてないよって
> > エラーになっているのでしょう。
> > シフトJISで文字を置換を行うなら、mb_ereg_replaceを使う方がいいと思います。
>
>
>


■古い関数名が、サポートされなくなった ← i18n_convert などを、mb_convert_encoding などに修正。

PHP_FALIAS(mbsubstr, mb_substr, NULL)
PHP_FALIAS(mbstrcut, mb_strcut, NULL)
PHP_FALIAS(i18n_internal_encoding, mb_internal_encoding, NULL)
PHP_FALIAS(i18n_http_input, mb_http_input, NULL)
PHP_FALIAS(i18n_http_output, mb_http_output, NULL)
PHP_FALIAS(i18n_convert, mb_convert_encoding, NULL)
PHP_FALIAS(i18n_discover_encoding, mb_detect_encoding, NULL)
PHP_FALIAS(i18n_mime_header_encode, mb_encode_mimeheader, NULL)
PHP_FALIAS(i18n_mime_header_decode, mb_decode_mimeheader, NULL)
PHP_FALIAS(i18n_ja_jp_hantozen, mb_convert_kana, NULL)


サーバー環境移転のため、
同時に、Apache1.3→2.2、MySQL4→5 のアップも行ったので
へろへろになりました。