トップページ⇒php
1001コメント314KB

【PHP】くだらねぇ質問はここに書き込みやがれ

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/11/02 00:15:41ID:???
PHPに関するくだらない質問用すれです。
0102nobodyさん04/11/17 15:51:24ID:???
rh9_disp.phpの中で phpinfo()関数を呼び出すようにし、
your_nameなんてものが本当に渡されているのか確認する
01039804/11/17 16:09:47ID:???
>>102
ご指南ありがとうございます。
…
貴方は<b><?php print $_REQUEST["your_name"];?></b>さんですね?
<?php phpinfo(); ?>
…
としてみました。例の薄紫色の長い表が出ましたのでテキストフィールドに入れた名前(英数文字)をCtrl+Fで検索してみましたがありませんでした。

文法的にはyour_nameは取得されているなら、php本体が壊れているなどと考える必要があるでしょうか?

0104nobodyさん04/11/17 16:38:06ID:???
単純に渡してないだけでしょ?
0105nobodyさん04/11/17 16:56:29ID:???
your_nameに何も入力せずに送信してるってことかな。
その場合なら取得できなくてもおかしくないよね。
< htmlの仕様で言うところの満足なコントロールじゃないから。
01069804/11/17 17:34:03ID:???
>>104
>>105
う〜ん、そうなんですか、分からないです…。

テキストボックスがあってそこに名前を入力し、送信ボタンで「貴方は○○さんですね?」と帰ってくるようなモノなのですが、皆さんならどう書きますか?根本的にまちがっているのでしょうか…。そんなに難しいものなのでしょうか。


値を入力してそれを渡す、これが出来るようになればいいんですね。
人のソースを切り貼りしているうちにわけが分からなくなってしまいました_| ̄|○
0107nobodyさん04/11/17 17:57:29ID:???
>>106
<を<に直せば普通に動くと思うんだが
01089804/11/17 18:03:09ID:???
>>107
それはここにポストするために全角にしました。

やはり普通はうごくものなのですか。


こちらの環境でしょうか
0109nobodyさん04/11/17 18:13:53ID:???
>>107 お前は馬鹿か?

送信側でどうやってるか教えてくれればアドバイスしてもらえるかもよ
0110nobodyさん04/11/17 18:22:15ID:???
>>108
>>98-99コピペ、<を<に置換して確認してみた
おまいさんと同じ結果になった

ソースを見直してみた
formタグのNAME属性の前のスペースが全角だったので直してみた
ちゃんと動いた

念のために聞くけど、この全角スペースも投稿時に直しただけだよな?
011111004/11/17 18:26:40ID:???
ごめ。formタグじゃない、テキストフィールドのinputタグね
0112nobodyさん04/11/17 18:47:46ID:???
> それはここにポストするために全角にしました
01139804/11/17 19:08:29ID:???
>>110
おおおおおおおおお!!!
仰せの通りです。
検証までしていただいて感謝のしようもありません。
本当にありがとうございました!!

