【PHP】質問スレッドpart16【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/04/07 01:06ID:HTcWOpWf上級者用や雑談スレを立てたくなった場合は後から適宜立ててください。
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ及び注意事項等は、 あふぉが居なけりゃ>>2-5
0775nobodyさん
04/05/11 19:18ID:wZxq13vM$num2に入っている値が$num1にあった場合、$num1の配列から、その値を削除するには
どうすればいいのでしょうか?
$num1[0] = '001';
$num1[1] = '002';
$num1[2] = '003':
$num1[3] = '004';
$num2[0] = '002';
$num2[1] = '004';
で$num1を001と003だけにした。
0776nobodyさん
04/05/11 19:58ID:???$num1 = array_diff($num1, $num2);
//検証
foreach($num1 as $key => $value){
echo "$key $value <br>";
}
http://jp.php.net/manual/ja/function.array-diff.php
0777nobodyさん
04/05/11 20:03ID:???url_rewriter.tags : a=href,area=href,frame=src,input=src,form=,fieldset=
session.use_trans_sid : on
の状態で、
<a href="./">a</a>
<MAP name="map1"><area href="./" shape="rect" coords="0,0,100,100"></MAP>
<input src="./">
<form method="post" action="./"></form>
<fieldset></fieldset>
を実行させると、全ての行に ./?PHPSESSID=〜か<input type="hidden" name="PHPSESSID" が挿入される。
要は、trans_sid = onなら、url_rewriter_tagsで設定したものに対して
>>762が示している置き換え手順に従って単に書き換えられる。
formのinput type="hidden"の />はソース内に埋め込まれているので変更したいならここを弄る。
それが嫌ならurl_rewriter_tagsからformを除外し、自分でSIDを埋め込む。
0779768
04/05/11 20:28ID:???やっと挙動が理解できたように思います。
そのタグに クエリを付加するか、hiddenフィールドを埋め込むかは、
タグごとに C のソースで決まっていると考えて良いようですね。
fakeentry は書いても書かなくても良くて、
form= と form=fakeentry は同じなのですね。
hiddenフィールドは fieldset の中に入っていてほしいので、
form= の代わりに fieldset= と書くことにします。
/>については、あまり気にしないことにします。
この自動挿入は、クライアントが Cookie をどう設定しているかによって
hiddenフォームの有無が変わるので、
JavaScript で扱うフォームの要素数を決め打ちにできなくなるのが
少々、悩みの種ですが、それは何とか考えることにします。
ありがとうございました。
0780Upo
04/05/12 00:16ID:UdSoQGZz最初のログイン後にセッション情報をDBに格納して、次のログインは、
セッション情報があれば、ログイン不可にすればと思ったのですが、
最初のログインしたユーザが不正ログアウト(ブラウザーの「X」をクリックなど)
した場合、セッション情報が不当に残ってしまうので使い物になりません。
わかる方がいましたら、お願いします。
0781nobodyさん
04/05/12 04:11ID:Y6JDwafk「"」が含まれてると、$_REQUESTなどで受け取るときに
「\"」と\が付いてきてしまうのですが、
これを付けないように送ることはできないでしょうか?
0782nobodyさん
04/05/12 04:31ID:???0783nobodyさん
04/05/12 04:32ID:???magic_quotes_gpc
http://www.php.net/manual/ja/ref.info.php#ini.magic-quotes-gpc
0784nobodyさん
04/05/12 11:26ID:BOFMZpgMFatal error: Call to undefined function: pg_insert()
という未定義エラーが出ました。
この実験的なステータスを有効にするには
php.iniのどこを書き換えればいいんですか?
[PostgresSQL]
; Allow or prevent persistent links.
pgsql.allow_persistent = On
; Detect broken persistent links always with pg_pconnect(). Need a little overhead.
pgsql.auto_reset_persistent = Off
; Maximum number of persistent links. -1 means no limit.
pgsql.max_persistent = -1
; Maximum number of links (persistent+non persistent). -1 means no limit.
pgsql.max_links = -1
postgresql部分はこれだけ?
0785nobodyさん
04/05/12 11:59ID:???Dynamic Extensionsの項の extensionの組み込み部分
Unix系(pgsql.so)とWindows(php_pgsql.dll)は
違うので、マニュアルを確認のこと。
# つかマニュアル読んで無いやろ?
# 関数リファレンスまでのI〜IVは通しで読んでおくこと。
# 関数リファレンスは暇な時と必要な時でいい
0786nobodyさん
04/05/12 13:19ID:???レスがついてないようなので書いてみる。
似たような仕事をしたことがあった。JSP だったけれど。
標準的な HTTP サーバとブラウザでは、多重ログインを抑止するまっとうな方法は
存在しないように思う。だから、何かを犠牲にしなければならないわけで、
1.(現実的)セッションタイムアウトを短めにする。
タイムアウトを10分とかにして、時間切れを JavaScript のポップアップなどで
告知。ページの一時的な遷移などをユーザに促す。
・長所は、既存のコードや設備の変更がほとんど不要なこと。
・短所は、ユーザがわずらわしいこと。
2.(理想的)Java Applet か Macromedia Flash の導入
これらは、ブラウザをリロードすることなしで、サーバと交信を行うことができる。
小さなパケットを絶えずサーバとやり取りさせて、それが途切れたらログオフしたと見なす。
・長所は、ユーザにもサーバにも負担にならず、技術的にエレガントなこと。
・短所は、多くの新規コードを導入しなければならないこと。
3.(折衷案)隠しフレームを作り、小さな隠しページを絶えず自動リロード。
要するに、2.と同じようなことを1.と同じ技術でできないかと考えたもの。
セッションタイムアウトを1分、リロードサイクルを30秒とかにする。
・長所は、技術的にあまり手間がかからず、ユーザもわずらわしくない。
・短所は、サーバに負担がかかること。イントラネット向きか?
実際の仕事は、私は 2.で行きたかったんだけど、3.のような感じで進んだ。
最後は結局、仕事自体がポシャったんだけどね(苦笑)。
0787784
04/05/12 13:52ID:???関数リファレンスは確かに読んでません。
ていうか、技評のPHPポケットリファレンス(ISBN4-7741-1668-8)を見ながら
書いてるんすが、この本、ちょっと説明不足ぎみ...
785さん、サンコス。RHL9です。暇な時にチェックしときます。
ていうか将来変更される可能性がある関数なので別に使わなくてもいいか....
0788785
04/05/12 15:40ID:???今見直してみたらpg_insert()の未定義エラーなんだね。
それ以前にpg関数使ってる筈だから自分の指摘は見当違いだったな。
ところでポケットリファレンスにはpg_insert()はPHP4.3以降の
対応と書かかれてたけど、結局試してたのがPHP4.3未満だったのかな?
http://jp2.php.net/manual/ja/function.pg-insert.php にも書いてあるね。
pgsql.cのソース見てみたけど、PHP4.2.3のものでは未定義、
PHP4.3.0のものから定義されてた。
pg関数は名称変更もあったり色々と変更/追加が多いので、
使う前にはちゃんと確かめた方がヨロシ。
# データベース絡みはどのみち抽象化して使うのが正攻法だと思います。
0789nobodyさん
04/05/12 15:45ID:???よくWeb上で実現しているポートスキャンをやって、
ポートが空いているかどうかを調べるサイトを作りたいのですが、
方法や使用する関数名など調べてもいまいちピンときません。
どなたかご存じのカタられませんか?
0790nobodyさん
04/05/12 16:38ID:???自分のところをチェックするだけなら巷に多々あるスキャンツール
を使えばよいこと。仕組みを理解したり実装を考えたり出来ないのなら
他人が利用することが前提のツールを作ろうとしなさんな。
仕組みから実装を考える部分で疑問が出れば、それを質問として
訊けば回答が得られる可能性はある。でも実装は難しくないよ。
(仕組みも他の通信プログラムに比べれば簡単)
0791nobodyさん
04/05/12 16:58ID:???に
>Warning
>Do not use Apache 2.0 and PHP in a production environment neither on Unix nor on Windows.
と有りますが
具体的にどんな問題が有りますか?
またApache2にDSOではなくstaticに組み込むことは出来ますか?
0792nobodyさん
04/05/12 17:18ID:???実運用では使わないでねって事じゃないの
0793784
04/05/12 17:22ID:???今phpinfoしてみたらphp4.2.2だった...ガーン
phpリファ本はphp4.3.0-pre2をベースにしてます。
どうりで動かない部分が多くて苦労してるはずだ。
0794nobodyさん
04/05/12 17:44ID:???同一人物かどうかしらんけど、WebProg板のApacheスレと自宅鯖のApacheスレに同様の
書き込みがあったところなんだが。
0795nobodyさん
04/05/12 18:02ID:???0797nobodyさん
04/05/12 18:22ID:???こう言われてるけど、普通に使えてるよー とか 話にもならない とか
そういうのって無いですか?
後
>979 名前:DNS未登録さん[sage] 投稿日:04/05/11 18:34 ID:???
>最近Apache側とPHP側が和解した
>
>PHP側の譲歩
これもちょっと気に成ったんですが、もうすぐApache2で安定したバージョンが出せる
という解釈であってますか?
後半は向こうで聞いた方が良いのかな?
0798nobodyさん
04/05/12 18:24ID:???死ねよ。スレ荒らすな
0799nobodyさん
04/05/12 18:54ID:???0800nobodyさん
04/05/12 18:57ID:???いやメモリーリークするような現象が見受けられる。
運用のスタイル如何で他にも支障があると思う。
トライtoチェックandリカバリが必要という点で
Apache2+PHP(Apache2filter)"実運用"に向かない。
どうしてもApache2の機能が使いたいならPHP(CGI)と
組みあわせる。
0801nobodyさん
04/05/12 19:01ID:???ありがと
何か、一年ぐらい前から進歩してないかな?
なら和解って話しに期待を寄せつつ待ちかな
タイミングが悪い時に書きこんじゃって、すみませんでした
0803nobodyさん
04/05/12 19:58ID:???0804nobodyさん
04/05/12 20:14ID:???0805nobodyさん
04/05/12 20:24ID:???0806nobodyさん
04/05/12 20:27ID:???( ´,_ゝ`)プッ
0807nobodyさん
04/05/12 21:09ID:???いやいやいや・・
>>798(俺)に対してプッって言われたから>>802(俺)が反論したわけで
状況見れば分かるようなことをわざわざ等号で結ぶ必要があるのか?
等号厨なのか?
0808nobodyさん
04/05/12 21:33ID:???0809nobodyさん
04/05/12 22:28ID:???レンタルサーバーのPHPがApacheのモジュールとしてインストールされているかどうかを
判断するには、普通に.phpが動作したらokなんですか?
cgiとして動くのは usr/bin/php が必要と言うこと?
Apacheのモジュールとして動作させた方が高速で負荷が少ないと聞いたもので…
0812nobodyさん
04/05/13 03:26ID:???プッε=_| ̄|( ´,_ゝ`)
0813nobodyさん
04/05/13 08:19ID:Ldb9FmGr完全レイアウト目的で使おうと思い入門サイトなど見てみたのですが
そういう使い方を解説してるページがありません。
やりたいことは、たとえばこういうレイアウトのページ
■■■■■■■■
■■□□□□■■ ■・・・メニューや飾り枠など
■■□□□□■■ □・・・中身のHTML
■■□□□□■■
■■□□□□■■
で、メニューを叩くと □ の部分のみ書き換えるというやつです。
そのように展開したページのURLはindex.php?aaa=bbbのようになってます。
なぜPHPに目をつけたかというと
・フレームを使いたくない
・全HTMLに■部分をつけたくない(Updateが大変)
・DreamWeaver等エディタではやりたくない(リンケージ機能など)
という理由だけなのですが、こういう目的のPHP使いは
邪道なのでしょうか?これに結びつく使い方の説明が見つからないので・・
他にもっといい何かがあるのでしょうか?
一応初心者級ですがperl, cgi, javascriptは書けます。
どなたかアドヴァイを・・・!
0815nobodyさん
04/05/13 09:42ID:???ファイルシステム関数のトコとかもう一度リファレンス読んでみてはいかがでしょう。
ぉれ的にはそれでいけるとおもうんですけど。
0816nobodyさん
04/05/13 09:42ID:Ldb9FmGr本気本気超本気です。
ドエライ勘違いしてます?
おしえてください・・・
0819nobodyさん
04/05/13 11:59ID:d+uWkqgBimgフォルダにある1.jpg 2.jpg 3.jpgを圧縮したいのです。
以下のプログラムを実行すると
hoge.tar.gz ファイルが作成されるんですが、これを解凍すると
1.jpgと2.jpgしか中にありません。なぜでしょうか。
<?
$file = "1.jpg 2.jpg 3.jpg";
$cmd= "tar zcvf hoge.tar.gz $file";
system("cd img;$cmd.$ret");
?>
0820nobodyさん
04/05/13 12:13ID:???0821819
04/05/13 12:17ID:d+uWkqgBtar zcvf hoge.tar.gz 1.jpg 2.jpg 3.jpg
とコマンド打ってみましたらちゃんと実行されました。
0822nobodyさん
04/05/13 12:18ID:???0823819
04/05/13 12:22ID:d+uWkqgB$retを消したらうまくできました。
すいません。
0824nobodyさん
04/05/13 18:07ID:???教えてください
###############################################################
# ロック処理
sub lock {
if (-e $lockfile) {
local($mtime) = (stat($lockfile))[9];
if ($mtime < time - 60) { &unlock; }
}
local($retry)=5;
if ($lockkey == 1) {
while (!symlink(".", $lockfile)) {
if (--$retry <= 0) { &error('LOCK is BUSY'); }
sleep(1);
}
} elsif ($lockkey == 2) {
while (!mkdir($lockfile, 0755)) {
if (--$retry <= 0) { &error('LOCK is BUSY'); }
sleep(1);
}
}
$lockflag=1;
}
sub unlock {
if ($lockkey == 1) { unlink($lockfile); }
elsif ($lockkey == 2) { rmdir($lockfile); }
$lockflag=0;
}
###############################################################
↑このコードです
0825nobodyさん
04/05/13 18:11ID:???0829nobodyさん
04/05/13 19:10ID:???0830hiro@ ◆7iyjK8Ih4Y
04/05/13 19:30ID:???遅れてすみません。
基本的なこと忘れてました。(基本?
jcode付けてなかったです。
まぁ気軽にがんばっていきます。
0831nobodyさん
04/05/13 21:16ID:HMzJsd5o0832nobodyさん
04/05/13 21:34ID:???0833nobodyさん
04/05/13 21:41ID:???座布団全部持ってって!
0834kuro
04/05/13 21:52ID:Enx3JY3Vhttp://pcbiz-j.com/business/blt.html
■不用品の処分から高額換金、プロのノウハウなど、毎月30万円稼ぐテクニックをあなただけに教えます。
■今なら期間限定割引!即金パックの販売代理店権利つき!
http://pcbiz-j.com/business/blt.html
きちんとした通信販売ビジネスです。
▼販売用のホームページを無料で支給します。
▼決していかがわしいマネーゲームなどではありません。
▼作業は1日にわずか数十分。(メール処理、通帳記帳など)
▼こっそり儲けたい人には、別名義での開業オプションもあります(資料メール参照)
http://pcbiz-j.com/business/blt.html
0835nobodyさん
04/05/14 01:05ID:???そのボタンを押すだけで削除〜みたいな事ってできますか?
$delfile = fopen('kakikomi.txt','r')
if ($_POST['del']) {
for ($i=0;$i<count($delfile);$i++)
{
$arr = explode(",", $delfile[$i]);
if ($arr[0] == ここがわかりません) {
array_splice($def, $i, 1);
}
}
}
表示されるのはID(ユニーク)と名前とメッセージでkakikomi.txtから配列にして表示しています。
削除ボタンが押された時に$_POST['del']とIDを通達するようにしたいんですがその方法がわかりません。
プログラム自体始めた麦価なので質問の仕方すらわからないですが、ヒントください。
0837nobodyさん
04/05/14 01:14ID:???わかり易いようにと整理してたもので。
$delfile = open('kakikomi.txt');
if ($_POST['del']) {
for ($i=0;$i<count($delfile);$i++)
{
$arr = explode(",", $delfile[$i]);
if ($arr[0] == ここがわかりません) {
array_splice($def, $i, 1);
}
}
}
こうですね!
0838nobodyさん
04/05/14 01:24ID:???if ($_POST['del']) {
for ($i=0;$i<count($delfile);$i++)
{
$arr = explode(",", $delfile[$i]);
if ($arr[0] == ここがわかりません) {
array_splice($def, $i, 1);
}
}
}
何度もすいません。。。orz
0840824
04/05/14 01:38ID:xJCSoVDm0841nobodyさん
04/05/14 01:39ID:???そりゃ、削除ボタンの付け方次第なんで、そっちをどのようにしたのかに因るがな。
0842nobodyさん
04/05/14 01:41ID:???となっていて、1行1レスです。
0843nobodyさん
04/05/14 01:45ID:???$_POST['del']に削除するIDが入っているのなら、
if($arr[0]==$_POST['del'])でいいのじゃないかな。
0844nobodyさん
04/05/14 01:45ID:???0845nobodyさん
04/05/14 01:46ID:???削除ボタンは<form method=POST><input type="submit" name="$id">
$idはkakikomi.txtのユニークなIDです。
0847nobodyさん
04/05/14 01:54ID:???そういうのは自分で構造考えてやったほうが後々のためになる。
0848nobodyさん
04/05/14 01:56ID:???にするとIDをどこで見分ければいいかがわからないんです。。ス
0849nobodyさん
04/05/14 02:00ID:???漏れの場合はたいていJavaScriptを使うんだけど、
<input type="hidden" name="del" value="">
としておいて、
<input typr="button" value="削除" onClick="form.del.value='$id';from.submit();">
見たいな感じ。
0850nobodyさん
04/05/14 02:01ID:???0851nobodyさん
04/05/14 02:04ID:???各ボタンごとにformを使う
<form><input type="submit" name="id_01"></form> -> $_REQUEST['id_01']がセットされる
<form><input type="submit"><input type="hidden" name="del" value="01"> -> $_REQUEST['name']='01'
全体を1つのformに収める
<form><input type="submit" name="id_01"><input type="submit" name="id_02"></form> -> (略)
0852nobodyさん
04/05/14 02:18ID:???javascriptっていう手もあるんですか、なるほど。
851さんの方法でもできるんですね。ちょっと色々やってみて出来たら報告しにきます。たぶん。
0853nobodyさん
04/05/14 02:34ID:???0854nobodyさん
04/05/14 06:14ID:???JavaScriptが使えない場合はどうしてる?
>>852
どっか適当なところ(先頭行とか)に
print_r($_post);
等入れて、何が引き渡されるか確認するといい
0855849
04/05/14 09:24ID:???いままでJavaScriptが使えない環境を考慮しなければならない案件を受けたことないし、
個人的に趣味で作るサイトもJavaScript必須にしているので、あまり深く考えたことがないのだが、
単純に済ませるのなら、aタグでリンクを貼ってもいいんじゃね。
<a href="http://www.example.com/hoge?DEL=$id">DEL(またはボタンアイコン)</a>
どうしてもinputタグで尚且つsubmitボタンのvalue値を"削除"か"DEL"でなら、
name側をユニーク(name="DEL-$id")にしてphpで$_POST配列を調べるとか。
クロスブラウザなサイトもすばらしいと思うが、NN4.xは捨ててもいいと思うし、
「JavaScript機能はOnでお願いします」って断って、利便性とか見た目と
開発効率の両立するのもありだと思う。JavaScriptが苦手な人はナニですが...
CSSを使って別ファイルにすると、HTMLの中にJavaScriptが占める割合は
最近ますます増えてます :-)
0856nobodyさん
04/05/14 12:00ID:vu0WINSDtitle:ぽぽたん
title:ぴちぴちピッチ
・
・
というファイルを
$buff[cnt] = FgetS($fp,255);
って書いて、ファイルの終わりになるまでカウントして取り捲ってるんですが、
とり終わった後、
title[0] => ぽぽたん
title[1] => ぴちぴちピッチ
といった感じの連想配列にしたいんですが、どうしたらいいでしょうか?
それともとってくる段階で、連想配列にはめ込む方法があるんでしょうか?
0857nobodyさん
04/05/14 12:16ID:???$buff = file('ファイル名');
ってやると
$buff[0]=>'title:ぽぽたん'
$buff[1]=>'title:ぴちぴちbitch'
ってなるのは知ってる?
0858856
04/05/14 12:26ID:vu0WINSDしってます
PReg_Split や、Explode で分割したら
Array
(
[0] => title
[1] => ぽぽたん
)
Array
(
[0] => title
[1] => ぴちぴちぴっち
)
ってなっちゃうんで、どうすればいいのか悩んでます。
0859nobodyさん
04/05/14 12:31ID:???str_replaceとか
0861nobodyさん
04/05/14 13:18ID:vu0WINSDはい、それもそうなんですが、
連想キーを元に値を引き出すってのをやってみたくて・・
配列関数で、値のソートだとか便利な関数が用意されてるみたいなんで
後々便利だとおもい、何とか$key=>$value の形に持っていければとおもっています。
0863nobodyさん
04/05/14 13:28ID:???title:あああ
title:いいい
name:ううう
title:えええ
name:おおお
↓
$title[0]=>'あああ'
$title[1]=>'いいい'
$title[2]=>'えええ'
$name[0]=>'ううう'
$name[1]=>'おおお'
0864nobodyさん
04/05/14 13:30ID:???0866856
04/05/14 13:38ID:vu0WINSDはい、それがやりたいんです。
Array
(
$title[0]=>'あああ'
$title[1]=>'いいい'
$title[2]=>'えええ'
$name[0]=>'ううう'
$name[1]=>'おおお'
)
こうしておけば、
NetSortだとかArsortだとか便利な関数が用意されてるみたいなので
データが増えたとき、お気に入り順でソートとか出来るかな〜と思って、そうゆう形で、入れたいと思っています
0867nobodyさん
04/05/14 13:43ID:???これをループで回せ。
$arr=explode(':',$buff[$cnt],2);
${$arr[0]}[]=$arr[1];
しかし....
0868nobodyさん
04/05/14 13:52ID:???0869nobodyさん
04/05/14 13:54ID:???while(($s = fgets($fp, 1024)) != NULL) {
list($var_name, $value) = explode(':', $s, 2);
${$var_name}[] = trim($value);
}
まぁ、あれだ。もとデータに他で使ってる変数名と
同じものが紛れた時に正しく動作せん罠
$input_data[$var_name][]
に放り込んだ方がええよ。
0870nobodyさん
04/05/14 14:09ID:???可変変数を使うときは、ほとんどの場合それ以前に問題があると思ったりするのだが。
0871nobodyさん
04/05/14 14:15ID:vu0WINSDありがとうございます!
これで、お気に入りなアニメのデータベース的なことができそうです
0872nobodyさん
04/05/14 14:18ID:???どうやって調べるんだ?
■ このスレッドは過去ログ倉庫に格納されています