【PHP】下らねぇ質問はここに書き込みやがれ 44
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/04/12(木) 16:54:47ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 43
http://pc11.2ch.net/test/read.cgi/php/1175368910/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0724nobodyさん
2007/04/23(月) 21:06:21ID:???では改めて。
プログラムはこれです。 ttp://www.rocomotion.jp/manage/dl/plink.zip
plink.phpの以下を書き換えました。
#-----------------------------------------------
# フレーム部分(menu)
#-----------------------------------------------
function frame()
{
global $title, $script, $col_devide;
print<<<head
<?xml version="1.0" encoding="shift_jis"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<!--nobanner-->←追加
確認しましたがタグは有効になりませんでした。
但し、フレーム部分(main) の所のhead下に同じ様に書き加えたら有効になりましたが
全てのページに反映されてしまったのでダメでした。
メニューページにだけ有効にしたいのです。
よろしくお願いします。
0725nobodyさん
2007/04/23(月) 21:13:05ID:???}
0726nobodyさん
2007/04/23(月) 21:19:25ID:???plink.phpの154行目に以下を挿入
$nobanner = ('left'==$frame) ? "\n<!--nobanner-->\n" : '';
すぐその下の<head>を以下に置き換え
<head>' . $nobanner . '
なお、なにが起きても当局は一切関知しない
0728nobodyさん
2007/04/23(月) 21:21:45ID:???0729724
2007/04/23(月) 21:31:56ID:???お手数お掛けします。
追加してみましたが、やはり全てのページで広告が消えてしまうのでダメでした。
>>727
直リンクだと弾かれるようです。 http://www.rocomotion.jp/php/p_link.php の下のほうにスクロールすると
Download linkが出るので、お手数ですがそこから落として貰えませんか。
あと追加の件ですが、>>724に書いてます…
0731nobodyさん
2007/04/23(月) 21:39:39ID:???0732719
2007/04/23(月) 21:54:11ID:???レスサンクスです、
001は数字ではなく文字列としてしか扱えないのでしょうか?
例えば、001 に1を足して002にしたい場合、
一旦1に戻して、sprintf使うしか無理なのでしょうか?
001から直接002にすることは不可能でしょうか?
0733nobodyさん
2007/04/23(月) 22:24:27ID:???0734719
2007/04/23(月) 22:49:33ID:???そうですか・・・・orz
ちなみに
sprintfでがんばろうと思ったのですが
1から001への変更方法はsprintf("%03d", 1)
でよいかと思いますが、
001から1への変更方法が思いつきません。
こちらもsprintfでいけるのでしょうか?
0735nobodyさん
2007/04/23(月) 22:58:12ID:???sprintf("%d", $val);
0736nobodyさん
2007/04/23(月) 23:01:32ID:???0737nobodyさん
2007/04/23(月) 23:09:18ID:???0738nobodyさん
2007/04/23(月) 23:19:38ID:+n8U2EAi0739nobodyさん
2007/04/23(月) 23:26:04ID:???まず自力で探せよ
googleでもyahooでも簡単にみつかるだろが
0740nobodyさん
2007/04/23(月) 23:26:39ID:???$foo = 1;
sprintf ("%03d", $foo);
$foo++;
sprintf ("%03d", $foo);
0741nobodyさん
2007/04/23(月) 23:29:28ID:+n8U2EAiだってお目当てのものが見つからなかったんだもん。
だから諸兄たちに聞いてんのさっ
0742nobodyさん
2007/04/23(月) 23:31:13ID:???環境に制限があるならそれも書け
二度手間になるだろ
0743nobodyさん
2007/04/23(月) 23:39:47ID:+n8U2EAiこのあたりのキーワード絡めてググったかな〜
ffmpegってのにピピンときたが、よくわがんね。
オレの頭に制限ありってとこだ。
0744nobodyさん
2007/04/23(月) 23:42:47ID:???0745nobodyさん
2007/04/23(月) 23:43:50ID:???こんなんめっかった
ttp://ffmpeg-php.sourceforge.net/
英語は頑張って読め
0746nobodyさん
2007/04/23(月) 23:51:20ID:WTwJGp5Qみたいに、名前とメアドが区切られてるのを一行とし、
それを何個か作ったのをtxtに保存しておいて、
任意の行を削除したい、という時に、
その行以外を一度$tmpに保存したいんですけど、
$listf = fopen ("user.txt", "r");
list($fname,$lname,$mail) = fgetcsv($listf,4096,"|");
$tmp = "";
while (!feof($listf))
{
if(trim($fname)!=$usr)
{
$tmp .= $fname."|".$lname."|".$email."\ n";
}
list($dusername,$dpassword,$first,$last,$mail,$org,$lv) = fgetcsv($listf,4096,"|");}
fclose($listf);
こんな感じで試してみたんですがダメでした。
間違いか代替手段か何か教えてもらえないですか?
0747nobodyさん
2007/04/23(月) 23:53:48ID:???0748nobodyさん
2007/04/24(火) 00:00:26ID:WTwJGp5Q}
list($dusername,$dpassword,$first,$last,$mail,$org,$lv) = fgetcsv($listf,4096,"|");}
fclose($listf);
の$flist以降は
list($fname,$lname,$mail) = fgetcsv($listf,4096,"|");
です。
>>747
$tmpの中にちゃんとデータが入ってるか確認しようと
echo $tmp;
っていれてみたんですが、何もでてきませんでした
言葉足らずですいませんです
0749nobodyさん
2007/04/24(火) 00:06:25ID:???変数名がめちゃめちゃでどこから突っ込んでいいのかわからんw
0750nobodyさん
2007/04/24(火) 00:16:27ID:eGs+hfXK$listf = fopen ("user.txt", "r") or die("error");
list($fname,$lname,$mail) = fgetcsv($listf,4096,"|");
$tmp = "";
while (!feof($listf))
{
if(trim($fname)!=$usr)
{
$tmp .= $fname."|".$lname."|".$mail."\ n";
}
}
fclose($listf);
>>749
すいません。
貼り直しました。
0751nobodyさん
2007/04/24(火) 00:34:59ID:???はwhileの中でやろうね
0752nobodyさん
2007/04/24(火) 00:35:19ID:eGs+hfXKお手数かけました。ありがとうございます。
0753nobodyさん
2007/04/24(火) 00:44:36ID:???0754nobodyさん
2007/04/24(火) 00:47:09ID:???気持ち悪いんですけど。そんなところまでperl真似なくて
いいと思うんですけど。
0755nobodyさん
2007/04/24(火) 00:51:31ID:???0756nobodyさん
2007/04/24(火) 00:53:19ID:???他にもたくさんwebで使えるいい言語はあるぜ
0757nobodyさん
2007/04/24(火) 00:57:16ID:???0759nobodyさん
2007/04/24(火) 01:01:07ID:???変数の前に$記号しかないなら、無くても同じだと思うんですが。
$記号打とうとして#と打ち間違えたりして、毎回いらいらするんですが。
0761nobodyさん
2007/04/24(火) 01:03:42ID:???0762nobodyさん
2007/04/24(火) 01:03:47ID:???$a = 'baka';
$b->$a; // $a->baka
みたいなことができる。なんに使うのか? って疑問に思うだろうけど、
結構これは使い出がある。なんとも汚い文法だとは思うけどもね。
0763nobodyさん
2007/04/24(火) 01:03:58ID:???0764nobodyさん
2007/04/24(火) 01:10:47ID:???PHPでやってみてたんですが、Rubyだけで何でもできるようになりたいです。
0765nobodyさん
2007/04/24(火) 01:21:12ID:???0766762
2007/04/24(火) 01:25:32ID:???ruby使ってますよ。むしろあれでリフレクションを覚えて
「おー、PHPでもできるワロス」とかいいつつ使っていました。
あと訂正
$b->$a; // $a->baka (×)
$b->$a; // $b->baka (○)
0767nobodyさん
2007/04/24(火) 01:45:10ID:???$変数
を打ち間違えていらいらするなんてプログラマとしてあり得ん。
0768nobodyさん
2007/04/24(火) 01:52:21ID:???で、周りでは皆PHP・・・あたし悔しい!みたいな?
0770nobodyさん
2007/04/24(火) 02:30:08ID:???遅レスだが、CGI=Perlっていうのが今でも当たり前になってるだろ?
PHPが浸透してきているとはいえ、今でもWebのシェアはPerlが大半を占めている。
Web特化というのが売りのPHPは、当然Perlを一番意識している。
なんでPerlに大部分が似ているかというと答えは簡単。
Perlユーザーを移行させるのが狙い。
他にもJavaやCからの移行者を増やすためにそれらの言語に似た処理を取り入れてる。
そして新規参入のプログラマにもとっつきやすい言語となっている。
利用者を増やすというのは勝ち残る為に一番の条件なのだよ。
0771nobodyさん
2007/04/24(火) 02:35:22ID:???・・・のはずであった。
0772nobodyさん
2007/04/24(火) 02:41:44ID:???コレは全く問題ない。
だがしかし!
C#の「:」だけは許せねぇ!
ソースをざっと読んだだけじゃ見落としちゃうじゃないか!
0773nobodyさん
2007/04/24(火) 08:00:41ID:???学校でCとかJavaやると時々変数に$付けてしまう
0774nobodyさん
2007/04/24(火) 08:18:37ID:???あとPHPの$記号って何か意味あるんですか。
変数の前に$記号しかないなら、無くても同じだと思うんですが。
$記号打とうとして#と打ち間違えたりして、毎回いらいらするんですが。
この中で変数はどれですか? $記号ですか?
0776nobodyさん
2007/04/24(火) 08:39:47ID:???0777nobodyさん
2007/04/24(火) 12:55:14ID:sEkvt9e40778nobodyさん
2007/04/24(火) 13:00:34ID:???phpinfoみたいなやつです
0779虚弱PHP
2007/04/24(火) 13:02:54ID:???http://www.php.net/manual/ja/function.date.php
0781nobodyさん
2007/04/24(火) 13:04:53ID:???ろくに理解してないのに3万も使ってる…
0782nobodyさん
2007/04/24(火) 13:05:37ID:???0783nobodyさん
2007/04/24(火) 13:13:05ID:aF4+VraQ掲示板の書き込みとか、何かの新規登録受付フォームとかで
ランダムな文字をノイズの入った画像にして、
その文字を入力しないと登録できないようになってる仕掛けが
ありますが、あの仕掛け、フリーなCGI(PHP含む)でどこかに
ありませんでしょうか?
0784虚弱PHP
2007/04/24(火) 13:13:22ID:???おっと、勘違い。
標準関数では無いと思う。
http://shain.tomocreative.net/2007/04/post_2.html
0786nobodyさん
2007/04/24(火) 13:22:26ID:???0787nobodyさん
2007/04/24(火) 13:57:37ID:???0788nobodyさん
2007/04/24(火) 14:20:59ID:43dSuuSBPHP4.4.6
RHL7.3
[行ったこと]
canpen.php
1. フォームからテキストエリア内に文字列を入力。$messages
2. POSTで飛ばす。$messages
canpen_write.php
3. $messagesの取得
$messages = str_replace("<", "<", "$messages");
$messages = str_replace(">", ">", "$messages");
$messages = str_replace("\t", "", "$messages");
$messages = nl2br($messages);
4. $messages出力。確認表示。
※改行されて、<>←も表示されている。
5. 「書き込み」ボタンにて、POSTで飛ばす。hiddenで。
→自ページ canpen_write.php
6. $messages取得。
ここで、再度、「3.」でやった文字列の整形をするんでしょうか?
で、再度整形して、$messagesを出力すると、
$messages:<ccc><br />
<ddd><br />のように出力されます。
はじめにフォームで、入力した文字列は、<ccc>エンターキー<ddd>エンターキー
です。(です。は、入力していません。)
<br />が出力されるので、これを出力させない方法があれば、
どなたかご教授して頂けないでしょうか?宜しくお願い致します。m(..)m
0789nobodyさん
2007/04/24(火) 14:23:57ID:43dSuuSB※改行されて、<>←も表示されている。
5. 「書き込み」ボタンにて、POSTで飛ばす。hiddenで。
→自ページ canpen_write.php
6. $messages取得。
ここで、再度、「3.」でやった文字列の整形をするんでしょうか?
で、再度整形して、$messagesを出力すると、
$messages:<ccc><br />
<ddd><br />のように出力されます。
はじめにフォームで、入力した文字列は、<ccc>エンターキー<ddd>エンターキー
です。(です。は、入力していません。)
<br />が出力されるので、これを出力させない方法があれば、
どなたかご教授して頂けないでしょうか?宜しくお願い致します。m(..)m
0791nobodyさん
2007/04/24(火) 14:41:12ID:???とりあえずstr_replaceじゃなく、htmlspecialcharsを使っとけ
タイミングとしては、「送信されたとき」というよりむしろ「表示するとき」にhtmlspecialcharsを呼び出せば間違いは減る
0792nobodyさん
2007/04/24(火) 14:58:28ID:43dSuuSB791さん、ありがとうございます。
htmlspecialcharsで出力すると、&lt; &gt;と、そのまま&lt:&gt;
がブラウザに出力されます。実体参照に戻されて、<>等と出力されるはずが、
そのまま出力されます。
htmlspecialcharsを使用するときは、何か特別な設定がいるんでしょうか?
m(..)m
0793nobodyさん
2007/04/24(火) 15:01:19ID:43dSuuSB0794nobodyさん
2007/04/24(火) 15:03:46ID:???0795nobodyさん
2007/04/24(火) 15:09:53ID:???確認画面でhiddenに埋め込む方にはnl2brをかけなくていい
(表示する方だけにnl2brを行えばいい)
0796nobodyさん
2007/04/24(火) 15:22:16ID:43dSuuSBSuccess!!です。成功しました。とても助かりました。
今やっている部分を頭の中にまとめて理解したいと思います。
791さんのおかげで、モヤモヤが今スッキリしていきそうです。
(まだ、完全に理解していないw)パターンで覚えるよりも、仕組みをキッチリ
理解していこうと思います。速レスでとても感謝しています。
ありがとうございました。m(__)m
0797nobodyさん
2007/04/24(火) 16:26:10ID:???俺が昔作ったやつ
http://nike.s151.xrea.com/qreki.phps
0799603
2007/04/24(火) 16:41:18ID:YIKrD66nあれから調べてみましたが、
session_regenerate_id(true) の処理が問題のようでした
この処理を外したところ、問題は出なくなりました
また、session_regenerate_id() ではセッションが切れるということはありませんでした
今、セッションデータを file ではなく、
データベース上で処理する仕組みを作って検証しています
session_set_save_handler は使用せず、Cookie, GET, POST の値を拾って
独自に PDO クラスでセッション ID や有効期限を保存、更新処理等するものなのですが、
こちらは複雑な処理に関わらず、更新ボタン猛連射でもまったく問題が出ていません
session_regenerate_id(true) は、古いセッションデータファイルを
自動で削除してくれるとはいえ、DB コンテナに比べて
大したオーバーヘッドになるとも思えないし、
セッションファイルが多数存在するのなら別ですが、検証上では 5 ファイル程度です
推測ですが、session_regenerate_id(true) の処理には
連続リロードに耐えられない問題があるのではと思います
アクセスが多いサイトのセッションの仕組みに利用すると問題がでるかもしれません
0800虚弱PHP
2007/04/24(火) 16:47:27ID:???俺も推測でしかないけど、
session_regenerate_id()で問題出ないなら、
余計にsession_regenerate_id(true)の問題じゃなくて、
ブラウザ側の問題だと思うよ。
ブラウザがサーバーから返されたCookieヘッダを解釈・設定する前に
F5押したとかじゃないかなぁと思うんだけど。
0801nobodyさん
2007/04/24(火) 16:48:18ID:???お前相当暇人だなw
不覚にもこれには笑ったぜw
ttp://nike.s151.xrea.com/okki.php
0802nobodyさん
2007/04/24(火) 16:57:34ID:EJNwdirJ適当な場所にライブラリパスを通して、そこにファイルコピーすればいい
0806603
2007/04/24(火) 17:17:38ID:YIKrD66nどうも
>>603 で書いたとおり、HTTP リクエスト、レスポンス上で見る限りは
Cookie, Set-Cookie は切り替わったものを正しくやり取りしてるんですよね
今、独自 DB コンテナの方で session_regenerate_id(true) の相当の機能を
作成中でして、これで連続リロードしてみれば
ブラウザ側動作の影響かどうかある程度はっきりすると思います
ブラウザ側動作の影響なら、連続リロードした人間だけの問題になりそうなので
この件は無視できそうです
>>801
わらた
0808nobodyさん
2007/04/24(火) 18:27:05ID:???0809nobodyさん
2007/04/24(火) 18:33:05ID:???0810虚弱PHP
2007/04/24(火) 18:45:46ID:???うむむ。そうかぁ。
save_handlerがmmだと切れるって話があったような気がするんだけど、
今回はfilesみたいだしね。
0811603
2007/04/24(火) 19:25:37ID:YIKrD66nそちらのご推測通りでした
独自DB コンテナで再現した session_regenerate_id(true) 相当の機能でも同じ症状がでました
再度検証してみたところ、致命的な見落としがありまして
例えば連続で素早く 10 回程更新ボタンを押すと、サーバ側には
本来残らないはずのセッションデータファイルが 5 〜 10 近く残っているが、
HTTP Header キャプチャ(Live HTTP header on Firefox) 上では
3 つ程のやり取りしか残っていない・・
試しに ieHTTPHeader on IE で調べたら、Firefox で行った同じ速度でリロードしても
すべてキャプチャしてくるし、セッション自体も切れないみたい
Opera では Firefox 程ではないけどまれに切れる
ちなみに、GET だけに制限してみたセッション ID のやりとり(この場合はリンクの猛連射)
でも同じ症状がでるので、HTTP レスポンス自体を受け取ってないんでしょうね
どうもありがとうございました
// 正直、JavaScript や CSS 以外でブラウザ別の動作に悩まされるとは思わなかった
0812nobodyさん
2007/04/24(火) 19:37:08ID:???0814nobodyさん
2007/04/24(火) 22:36:23ID:DXOCGV6O長ったらしいテキストファイルの1部分のみ情報を取り込みたいのですが、
そういうのに適した関数等はありますでしょうか。
0815nobodyさん
2007/04/24(火) 22:39:13ID:???0816nobodyさん
2007/04/24(火) 22:55:02ID:???0818nobodyさん
2007/04/24(火) 23:38:17ID:???それらの仕組み、もしくはそのシステムが構築できてあるソースのURLなど知っている人がいましたら教えていただけないでしょうか。
0819nobodyさん
2007/04/24(火) 23:38:55ID:???URLはシラネ
0820nobodyさん
2007/04/24(火) 23:51:38ID:???youtubeは解析されまくってるから仕様なんかはすぐ出てきそうだけど
0821nobodyさん
2007/04/25(水) 01:01:57ID:j8qAcKjIPHP見るとデフォルトでSJISになる
PHPに記述しないでデフォルトをEUCにできないかな
■ このスレッドは過去ログ倉庫に格納されています