Javascript・PHP・Flash系小ネタ・不具合色々解決メモ

この記事は約10分で読めます。

自分用にメモ的な形で残しているため、
この記事を読んでもさっぱりという方が結構いらっしゃると思いますが
ご了承くださいm(_ _)m

スポンサーリンク

JavascriptでSubmitする方法

<div class="onepoint"><form action="index.html" method="post" name="answer"><textarea cols="85" rows="10"></textarea>
<p> </p>
<div class="submit_btn">回答する</div>
<p><input name="answer_submit" type="hidden" value="回答する" /></p>
</form></div>

回答する

フォームの入力値を取得するのはPHPとかで。
dialog_yesno関数は自作もの。YESNOダイアログが表示されるだけ。
戻り値はTRUEかFALSE。

tableの隙間を消す方法

table {
border-collapse: collapse;
border: none;
border-spacing: 0;
}

Javascript 画像プリロード&表示処理

jQueryで画像をプリロードしてリスト化する処理作りました。
HTML5あたりから画像をページ内に簡単に自由に動かしたりとかできるようになったので、
ゲームとか作る際に画像の先読みとかで以下のプログラムが使えると思います。
<単純に読み込むだけの場合は、リストタグあたりの処理を省けばOK。

var imgPath = "/img/";
var $li = $();
jQuery('#Content').append(jQuery('').attr({
"id":"ImageList"
});
jQuery.preloadImages = function(){
for( var i = 0; i < arguments.length; i++ ) {
$li = jQuery('').html(jQuery("").attr({
"src": imgPath + arguments[i]
}));
jQuery('#Content ul').append($li);
}
};
jQuery.preloadImages("1.png","2.png","3.png",
"4.png","5.png");

私の場合、読み込み中はローディング画面を表示させて、
読み込みが終わったらフェードインで表示させるといった処理を付け加えて使ってます。
読み込む際にID振ってあげると後先「ボタンを押したらID○○の画像は消える。」
といった処理ができますね。

JavascriptでDivからTextareaに切り替える方法

<div class="onepoint">
<pre class="brush: js php html"><script type="text/javascript">
var flag = false;
function changeinput()&#123;
if (flag) return ;
flag = true;
var msg = document.getElementById('strmsg');
var msgtext = msg.innerHTML;
msg.innerHTML = "<textarea style=&yen;"width:320px; height:240px;&yen;" name=&yen;"input&yen;" id=&yen;"input&yen;" value=&yen;"&yen;">"+ msgtext +"</textarea><form action=&yen;"./textarea_change.php&yen;" method=&yen;"post&yen;"><input type=&yen;"submit&yen;" value=&yen;"送信&yen;" /></form>";
var inp = document.getElementById('input');
inp.select();
inp.focus();
&#125;
function changetext()&#123;
var inp = document.getElementById('input');
var inpval = inp.value;
var msg = document.getElementById('strmsg');
msg.innerHTML = inpval;
flag = false;
&#125;
</script>

<input type="submit" value="返信する" /></pre>
<div id="strmsg"><!--?php
echo nl2br( <<< EOL
あいうえお
かきくけこさしすせそ
なにぬねのたちつてきすと
EOL
);
?--></div>
<pre class="brush: js php html">
</pre>
</div>

Div内にある文章を持ちつつもTextareaと切り替えれるようになりました。

返信ボタンを押すと「CLEditor」を使用したTextareaが表示されるようにしてます。

実行しているスクリプトのディレクトリパスを取得する(PHP)

$data = pathinfo($_SERVER["SCRIPT_NAME"]);
echo $data['dirname'];		// ファイルのディレクトリパス
echo $data['basename'];		// ファイル名
echo $data['extension'];	// 拡張子

dirname(__FILE__)を使えば実行しているスクリプトの絶対パスが取得できますが、
Windowsで実行した際、逆スラッシュでパスが送られてくるため、
ローカルサーバでテストする時にきちんとした動作がおこなわれませんでした。
以上の点で、多少手間が掛かりますが、上記の方法でディレクトリパスを取得しています。

さくらサーバで空メールシステム(PHP)で起きた問題

【問題】
携帯で空メール用のメールアドレス先にメールを送信した際、
エラーメールが返ってきた。
結果的にはPHPのプログラムに記述ミスがあったのが原因で
エラーメールが返ってきた。
【問題解決までのステップ】
①.mailfilterの文字コードはSJIS
ちなみに.mailfilterの設定は
to “| /usr/local/bin/php -q /home/アカウント名/www/プログラム名.php”
②実行するPHPの文字コードはUTF-8
③PHP記述ミス(データベースに接続するプログラムが間違えてた)を修正
きちんとメールが届いた。

フォームの送信ボタンをimageに変えた際の不具合

・IEではimageのname名が来るのではなくクリックした座標(x,y)が送られる
・Firefoxでは画像無しの状態ではimageの情報が飛ばない
上記の点で考えられるシステムトラブル
・お問い合わせフォームなど入力情報を飛ばす際、
 ボタンで処理の振り分けをしている時に、
 判定などがきちんと動作しないことが起こる可能性がある。

XAMPP上でメールを送信できるようにする

■php.ini
SMTP = smtp.gmail.com
smtp_port = 587
sendmail_path = “¥”D:¥software¥xampp¥sendmail¥sendmail.exe¥” -t” (コメントアウトを解除するだけ)
mail.log = “D:¥software¥xampp¥apache¥logs¥php_mail.log” (コメントアウトを解除するだけ)
sendmail.iniを、下記の部分を追加・書き換える。
■/sendmail/sendmail.ini
# gmail
account gmail
tls on
tls_certcheck off
host smtp.gmail.com
port 587
from [Googleアカウント名]@gmail.com
auth on
user [Googleアカウント名]
password [Googleのパスワード]
(↑以上を追加する)
# Set a default account
account default : gmail (デフォルトの”Mercury”から書き換える)
Apacheを再起動する。
上記の内容は参考サイトを抜粋したもので、
Gmailを使った時の例です。

さくらサーバ「HTMLでPHPを使えるように設定するとGoogleのボット等が拒否されてしまう」

PHP動かしたいけどTOPやシステムがメインじゃない所まで拡張子が「.php」になるのはいやだなと思い
最近は「.htaccess」で「.html」のままPHPを動かすように設定することが多くなりました。
さくらサーバではこのあたりがちょっと他のサーバとはやり方が面倒だった気が。。。
設定してしばらくの間、問題ないなーと思っていたのですが、
ある日GoogleのウェブマスターツールでWebサイトへのGoogleボットの状態を確認したところ、
「403 Forbidden」エラーではじき飛ばされていました;
なんでだなんでだとあちこち処置やら調べたりしましたが一向に直らず・・・
とりあえず、検索順位が極端に落ちないようしばらく様子みて資料を探していたところ、
以下のサイト様より有力な情報が記載されていましたので設定してみることに。。。
【参考】
・たこノーツ(http://octopusnotes.info/index.html
>>国外IPアドレスフィルタの設定

一番上が最後に設定して送信したやつ。
下から5つめに成功しているものは「.htaccess」を外して
「php.cgi」を実行させていない状態。
お、何かうまくいった感じですかね??
またしばらく様子見ることにします。

「Warning: Unknown(): Your script possibly relies on a session side-effect which ・・・」の対策方法

エラー:
Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disabl
警告: Unknown(): お使いのスクリプトは、セッションのサイドエフェクトに依存している可能性があります。このサイドエフェクトはPHP 4.2.3 まで存在しています。register_globalsを有効(enabled)にしない限り、セッションエクステンションは、グローバル変数をデータのソースとして認識しません。session.bug_compat_42 または、session.bug_compat_warn をoffにすることで、この機能とこの警告メッセージをそれぞれ無効(disable)にすることができます。
対策①:
1.変数に初期化してないものがあるなら、初期化する。
2.セッションの名前とGETやPOST、変数名の名前が同じものがあれば変更する。
今回は、こちらの策を採用して問題を解決した。
 
session_start()の際に下記のような「Cannot send session cache limiter」というエラーが発生する場合
 
1.session_start()より前に、HTMLのヘッダーに関するコードを書かない
2.session_start()より前に、TABが入ってるだけで出ることがある。
対策②:メッセージの通りsession.bug_compat_42 または、session.bug_compat_warn をoffにする WEB(HTML,PHP,etc…)

コメント

タイトルとURLをコピーしました