【PHP】下らねぇ質問はここに書き込みやがれ 53
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん
2007/08/25(土) 22:11:08ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 52
http://pc11.2ch.net/test/read.cgi/php/1186794483/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0825823
2007/09/05(水) 19:15:51ID:6UMtGkQvやっぱこれじゃダメですか
文字コードの知識が全然無い俺
unicodeは何て指定すればいいんですか
0826nobodyさん
2007/09/05(水) 19:29:01ID:???unicodeは、UTF-7,UTF-8,UTF-16,UTF-32と色々バリエーションがあるし、
さらにそのサブセットもあるから、detectして文字コードの種類を調べるのが先。
0827nobodyさん
2007/09/05(水) 19:40:57ID:???<input type="text" name="name" value="ココ" />
ってことだろ?
" /><script>alert("XSSですけど?")</script> <a href="
って値を入れてみようか。
<input type="text" name="name" value="" /><script>alert("XSSですけど?")</script> <a href="" />
駄目じゃね?
0829823
2007/09/05(水) 20:05:18ID:6UMtGkQv皆さんありがとうございました。
0830nobodyさん
2007/09/05(水) 20:49:40ID:9ANsBxrb◆やりたい事
・phpの中にindex.tplを表示する場合とend.tplを表示する場合の条件を記述したい。
・普通にphpにアクセスした時はindex.tplを表示させたい。
・end.tplはテキスト入力欄に入力した状態で登録を押した時に表示させたい。
・現状は分岐のさせ方が分からないため、index.tplの内容を表示し、その下にend.tplの内容が表示されてしまいます。
◆環境
CentOS 4 & PHP 4.3.9
◆index.php
<?php
require'Smarty/Smarty.class.php';
function get_smarty_object(){
$smarty = new Smarty();
$smarty->template_dir = "tmp/templates/";
$smarty->compile_dir = "tmp/templates_c/";
return $smarty;
}
$smarty = get_smarty_object();
// ここに何かしらの分岐を書く必要があると思いますが、書き方が分かりませんでした。
$smarty->display( "index.tpl" );
// ここに何かしらの分岐を書く必要があると思いますが、書き方が分かりませんでした。
$smarty->display( "end.tpl" );
?>
0831nobodyさん
2007/09/05(水) 20:50:52ID:9ANsBxrb◆index.tpl
<!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" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>月入力前</title>
</head>
<body>
<form method="post" action="index.php">
<input name="month" type="text">月<br>
<input name="submit" type="submit" value="登録">
</form>
</body>
</html>
◆end.tpl
<!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" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>月入力後</title>
</head>
<body>
<form method="post" action="index.php">
{$month}月が入力されました。<br>
<a href="index.php">戻る</a>
</form>
</body>
</html>
0832nobodyさん
2007/09/05(水) 20:54:04ID:???0833nobodyさん
2007/09/05(水) 20:56:17ID:Owa32j3Y「%EF%BC%A1%EF%BC%A2%EF%BC%A3」という文字列にしたいのですが
何か上手い方法ありますか?
bin2hex使えば16進になることは分かったのですが、後%入れる方法がわかりません。
0834nobodyさん
2007/09/05(水) 20:58:24ID:???0835nobodyさん
2007/09/05(水) 21:03:41ID:Owa32j3Y$result=urlencode($keyword);
0836nobodyさん
2007/09/05(水) 21:13:33ID:xhirHVJB0837nobodyさん
2007/09/05(水) 22:10:46ID:JCAEvDAB0838nobodyさん
2007/09/05(水) 22:24:31ID:9ANsBxrbレスどうもです。
一応html+phpで動かす事は出来たのですが、ソースを見た所、htmlとphpが混在していて見にくかったので
php+tplに移植を試みていたのですが、中々難しいようで。
多分
if (submit押下後) {
$smarty->display( "end.tpl" );
} else {
$smarty->display( "index.tpl" );
}
でいけそうな気がしたのですが、このsubmit押下後をこの時点で判定するのは難しそうですね。
素直にhtml+phpで、htmlのsubmit押下でphpを呼び出す方向で検討しようと思います。
0839nobodyさん
2007/09/05(水) 22:28:01ID:???そのコードじゃ、ViewとControllerが全く分化できていない。
テンプレート使っている意味がないと思うけど。
0840nobodyさん
2007/09/05(水) 22:37:28ID:9ANsBxrbそうなんですか。
正直元のソース(html+php)がカオスすぎて
>>830、>>831程度に分化してくれれば後から修正しやすいかなと思ったのですが、
本当はもっときっちり分化するものなんですね。
テンプレート難しいorz
0841nobodyさん
2007/09/05(水) 22:41:39ID:???<form method="post" action="index.php">
{$month}月が入力されました。<br>
<a href="index.php">戻る</a>
</form>
0842nobodyさん
2007/09/05(水) 22:52:30ID:9ANsBxrbあ、そこはまだダミーの記述で未検証の所です。
まず分岐ができない事にはそこにたどり着かないので、
その部分はhtml+phpで書いた物をこんな感じかなと当てはめただけです。
0843nobodyさん
2007/09/05(水) 22:55:03ID:9ANsBxrb<p>入力されました</p>
となっていると思っていただければ大丈夫です。
0844nobodyさん
2007/09/05(水) 22:59:20ID:???分岐する方法は全部そこに書いてあるから。
0845nobodyさん
2007/09/05(水) 23:30:39ID:9ANsBxrbありがとうございます。
フォームでググッてきます。
0846nobodyさん
2007/09/06(木) 04:55:02ID:5gplVXTAああ、、、、タグ閉じでXSS可能ですね。
無害化することにします。
ありがとうございます。
0847nobodyさん
2007/09/06(木) 07:07:26ID:???エスケープは基本なのに
0848nobodyさん
2007/09/06(木) 09:34:23ID:???逃げるのは基本。
0849nobodyさん
2007/09/06(木) 09:43:53ID:5gplVXTA0850nobodyさん
2007/09/06(木) 09:44:24ID:???0851nobodyさん
2007/09/06(木) 10:45:07ID:???0852nobodyさん
2007/09/06(木) 11:37:58ID:???0853nobodyさん
2007/09/06(木) 12:31:25ID:acTwpTPvstream_socket_clientで接続できるかどうかで判断しているのですが、
どうもサーバが動いてるかどうかだけしかわからないようです。
正常に稼動してるか、してないかまでチェックしたいのですが、
何か他に最適な関数や方法ありませんでしょうか?
具体的な例として、 ttp://rosv.lln.jp/
こちらのサイトでは ttp://rosv.lln.jp/status.html の説明で、
Good, Closed, Dead, Downとステータス分けしていますが、
stream_socket_clientでは、GoodもClosedもDeadもおそらく同じ結果として返ってきます。
これをこのサイトのように別々のステータスとして受け取りたいのですが可能でしょうか?
0854nobodyさん
2007/09/06(木) 12:33:26ID:dac6pXjBfunction A_Link($str,$url)
{
}
として、引数$strには投稿された文章、引数$urlには相対パスを入れようとおもっているのですが、
この場合どうすればいいでしょうか
splitで>>で区切って配列1のデータで作ってみましたが、文章全体がリンクになったりとうまくいかず・・・
0855nobodyさん
2007/09/06(木) 12:43:09ID:???難しく考えず
<a href="#1">1</a>みたいにレス番号全てにアンカーつけといて
書き込み時に正規表現で>>intのものを繰り出して
<a href="#int">int</a>に置き換えすればいいんじゃない?
0856nobodyさん
2007/09/06(木) 12:50:00ID:???PHPのリファレンス(関数一覧)を見ることをオススメする。
split以外の関数にどんなものがあるのか探せ
0857nobodyさん
2007/09/06(木) 12:52:48ID:???そのサーバがきちんと動いているかどうかは、
そのサーバの喋るプロトコルに沿ってアクセスして、返答を見る必要があるだろう。
タイムアウトか、エラーが帰ってきたら死んでるのでいいじゃん。
0858nobodyさん
2007/09/06(木) 13:14:34ID:???なんというか知ってて当たり前のような事を知らない奴が多すぎる
こんなとこで質問する前に、まずはリファレンス嫁って感じ
0859854
2007/09/06(木) 13:17:01ID:dac6pXjB>>855
最初それにしようとおもったんですが、ページ切り替えを作ったときにそれだと飛ばないので
無理にでもこの方法にしてみようとおもってました
0860nobodyさん
2007/09/06(木) 15:02:26ID:???tickで割り込んだ時、元々いた場所の情報を知りたいんですが
どうすればいいですか?
0861nobodyさん
2007/09/06(木) 15:39:37ID:???このクソブラウザだけがうまく動かん。
フォームに入力された内容が全く引き継げていない。
<form >タグにactionとmethodしか設定してないんだけど
他に設定すべき情報ってありますか??
0862nobodyさん
2007/09/06(木) 15:42:01ID:???actionとmethodが正しく指定されていればSafariでも問題ないはず。
まずは落ち着いて状況を再現できる最低限のコードを晒してはどうか。
0863nobodyさん
2007/09/06(木) 16:11:21ID:???最低限のコードなのでこんな感じかな(スマーティ使用)。
かなり省いてるけど分かる人には分かると思う。
どうもphp側の問題ではないような気がして、もしかしたらスレ違いなのかもしれない。
[index.html]
<form action="./confirm.php" method="post">
<input type="text" name="f_name" value="{$input.f_name}">
<input type="submit">
</form>
[confirm.php]
$f_name = $_POST["f_name"];
//エラー判断
if( $f_name == "" ){
//リダイレクト
}
以下、テンプレートconfirm.htmlを読み込んで表示。
エラー判断の時点で何も入っていないと解釈され元のページに戻されてしまう。
もちろん何回もやったので入れ忘れたとかはない。
他のブラウザなら全く問題なく動く。
SafariはSafariでもバージョンによっては不具合が出るとかあるのだろうか。
0864nobodyさん
2007/09/06(木) 16:18:56ID:???俺が馬鹿だったのか
0865nobodyさん
2007/09/06(木) 16:29:40ID:dALDE1iv任意のファイルのアップロード・ダウンロードをできるようにしてます。
ダウンロード側で、以下のようにして正常に動作はしてますが、
$down_file のソース自体の影響でXSSなどが行われる心配はないでしょうか。
仮に行われる可能性がある場合、
ファイルのデータ自体のエスケープ処理なんてどのようにすればよいんでしょうか。
<?php
$down_file = $_GET['down_file'];
if( !mb_eregi("^[a-z0-9]+$", $down_file )){
exit();
}
Header("Content-type: text/plain; name=\"".$down_file."\"");
Header("Content-disposition: attachment; filename=".$down_file."");
readfile("/data/".$down_file);
exit;
?>
0866nobodyさん
2007/09/06(木) 16:36:36ID:???それってタブで移動できるようにする為のタグではないの?
Safariはそれでグループ化しないと値が引き渡されない?
そんなはずは・・・
0867nobodyさん
2007/09/06(木) 16:41:31ID:???まだ初期のころ
0868nobodyさん
2007/09/06(木) 16:49:24ID:???なるほど、、色々といわく付きのブラウザって事ですな。
素直に諦めるか。。。
あえてそんなクソブラウザを使うようなやつが悪い。
0869nobodyさん
2007/09/06(木) 20:19:46ID:BwUmyBl/$file="a\nb\nc\nd\n";
(何らかの処理)
print "$file[0]";
で、「a」と表示といった感じです。
0870nobodyさん
2007/09/06(木) 20:36:53ID:???0871nobodyさん
2007/09/06(木) 20:45:53ID:BwUmyBl/0872nobodyさん
2007/09/06(木) 23:23:05ID:???1レスのデータを1行にまとめてテキストファイルに記録しているのですが
新しい書き込みをテキストの上に記録していくには、
一度配列に全レスを読み込み、新しいレスを加えてファイルに書き込む方法
しかないのでしょうか?
ファイルポインタの位置から、テキストエディタのようにインサートで書き込む
ような命令はないのでしょうか?
一度配列に全レスを読み込むしか方法がない場合、例えば全書き込みが1000程で
安いレンタルサーバで利用する場合、高負荷と判断されるような処理なのでしょうか?
0873872
2007/09/06(木) 23:46:45ID:???やっぱりデータベースを利用することにします。
SQLiteって便利ですね!
0874nobodyさん
2007/09/06(木) 23:56:38ID:???0875nobodyさん
2007/09/07(金) 00:15:17ID:iXE96r/Bfor文で
0001〜0010〜0100〜1000
というふうにしたいのですが、
可能でしょうか?
0876nobodyさん
2007/09/07(金) 00:19:11ID:???0877nobodyさん
2007/09/07(金) 00:49:11ID:???0878nobodyさん
2007/09/07(金) 00:49:57ID:fIAEM3osjavaのequal()メソッドみたいな物はありますか?
0879nobodyさん
2007/09/07(金) 01:14:41ID:???0880nobodyさん
2007/09/07(金) 01:17:45ID:iXE96r/B0を表示したまま
0883nobodyさん
2007/09/07(金) 02:15:53ID:Y/cI9Wol文字列の比較なら 「==」 よりも 「===」 がお勧めです。
以下のスクリプトは、 驚くべきことに 「True」 を表示します。
$x = 0;
if ('string' == $x) {
echo 'True';
} else {
echo 'False';
}
「==」 を使って比較すると、 'string' は0と同値とみなされてしまうのです。
「===」 なら型まで比較するので、 このようなことにはなりません。
0884878
2007/09/07(金) 02:39:35ID:fIAEM3osレスどうもです。
>>883さんの例で、'string'という文字列だけが0と同値とみなされるって事は
'string'以外の文字列の比較だったら気にしなくてもいいって事かな・・・
あと、「==」が型を無視するって事は、下のサンプルはtrueを出力する
事になるんですか?
$iX = 5;
$sStr = "5";
if ($sStr == $iX) {
echo 'True';
} else {
echo 'False';
}
そうだとしたら、ちょっと気になるな・・・
文字列の比較は、「===」にして、数字と比較したいときは型変換する
ってコーディングルールを今後自分の中で作ろうかな。
これってまずいかな? なんか一般的な決め事ってあるんですか?
0886nobodyさん
2007/09/07(金) 02:57:47ID:Y/cI9Wol'string' は例であって、 'foo' でも 'bar' でも0と同値とみなされます。
ただ、 '3' や '49ers' のように整数型に変換すると0でなくなるものは0と同値とみなされないようです。
0887878
2007/09/07(金) 03:04:10ID:???そうですか。
'string'という文字列だけ例外とかおかしいですよね、失礼しました。
「===」演算子を使うようにしますわ。教えてくれてありがとう。
0888nobodyさん
2007/09/07(金) 04:32:50ID:rfOwdTtE>それってタブで移動できるようにする為のタグではないの?
いや、HTMLはPHPのように動作を命令する言語ではない。
たしか、form要素直下にインライン要素は文法違反だったと思う。
これが直接の原因とは考えられないが。
0889nobodyさん
2007/09/07(金) 04:42:50ID:OvuyfN7a>BBSを作っています。
>1レスのデータを1行にまとめてテキストファイルに記録しているのですが
>新しい書き込みをテキストの上に記録していくには、
>一度配列に全レスを読み込み、新しいレスを加えてファイルに書き込む方法
>しかないのでしょうか?
>>872さんはデータベースを使う事で解決したらしいですが
データベースを使えないサーバでは、この方法でしか不可能でしょうか?
0890nobodyさん
2007/09/07(金) 04:48:06ID:???0891nobodyさん
2007/09/07(金) 05:10:28ID:???0892nobodyさん
2007/09/07(金) 05:17:45ID:???ttp://allabout.co.jp/internet/database/closeup/CU20061118A/index.htm
・このふざけた日付は何? → 掲載日:2006年11月18日
・古の設定手順載せてやる気あるんだろうか?
・マニュアルはおろかInstall.txtすら目通してないんじゃないかと思う
こういうサイトが平然と存在していて悪影響及ぼさないのかね
0895nobodyさん
2007/09/07(金) 05:55:11ID:???0896nobodyさん
2007/09/07(金) 06:30:54ID:???0897nobodyさん
2007/09/07(金) 06:54:42ID:???そんなallaboutも上場しているんだよな。
mixiもkakaku.comもphpで実装しても大したことがない機能ばかりなので、
あれで上場できるとは、誰でも上場できるような気がする。
0898nobodyさん
2007/09/07(金) 07:13:15ID:???そこらのblog覗くとphpの設置だけで四苦八苦してサイト徘徊してるらしいよ。
んなわけだから、中にはallaboutに引っ掛かる人もいるかもしれんわ。
0899nobodyさん
2007/09/07(金) 07:34:26ID:5n6DmJVTを作っているんですが、
構築中にpostgresqlモジュールのインストールをしないと
php、postgresqlはうまく動かないと書いてあるのですが、
その方法にてマニュアルや乗っているサイトはないでしょうか?
PHP5です。postgresqlは8.1.3です。
0901nobodyさん
2007/09/07(金) 08:30:28ID:9skKCQS9俺も何も知らないときひっかかった
今はXAMPPですぐなのにね
0902nobodyさん
2007/09/07(金) 08:51:44ID:???0904nobodyさん
2007/09/07(金) 09:51:42ID:???Installerによるセットアップはさておき、php-zipファイル解凍後の作業パターン
case1
php.iniリネーム後、ini, *.dll全てシステムディレクトリにコピー
case2
php.iniリネーム後、phpフォルダにpathを通す
ini, php*ts.dllをシステムディレクトリにコピー
case3
php.iniリネーム後、PHPIniDirを設定
php*ts.dll他、拡張モジュールをシステムディレクトリにコピー
case4
php.iniリネーム後、phpフォルダにpathを通し、PHPRCを設定
ini, php*ts.dllをシステムディレクトリにコピー
動作不具合により拡張モジュールまでシステムディレクトリにコピー
みんな、自分が何やってるのかわかってないだろ?
国内のみならず海外までこの調子だからな
0907nobodyさん
2007/09/07(金) 13:09:45ID:???たしかに俺もわからんな
Apache+PHPの関連付けというくらいしか・・・
具体的にどうなっているのかはサッパリだ
0908nobodyさん
2007/09/07(金) 13:13:14ID:???0909nobodyさん
2007/09/07(金) 13:19:27ID:???0910nobodyさん
2007/09/07(金) 13:20:08ID:???0911nobodyさん
2007/09/07(金) 13:26:12ID:h8X9ZIw7さくらレンタルサーバーを借りようと思っているのですが、
モジュールモードで実行できるのがプロからなんです。
今までPHP5で動作を確認してきました。
0912nobodyさん
2007/09/07(金) 13:42:09ID:???cgiモードはcgi-binとか専用のディレクトリ作ってそこでCGIが動くように設定しなきゃいかん。
ファイルの拡張子もcgiにしなきゃいかんし色々と不便。
0913nobodyさん
2007/09/07(金) 13:45:01ID:h8X9ZIw7つまり、全てのphpの先頭に「!#usr/bin/php」とかつけないといけないのかな?
さくら借りるの辞めたorz
0914nobodyさん
2007/09/07(金) 13:50:38ID:nZ/hNLzgビジネス・プレミアム両方とも、
!#usr/bin/php つけなくても、さくらサバ動きますよ。
いたって普通に動きますよ。
質問ですが
・phpのsleepを使う意味(処理を遅くさせて何のメリットがあるのか。処理を
遅くさせることによってサーバーへの負荷を少なくするという解釈でOKなのでしょうか)
・php5 の private とか外から読めないようにする意味
を教えていただけませんでしょうか。お願いします!
0915nobodyさん
2007/09/07(金) 13:51:38ID:nZ/hNLzgすいません、
・php5 の private とか外から読めないようにする意味
これは class を使うときのことです。
0916nobodyさん
2007/09/07(金) 13:52:48ID:h8X9ZIw7なるほど、でも自分はスタンダートの予定ですorz
PHPのsleepはWindows(Winアプリ?)で実行させれる形にするときに長保しますよ。
それ以外では使ったことがないですが・・・
0919nobodyさん
2007/09/07(金) 14:09:41ID:???>>1
http://www.google.co.jp/
0922nobodyさん
2007/09/07(金) 14:16:53ID:???レス数が900を超えています。1000を超えると表示できなくなるよ。