時刻表示のスクリプトが動き、喜びに震えているところに、このスクリプトの挫折で凹みまくっていました。
感謝であります。
0114nobodyさん04/11/17 19:08:42ID:???
勿論です。動かなかったのは勘違いでした。アハハハハ
0115nobodyさん04/11/17 19:09:01ID:???
煽りそこなったorz
0116nobodyさん04/11/17 19:32:48ID:???
>>113
ひとまず、全角スペースもちゃんと表示できるエディター使え。
0117nobodyさん04/11/17 19:35:48ID:???
文字化けしないでちゃんと表示されますよ(^^;
0118nobodyさん04/11/17 19:47:24ID:???
HTMLって構文間違っててもエラーとか吐かんから怖いよな
0119nobodyさん04/11/17 20:52:00ID:???
HTMLは言語とは言うものの、マークアップだしな。
01209804/11/17 21:07:25ID:???
>>116
全角スペースが色つきで表示されたりそういうのがあるといいのですけどね。
phpはエラーを教えてくれるとの事ですが、今回はそれ以前の話でした_| ̄|○

>>117
おお、正常にみれますか。お手数さまでした。ありがとうございます。

0121nobodyさん04/11/18 00:13:51ID:???
phpするならやっぱりリナックス勉強したほうがいいんですか?
0122nobodyさん04/11/18 00:16:56ID:???
何したいかによる。
0123nobodyさん04/11/18 01:03:21ID:???
むしろPHPを勉強しる!
0124nobodyさん04/11/18 10:25:38ID:???
>>116
ってか、エディタは何使ってるわけさ?
全角スペースってほとんどのテキストエディタでは
デフォルト設定で薄い□で表示されると思うが。

もしかしてnotepad.exe・・・。
0125nobodyさん04/11/18 10:29:33ID:???
>>124
edlin.exe
0126nobodyさん04/11/18 11:09:17ID:???
パーミッションの真ん中の数字って、
共有レン鯖の同居人に対してってことでいいんですか?
もしそうなら、「見られたくない.txt」ファイル(644)を置くと
同居人からはfopenされ、ファイルの中身を見られてしまうのでしょうか?
また、600にすれば同居人からも外部からも見られなくなるのでしょうか?
0127nobodyさん04/11/18 11:25:06ID:???
>>125
ある意味すごい。
0128nobodyさん04/11/18 13:47:29ID:U6GG0aJq
explode の逆のような関数ってありますか?

array('abc', 'def', 'ghi');

を

abc<>def<>ghi

のようにある文字列で結合したいんですけど。
0129nobodyさん04/11/18 13:49:21ID:U6GG0aJq
スンマセン事故解決。
implode()っ手のがありました。
0130nobodyさん04/11/18 13:49:44ID:???
>>128
あるよエイリアスを含めると2つもな。
マニュアルのexplodeのところを見れば載ってるだろ?
0131nobodyさん04/11/18 14:35:32ID:???
ワラタ
0132nobodyさん04/11/18 15:40:03ID:???
>>126
× 同居人
○ グループ
その他にディレクトリのパーミッションもあります。
PHPの話題じゃないから後は自分で調べてください。
0133nobodyさん04/11/18 17:10:32ID:???
phpにperlでいうマジカルインクリメントみたいなのは
ないのでしょうか?
013412604/11/18 18:06:51ID:???
>>132
レスありがとうございました。
自分で調べて↓を見つけ、なんとなくわかったようなわからないような...
ttp://www.e-provider.jp/server/cgi.html
0135nobodyさん04/11/19 22:34:25ID:???
>>127
endlinに反応するおまいさんはおじさんでつね。
0136nobodyさん04/11/20 13:10:13ID:eqMdSEYb
おばさんかもしれないよ。
0137nobodyさん04/11/20 22:36:36ID:z7WgdErj
スンマセン、質問です!

ビットシフトで24ビットの時に変な値になっちゃうのは何故?
以下のソースです…

function kansuu()
{
$hoge = array(111,222,333,444);
foreach ( $hoge as $nn)
{
$ad += $nn << $i;
$i += 8;
}
return( $ad );
}
で、何故か結果が
int(111) int(56943) int(21880431) int(-1118970257)
何で最後がマイナス?補数って奴デスカ??
ちなみに、 $nn << $i の部分だけでみても最後だけマイナスになってますた!
理由(出来れば解決方法も…)教えてエロい人っ!!
0138nobodyさん04/11/20 23:09:44ID:???
桁溢れ。
$ad += $nn << $i; の下に、
print base_convert($ad,10,16)." (".str_pad(base_convert($ad,10,2),32,'0',STR_PAD_LEFT).")\n";
を入れると、
6f (00000000000000000000000001101111)
de6f (00000000000000001101111001101111)
14dde6f (00000001010011011101111001101111)
42b22191 (01000010101100100010000110010001)
-1118970257
になる。
intが32bitの環境だと解決法は無い。
つーか最初から桁溢れ起こすの分かってるのに
なんでそんなことをしたいのか理解できない。
0139nobodyさん04/11/20 23:38:14ID:z7WgdErj
>>138
ぬりがとー☆
やっぱり溢れてんだ…
settype($nn,"float"); とかしてみたケド意味ないんだ…

ぶっちゃけ、IPのチェックがしたくて
127.0.0.0-127.0.255.255の範囲にいるかみたいな。
で、perlだとちゃんと出たんだけどPHPだと?だったワケです。

IPの範囲の判定ってエロい人はどーしてるの?

って他力本願な質問もココならOK…!? (´・ω・`)
0140nobodyさん04/11/21 14:11:47ID:???
サブネットマスクでANDとってネットワークアドレスとXOR 結果が0か否か
0141nobodyさん04/11/21 15:43:13ID:???
>>140
あぁ、ナルホド……

つまり、「初心者が背伸びするな」って事でつね(T∀T)

頑張って違う方法を考えてみます。
0142nobodyさん04/11/21 16:48:18ID:???
?>の直後の改行は削除されるようになってるけど、出力したい時はどうしよう。
php-5.0.2 cli
0143nobodyさん04/11/21 17:15:18ID:???
>>139
Perlでできるならそのまま使っとけ

>>142
手動で改行出力すれば済むだろ
014413904/11/21 17:50:26ID:???
>>143
PHPのスクリプトに組み込む予定なんで

PHPがイイ!(・∀・)〜♪
0145nobodyさん04/11/21 17:52:39ID:???
>>142
多分evalとかしてるんだろうが、ちーと難問だな
<?php ?>でパート切り分けしないで、echo '';につっこむしかないと思う
エスケープを忘れずに

>>143
改行がない場合との処理分けが無駄だから廃案
0146nobodyさん04/11/21 17:58:04ID:???
$str = preg_replace("/\[color=(\S+?)\](.*?)\[\/color\]/si",
"<span color=\"\\1\">\\2</span>",$str);

こういう正規表現で二重引用符内で「\\1」とかしてるのって
一重引用府内では「\1」でいいんです?
0147nobodyさん04/11/21 18:04:35ID:???
まあ構わんよ。
0148nobodyさん04/11/21 18:07:32ID:???
>>145
無駄ってレベルじゃないだろ。
PHPブロック外の改行を取得するなんて馬鹿な真似は止めるべき。
0149nobodyさん04/11/21 18:17:17ID:???
>>147
thx
0150nobodyさん04/11/21 18:54:43ID:???
    /\        /\
    /:::::::ヽ____/::::::::ヽ、
   丿 ::.__  .:::::::::::::  __  ::::ヽ_       ,. 、       /   /
  / /。 ヽ_ヽv /: /。ヽ  ::::::ヽ    ,.〃´ヾ.、  /  / ああ添字配列のインデクスを
 / / ̄ ̄√___丶  ̄ ̄\  ::::| / |l     ',  / /  0から振りなおせたらなあ!!
 | .:::::::::: / / tーーー|ヽ     ..::::: ::|r'´  ||--‐r、 ',     値は操作せずにインデクスだけ
 | .:::::.  ..: |    |ヽ   .,..ィ'´     l',  '.j '.      変更できないかなあ!!
 | :::    | |⊂ニヽ| |  'r '´         ',.r '´ !|  \  どうなのかなあ!!
 | :    | |  |:::T::::| !  l!     ....:.:.:.:.:.:ヽ、   ,l    \ 
 \:    ト--^^^^^┤   ゝ、.,_ ---‐‐‐----ゝ、ノ

0151nobodyさん04/11/21 18:58:35ID:???
>>150
無理。array_mapで大回転させるしかない。
0152nobodyさん04/11/21 21:09:41ID:???
>>150
絶対分かってて言ってるだろ、おまいw
0153nobodyさん04/11/21 21:14:42ID:???
>>146
$1が好ましいけどな。
0154nobodyさん04/11/21 21:53:17ID:???
>>153
そうなんですか。そうしてみます。
コレって、なるべく二重引用符を使ったほうがいい。とかあるんですか?
0155nobodyさん04/11/21 22:06:22ID:???
読みやすいほうを使う。

'<span color="\1">\2</span>'

http://jp.php.net/manual/ja/language.types.string.php#language.types.string.syntax.single
http://jp.php.net/manual/ja/language.types.string.php#language.types.string.parsing
0156nobodyさん04/11/21 22:38:29ID:???
>>155
どうもです。

$str = preg_replace("/\[color=(\S+?)\](.*?)\[\/color\]/si",
'<span color="$1">$2</span>',$str);

と、書くことにします。ありがとうございました。
マニュアルとかのサンプルをみてもっと勉強してきます。
0157nobodyさん04/11/22 17:07:17ID:???
本スレのほうが逝ってしまったわけだが。
誰か次建てない?
洩れは無理。
0158nobodyさん04/11/22 17:16:41ID:WuFGabj+
logfileに

1 12:00($start),12:15($end)
2 12:15($start),12:45($end)

と言う感じで開始時間と終了時間が入っているんですが、
line1とline2の時間差(この場合1の持ち時間)を計算で出すにはどうしたら良いですか?
そのまま$end - $startでやったらできませんでした。
0159nobodyさん04/11/22 17:22:42ID:???
>>158
日を超えないって条件をつけてもいいなら
(12*60+15)-(12*60+0)のように自力で計算してもいいんでないの?
日付を考慮するなら(そのlogfileの書式では無さそうだけど)
mktimeとかを使ってUnixタイムスタンプに変更してから引き算するとか。
016015804/11/22 17:35:50ID:???
>>159
1日のタイムテーブルなので(12*60+15)-(12*60+0)でできました!
どうもありがとうございました。

0161nobodyさん04/11/22 20:51:14ID:fKkOMcrQ
$messageにある$AAAを含むURLを$BBBへ変換したいのですが

$AAA = "aaa.com"; // 変更したいURLの一部
$BBB = "http://xxx.yyy.zzz/"; // 自前のトップページへのURL

$SEIKI1 = "(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)"; // 正規表現1
$SEIKI2 = "([[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)"; // 正規表現2

$message = eregi_replace("$SEIKI1"."$AAA","$BBB",$message); // 後部/がない場合 http://www.aaa.com
$message = eregi_replace("$SEIKI1"."$AAA"."$SEIKI2","$BBB",$message); // 後部/が続く場合 http://www.aaa.com/〜
$message = eregi_replace("$SEIKI1","<a href=\"\\1\\2\" target=\"_blank\">LINK</a>",$message); //自動リンク

一つのURLでは対応出来たのですが
$AAA 入れたいURLが複数ある場合(aaa.comや、bbb.net ccc.org等です)
全てに適応させるにはどうすればよいか助言下さい。
0162nobodyさん04/11/22 22:06:56ID:???
>>161
バーチカルラインで繋げばいいじゃない
$sites = '(?:aaa\.com|bbb\.net|ccc\.org)';
0163nobodyさん04/11/22 22:17:20ID:???
逆に聞くけどposixのregexライブラリってキャラクタクラスのなかでもエスケープせにゃならんのか?
0164nobodyさん04/11/22 23:01:52ID:i4ElPupu
$AAA = "aaa.com|bbb.net|ccc.org";

これでいけました が、次は正規表現の部分もおかしかったみたい
スマートに入れ替えるのはないかな、、


0165nobodyさん04/11/22 23:55:51ID:???
>>163
分かってるんだと思うが、んなこたーない。
0166nobodyさん04/11/23 00:55:51ID:kHwx1zAl
やはり出来ないようだ、、、
0167nobodyさん04/11/24 13:50:59ID:B8VC6+a2
質問させてください。
PHPの練習でクッキーを作成してみようと思い
以下のようなコードを書いたのですが、クッキーが出来ません。。。
ブラウザはIEで、保存場所の
C:\Documents and Settings\ID\Local Settings\Temporary Internet Files
を何度も確認したんですが、まったく作成されません。
もちろんブラウザのクッキーもONにしているのですが。

ソース
<?php setcookie("name", "data"); ?>
0168nobodyさん04/11/24 14:27:55ID:???
>>167
有効期限入れないとIEじゃ確認できないよ
値そのものは入ってると思うよ
それと有効期限設定しないで確認したかったらネスケにしてみ
016916704/11/24 14:40:07ID:B8VC6+a2
>>168
レスありがとうございます!

時間指定の事を指摘されましたので
今度は以下の様なコードを実行してみたのですが
やはりクッキーは作成されません。。。
<?php setcookie("name", "data", 60 * 60); ?>

もちろんこれも確認できません。。。
<?php print $_COOKIE['name']; ?>
0170nobodyさん04/11/24 14:55:37ID:???
cookieのテストの一般的な方法としては、
1.適当なcookieを喰わせてみる
2.cookieの値を取得する
の2段階が必要。
以下適当なサンプル

<?php
if(empty($_GET['check'])) {
/* cookieを発行しこのページにリダイレクト */
setcookie("test", date("YmdHis"));
header("Location: " . getenv("PHP_SELF") . "?check=1");
exit();
} else {
/* cookieの確認 */
if (empty($_COOKIE['test'])) {
echo "cookieがセットされてないよ。";
} else {
echo "cookieの値は=" .$_COOKIE['test'];
}
exit();
}
?>
017116704/11/24 15:36:50ID:???
>>170
サンプルコードどうも!

そのコードを実行させて頂いた所、問題なく値が取得できてましたので
自分のコードをよく見直してみたら。。。

setcookie("name", "data", 60 * 60);
             ~~~~~~~
うぉおおおおおおおおおおおおお!!!
思いっきり time() が抜けてました!!

time()をいれて実行すると見事にクッキーが作成されました。
まったくお騒がせしました。
サンプルコードまで書いて頂き、本当にありがとうございました!!
0172nobodyさん04/11/25 11:18:41ID:50OS9jax
http://www.komonet.ne.jp/~php/program/chap3.htm

ここの掲示板なんですけど
if($pline == "")
 $p_line = 0;
else
 $p_line = $pline;
$end_data = $msg_count - 1;
$page_end = $p_line + ($page_view - 1);
if($page_end >= $end_data)
 $page_end = $end_data;
for($i = $p_line; $i <= $page_end; $i++){
 list($code2,$name2,$email2,$subject2,$comment2,$now2) = split( ",", $message[$i]);
の部分がいまいち理解できないんです。
次のページに跳ぶ為のフォームのところって言うのはわかるんですけど
これを参考に作ってるんですけどなかなかうまくいかなくて・・・
適当でも構わないので説明してもらえませんか??
0173nobodyさん04/11/25 11:29:25ID:???
>>172
そこで使ってる変数ひとつひとつ、何を示してるかリスト化してみな。
処理はforの中のlist()=split()以外はページングの処理だけど、
変数の意味が判れば難しくない。
017417204/11/25 11:41:25ID:???
自己解決しました。板汚しすまん
0175nobodyさん04/11/25 13:33:41ID:yWKV+q9s
PHPのオブジェクト指向を解説してるサイトありませんか?

ググッてみたんですけど見つかったのは
現実世界の変な例えを用いてるサイトばかりで混乱してしまいました

抽象的な説明ではなくコーディングベースでどう書いたら良いか説明しているサイトとか書籍って無いですか?
0176nobodyさん04/11/25 14:55:12ID:???
>>175
日本語だと「Do You PHP?」ってサイトとか。
英語だとZendのところを筆頭に、色々と。
書籍は知らない。
0177nobodyさん04/11/25 15:15:58ID:???
>>175
遠回りだけども、まずはオブジェクト指向をちゃんと勉強した方がいいと思う。

じゃないと、俺みたいに
「クラス使ってるけどただの構造化プログラミング」
という状態になる。
0178nobodyさん04/11/25 19:12:23ID:???
>>177

>「クラス使ってるけどただの構造化プログラミング」

俺のことだ orz
でも、これもこれで便利だったりするんだけどね。
0179nobodyさん04/11/25 19:41:40ID:???
オブジェクト指向なんて構造化の延長なんだから
0180nobodyさん04/11/25 23:11:46ID:???
乗算とか除算とか、楽な範囲ならシフト演算使ったほうが負荷軽減に繋がりますか?
0181nobodyさん04/11/26 02:36:17ID:???
有意かどうか、試せばすぐに分かる。
0182nobodyさん04/11/26 02:38:22ID:???
>>175
「PHPの」っていうからには「他の言語の」OOと違うことを求めてるんだろうけど、一体何だろう。
いままでプロトタイプベースのOOPばかりやってきたとか?
0183nobodyさん04/11/26 02:55:35ID:???
言語仕様としてクラスがないと分かりにくいよね
phpには、「phpのオブジェクト指向」っていうほど奇抜な部分はないんじゃない
特徴と言えばオブジェクトの粒度が巨大ってことかな

コーディングに関してはzendの説明が全てで、これ以上はなんもありません
以下はずいぶん昔よく参考にされてたサイト
http://www.phppatterns.com/
0184nobodyさん04/11/26 03:11:17ID:???
昔と違って最近は解説サイトも流行らんからな
0185nobodyさん04/11/26 04:37:39ID:hasryHcK
インターネットに接続しているかどうかを判別する
シンプルかつ確実な方法を教えてください
0186nobodyさん04/11/26 04:51:58ID:yOcL1Cw3
池沼現る
0187nobodyさん04/11/26 04:55:04ID:???
>186
透明人間現るっていうのは、透明なのに現るっていうとこがミソなのに
0188nobodyさん04/11/26 05:13:43ID:???
そこへなぜかOreilly現る
0189nobodyさん04/11/27 11:25:49ID:???
PHPの初歩を勉強しているものです。
本を読みながら勉強しているのですが、
以下のような、if文はどういう意味となるのでしょうか?

if ($fp){
   処理文・・・
   処理文・・・
}

$fp は、ファイルポインタなのですが、ファイルポインタを開いてる
時だけ、処理を行うって事で良いんでしょうか?
0190nobodyさん04/11/27 11:52:37ID:???
その通り。
if ($hoge) { }
は、Trueの時。
if (!$hoge) { }
は、Falseの時。
マニュアル読んだほうがいいかと思われ。
0191nobodyさん04/11/27 11:57:04ID:???
>>189
その$fpを作成している行で使用されている関数をマニュアルでひいてみ。
そして戻り値の型が何かを見れば分かると思うよ。
0192nobodyさん04/11/27 14:35:41ID:???
>>190-191
ありがとう!
0193nobodyさん04/11/27 17:35:24ID:???
resource fopen ( string filename, string mode [, int use_include_path [, resource zcontext]])
                                              ↑

リソース型ってようするにIntじゃないの?
0194nobodyさん04/11/27 22:43:37ID:???
>>193
リソース型はリソース型だと思う。
0195nobodyさん04/11/27 22:58:20ID:???
>>193
http://www.php.net/manual/ja/language.types.resource.php
http://www.php.net/manual/ja/function.is-resource.php
0196nobodyさん04/11/28 00:14:49ID:EgpgTC8f
質問なのですが、自分が契約しているレンサバの
Unixコマンドのパスが分かれば、PHPスクリプトから
Unixコマンドの実行も可能でしょうか?
nslookupを呼び出したプログラムを作りたいです。
0197nobodyさん04/11/28 00:23:26ID:???
>>196
やってみればすぐ分かるのに。
実行制限される要因はいくつもあるので試してみないと分かりませんよ。
checkdnsrr関数なんてのもあるけど、これも使えないようになってる場合もありますし。
0198nobodyさん04/11/28 00:38:30ID:???
>>197
制限されていなければ、使える可能性があるって事ですね。
気軽に試すスキルがあれば良いんですが・・・・。
レスサンクスです。
0199nobodyさん04/11/28 03:28:20ID:C3uMPLGO
test.cgiに
#! /usr/bin/perl
print "test";
exit;

hoge.shtmlに
<!--#exec cmd="./test.cgi" -->
と書くと期待通りにtestと表示されます。

<!--#exec cmd="./test.cgi" -->
と書くと何も表示されません。

<!--#exec cmd="./test.cgi">
や
<!--#exec cgi="./test.cgi">
と書くと[an error occurred while processing this directive]と表示されます。

この違いはどうして起こるのでしょうか?
#exec cgiを使いたいのですが、何が原因か解らず困っています。
何かアドバイスをお願いします。
0200nobodyさん04/11/28 05:14:04ID:???
>>199
スレタイ嫁
0201nobodyさん04/11/28 05:25:35ID:???
>>193
そうだよ
■ このスレッドは過去ログ倉庫に格納されています