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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/08/07(月) 13:11:50ID:???
PHPに関するくだらねぇ質問用スレです。ここならお前の下らない質問に回答があるかも知れません。

まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレは>>2-10 関連スレは>>4-10 FAQは>>6-10 辺り

◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
  (逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
  (荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0611nobodyさん2006/08/17(木) 16:18:16ID:???
>>608
それはできません
浮動小数点の誤差というのは
echo floor((0.1+0.7)*10);
が8ではなく7になるという現象
0612nobodyさん2006/08/17(木) 16:19:52ID:???
>>610
あのソースをコピーしてメモ帳とかのエディタに貼り付けて、
test.phpっていう名前で保存して、
サーバにアップロードして、test.phpにアクセスすればOK。
もちろんPHPが使えるサーバじゃないとだめ。
っていうかこのソースパースエラー出るよ。
0613nobodyさん2006/08/17(木) 16:31:54ID:FtiwPZNr
・・・やってみたんですが変になります。。。
パーミッションとかいじりますか??
0614PJP2006/08/17(木) 16:38:31ID:Ex5q979l
$logfile='1.log';
$lines = file($logfile);
$countline=count($lines);
これで$countlineが常に1になってしまいます。

データは以下のように保存しています。
$logdata='テスト';
$fp = fopen ($logfile, "w");
fputs ($fp, $logdata);
for($i = 0; $i < $countline; $i++)
fputs ($fp, $lines[$i]);
fclose ($fp);
1.logのファイルの中にはテストが溜まっていってるのですがcount()がいつも1を返します。
ご教授いただければ幸いです。
0615nobodyさん2006/08/17(木) 16:41:46ID:???
>>613
どう変なのか書かないと状況もなんもわからんのだが
0616nobodyさん2006/08/17(木) 16:55:03ID:FtiwPZNr
>>612さんがやり方で、
http://www.uploda.org/uporg481980.jpg.html
このようになりました。
0617nobodyさん2006/08/17(木) 17:00:23ID:???
>>616
拡張子はhtmlじゃなくてちゃんとphpにした?
あとサーバにphpが入ってないと使えないよ。
0618nobodyさん2006/08/17(木) 17:02:50ID:FtiwPZNr
はい。phpになってます。
infoseekの無料の奴なんですけど大丈夫ですか??
0619nobodyさん2006/08/17(木) 17:13:49ID:???
やれやれ
0620nobodyさん2006/08/17(木) 17:16:27ID:???
>>618
infoseekじゃPHPは使えないからJavaScriptかPerlで書くしかない。
0621nobodyさん2006/08/17(木) 17:16:35ID:???
これが噂に聞く夏厨か?
0622nobodyさん2006/08/17(木) 17:19:44ID:???
んもー、回答者だって酷いくらい「適当に」書いてあるんだよ。
それでも動くと言えば動くかも知れないが、実用性ゼロ。

しかも質問者も基礎の基礎をすっとばして……
なんでそんな他力本願なの?
06236142006/08/17(木) 17:21:22ID:Ex5q979l
count()がいつも1を返します。データはlogを開けると10回書き込みしたら10回分
テスト,テスト,テスト,・・・と10回分のデータが記憶されています。
これをfile()で呼び出しその要素をcount()で数えたら9もしくは10あたりを返すのじゃないのですか?
いつもいくら書き込んでも要素数1を返します。
0624nobodyさん2006/08/17(木) 17:24:17ID:???
>>614
$logdataを書き込むとき最後に改行も書き込む
ファイルオープンは"w"より"wt"がベター
06256142006/08/17(木) 17:27:01ID:Ex5q979l
改行とは\nですか?
0626nobodyさん2006/08/17(木) 17:30:01ID:???
>>625
そうだよ
"wt"とテキストモードで開けばWindowsなら自動的に\r\nに変換して書き込まれる
読み込みも\r\nが\nに変換されて読み込まれる
Linuxではテキストモードもバイナリモードも関係ないからそのまま無変換で\nのまま読み書きされる
0627nobodyさん2006/08/17(木) 17:32:56ID:???
わからないうちはwで\nつけた方がいいかもね。まだいらない知識とみた。
0628nobodyさん2006/08/17(木) 17:34:33ID:???
>>623の内容からするとfile()の動作を誤解してるんじゃないかと思うんだが
0629nobodyさん2006/08/17(木) 17:37:16ID:fBR2tTe/
質問です
動的なページで、そのページのURLを取得する関数ってありますか?
06306142006/08/17(木) 17:42:46ID:Ex5q979l
\nつけても要素増えませんでした。
file()って配列を返すんじゃないんですか?
0631nobodyさん2006/08/17(木) 17:44:20ID:???
$_SERVER['PHP_SELF'];
06326142006/08/17(木) 17:52:37ID:Ex5q979l
\nで解決しました。ありがとうございました。
0633ABCオロチ”管理”人2006/08/17(木) 18:01:23ID:???
あなたがたが、しばらく前にうちの、掲示板を晒したので厨房だらけに、なってしまいました。
どうにか、してもらえませんか?
http://www.abcoroti.com/~rent/rspace/bbs3/wwwlng.cgi
0634nobodyさん2006/08/17(木) 18:03:05ID:fBR2tTe/
>>631
$_SERVER['PHP_SELF'];
でやってみました。

たとえば
aaa.php?key=%EF%BC%92%E3%81%A1%E3%82%83%E3%82%93%E3%81%AD%E3%82%8B

だと
aaa.php
までしか取れないのですが
全部取得できる方法無いですか
0635nobodyさん2006/08/17(木) 18:06:16ID:???
マニュアルを読まない奴はだいっきらいだ
0636nobodyさん2006/08/17(木) 18:06:37ID:???
>>633
なんか見るからに穴だらけだし、
管理しきれないなら閉鎖すればいいじゃん。
わざわざここに来られてもどうにかできるもんじゃないしスレ違い。
荒らしたやつのIP調べて該当プロバイダに出せばいい。
06376342006/08/17(木) 18:15:20ID:fBR2tTe/
早く教えろ!!!
0638nobodyさん2006/08/17(木) 18:18:39ID:???
phpinfo() でも読んで、どうすれば全体取れるか考えろよ
0639nobodyさん2006/08/17(木) 18:25:24ID:???
いい回答が返ってこなくて質問者が荒らしになる瞬間
0640軟式PHP2006/08/17(木) 18:30:49ID:???
>>635
ゲドネタわろたw

>>634
落ち着け。638がいうようにphpinfo()を実行して凝視すれば答えがある。
06416342006/08/17(木) 18:42:14ID:DaHzwuB7
出来た!!! ありがとぅぅぅぅぅう
06426342006/08/17(木) 21:31:43ID:???
うぅぅ、やっぱり出来ませんでした><
06436342006/08/17(木) 21:49:08ID:???
なぁぁぁんだ、簡単ジャンっっ!!!
0644nobodyさん2006/08/17(木) 22:34:25ID:???
とりあえず>>634は氏ねばいいのに。
0645nobodyさん2006/08/17(木) 23:16:19ID:???
>>644
スルーしろ。
0646nobodyさん2006/08/17(木) 23:36:48ID:???
>>633
晒したのはここの住人じゃなくて「拓海」とかいうガキ

晒されたらすぐ荒らされるようなサイト運営に問題があるとしか思えないな
0647nobodyさん2006/08/18(金) 01:51:06ID:jkLvf1gx
>>621
夏だなぁ厨  【なつだなぁちゅう】

夏に暴れる人を放置ができず、とにかく「夏だなぁ」と言い出し、
それによってなぜか相手より優位に立ってると思い、
荒れの元となりスレ住民全体に迷惑をかける存在。

【特徴】
・とにかく文中に「夏だなぁ」を入れないと気がすまない
・スレの流れや空気を読めず、反応してしまう
・普通のスレ住人は夏厨を放置しているのに自分だけが過剰に反応してしまう
・夏厨に反応している時点で夏厨と同類であることに気づいていない
0648nobodyさん2006/08/18(金) 01:57:56ID:???
>>647
亀レスでどうでもいいこと書くな
0649nobodyさん2006/08/18(金) 02:05:28ID:???
>>633
厨房の巣窟になっとるがな。成り済ましOKのヘボイ掲示板使ってるからだよ。
0650nobodyさん2006/08/18(金) 02:33:34ID:???
$Serial= $this->session->get('UserSerial')

Ethnaで上記のような書き方でセッションに入ってるシリアルをとったりしてるんですが
この「session」っていうのは変数?定数?関数?のどれになるんでしょうか?
0651nobodyさん2006/08/18(金) 02:40:42ID:???
変数
0652nobodyさん2006/08/18(金) 02:43:52ID:???
>>651
レスどうもです
$ありの変数とどう違うんでしょうか?
0653nobodyさん2006/08/18(金) 02:50:55ID:???
オブジェクトの中でユーザ定義した変数かそうでないかの違い
0654nobodyさん2006/08/18(金) 04:51:53ID:???
>>653
ありがとうございました!
0655nobodyさん2006/08/18(金) 08:13:53ID:???
&$hoge
みたいに、変数の前に&がついてるのってどういう意味?
0656nobodyさん2006/08/18(金) 08:32:15ID:???
リファレンス。
0657nobodyさん2006/08/18(金) 08:33:43ID:???
>>656
参照渡しってこと?
0658nobodyさん2006/08/18(金) 09:13:23ID:???
>>657
ぃ〜ぇ、違ぃます。
0659nobodyさん2006/08/18(金) 09:25:38ID:???
>>658
嫁ってこと?&とかで検索できないんだけど
0660nobodyさん2006/08/18(金) 09:34:23ID:???
http://jp.php.net/manual/ja/language.references.php
0661nobodyさん2006/08/18(金) 09:51:58ID:???
「リファレンス」とわざわざ書いてあるのに記号で検索ですか
0662nobodyさん2006/08/18(金) 10:18:57ID:???
リファレンス本を読め、という勘違いでしょう。
正しくは「リファレンス本でリファレンスの章を読め」
0663nobodyさん2006/08/18(金) 11:15:26ID:/SUvBA3A
YahooやInfoseekの会員登録画面を作りたいのですが
(参考:https://register.www.infoseek.co.jp/RegistConfirm.html
入力エラーの表示がすごく気に入っています
ページ構成方法もさることながら、エラー制御方法で悩んでいます

1)ID、Password、個人情報入力
 ↓
2)登録ボタン
 ↓
3)別htmlに、エラー表示が追加されている(1)のページを表示
 ↓
4)エラーなくなるまで繰り返し
 ↓
5)登録完了

どんな制御方法がいいのでしょうか
また参考になるサイトあればおながいしまつ
0664nobodyさん2006/08/18(金) 11:19:25ID:???
フィッシングでつか?
0665nobodyさん2006/08/18(金) 11:24:32ID:/SUvBA3A
>>664
そんなことはしません
データ登録システムのフロント部分で参考にしたかったのです
0666nobodyさん2006/08/18(金) 11:32:32ID:???
>>665
制御というか、こんなのは関数や構文の問題ではない。
お前にはプログラムは無理だ。あきらめろ。
0667nobodyさん2006/08/18(金) 11:38:27ID:/SUvBA3A
>>666
俺もそう思ったんだけどさ、実際に書こうとすると難しいのよ
クマっている
0668nobodyさん2006/08/18(金) 11:41:27ID:???
クマってるってなに?
ふざけてるの?
06696662006/08/18(金) 11:42:40ID:???
>>667
最初に、POST内容のエラーチェックをして、
エラーがあるならその内容を上部にまず表示
(strErrorMessage等に書き溜めておいて、後でHTMLを書き出すときに該当箇所に書き出す)
そしてエラーがない項目をフォームにセットしたHTMLを書き出せばいいじゃないか。
0670nobodyさん2006/08/18(金) 11:45:24ID:???
1.初期処理
2.POST内容のエラーチェック
3.エラーがあるなら、エラー内容を表示した登録画面を書き出し終了。
4.エラーがないなら、登録処理(もしくは一旦確認画面を表示するか)
0671nobodyさん2006/08/18(金) 11:48:34ID:/SUvBA3A
>>669
いや、そこは問題ない
俺の質問が漠然としすぎたのが問題だった

・入力するテキストフォームの"すぐ下"に「文字数がオーバーしています」と
エラー表示させ、テキストフォームは空白(クリア)

・エラーでないテキストフォームは、入力済みになっている


JavaScriptを使うのはできるだけ回避したい(ブラウザ面倒だから)

0672nobodyさん2006/08/18(金) 11:53:44ID:???
>>671
それはいい仕様だと思うが、669が問題なくて、なぜそれができないんだ?
0673nobodyさん2006/08/18(金) 11:57:40ID:???
>>671
その通りの事をプログラムでするだけ…。
入力された値を、エラーのものは消す、エラーでないものは復帰させる。
エラーのものはエラーメッセージを表示する。
そんだけ。
0674nobodyさん2006/08/18(金) 11:59:22ID:???
if (strlen($message) > MAX_LEN){
 echo "<input type=text name=message value=\"\" maxlength=".MAX_LEN."><br>\n";
 echo "<font color=red>文字数がオーバーしています</font><br>\n";
} else {
 echo "<input type=text name=message value=\"".$message."\" maxlength=".MAX_LEN."><br>\n";
}

エラー含有前提だが、こんな感じではだめなのか?
0675nobodyさん2006/08/18(金) 12:02:21ID:???
最近のフレームワークなら一瞬でできそうな処理だな
0676nobodyさん2006/08/18(金) 12:05:16ID:/SUvBA3A
みんなサンクス
だが、そんなところは問題ないんだw

って、俺、整理つかん
俺のソース見ると無限ループおこしている

一度、吊って頭冷やしてみる
0677nobodyさん2006/08/18(金) 12:06:37ID:???
DBに保存されてるテキスト(たとえば日記とか)を
表示させるときに、通常はhtmlspecialcharでエスケープしてます。

でも、一部の特殊文字(ハートなど)だけはエスケープせずに表示したいのですが、
これを実現するにはhtmlspecialcharをかけた後に、目的の特殊文字のコードだけを
エスケープ前の状態に再変換するような関数を自作しておくしかないでしょうか?
0678nobodyさん2006/08/18(金) 12:07:14ID:???
お前、頭悪すぎだそりゃw
0679nobodyさん2006/08/18(金) 12:08:37ID:???
あ、頭悪いのは>>676
0680nobodyさん2006/08/18(金) 12:21:17ID:???
>>677
preg_replaceなんかを使って置換していくのがベストだと思うぞ
0681nobodyさん2006/08/18(金) 12:47:27ID:/SUvBA3A
>>678
すまんな。もう頭おかしくなっている
オシムと直志のせいで頭が整理つかん
ちと、仮のやつをこしらえてURLさらすんで暇になったら教えてくださいな
06826772006/08/18(金) 12:53:11ID:???
>>680
やはりそうですか。。。

地道に正規表現や置換関数などを使って、
任意の特殊文字だけをエスケープ前の状態に戻す関数を作ろうと思います。
0683nobodyさん2006/08/18(金) 13:01:04ID:???
入力値チェックで数字のみを使いたいのですが、
preg_match("/^[0-9]/", $hoge)でやった場合、
123gggなんかも123として扱ってしまいます。
どうかいたらいいのでしょうか?
0684nobodyさん2006/08/18(金) 13:08:17ID:???
>>682
そのくらいは地道とはいえんぞ
0685nobodyさん2006/08/18(金) 13:41:12ID:???
>>684
いやぁ、特殊文字が一つや二つだけなら簡単ですけど、
全てに対応しようと思うと億劫ですよね。。。
0686nobodyさん2006/08/18(金) 13:41:51ID:???
納期間にあわなxふじk><
たすけtれwn
0687nobodyさん2006/08/18(金) 14:08:11ID:???
ちょっとこいつを見てくれ
"一"と"龠"はもちろんいけるが
"募"とか"集"とか漢字を判定できないんだ
どう思う?

  if(ereg("[一-龠]",$name)){
    echo "漢字だよ";
    exit;
  }else{
    echo "漢字じゃないよ";
    exit;
  }
0688nobodyさん2006/08/18(金) 14:19:06ID:???
>>687
マルチバイトだからな。
0689nobodyさん2006/08/18(金) 14:19:37ID:???
>>683
その程度なら、正規表現よりもis_int() とか is_numeric()使った方が良いと思う
0690nobodyさん2006/08/18(金) 14:22:42ID:???
>>688
でもmb_eregにしても反応しないんだ
どう思う?
0691nobodyさん2006/08/18(金) 14:23:22ID:xIt7iz8d
他のページ(NOT管理下)を取得して、そのページにある好きな文字列を自分が管理するページに表示したいのですが、
詳細が乗っているサイト若しくはやり方を教えて下さい
言語はperlのみ使えます
0692nobodyさん2006/08/18(金) 14:23:33ID:???
>>690
お前がバカだからだろ
0693nobodyさん2006/08/18(金) 14:28:22ID:???
>>691
フィッシングですか
0694nobodyさん2006/08/18(金) 14:28:31ID:???
>>692
納得した、ありがとう
0695nobodyさん2006/08/18(金) 14:30:57ID:xIt7iz8d
>>693
え?w
違いますよ
翻訳サイトでページ翻訳ってあるじゃないですか
ああいうことがしたいんです
0696nobodyさん2006/08/18(金) 14:34:03ID:???
>>691
ここ、PHPスレ
0697nobodyさん2006/08/18(金) 14:36:16ID:???
>>691
webサイト制作初心者板にいたやつだな。
なんでPHPのスレでPerlの質問をするんだハゲ。
0698nobodyさん2006/08/18(金) 14:38:02ID:xIt7iz8d
>>696-697
すいません、「下らねぇ質問はここに書き込みやがれ」しか見てませんでした^^;
0699nobodyさん2006/08/18(金) 14:39:31ID:???
>>698
http://beginners.atompro.net/htm/smpcgi/webpsrc.shtml
ほれ
これでわからないならあきらめろ
0700nobodyさん2006/08/18(金) 14:44:51ID:???
>>683
年齢とか、個数とかの数値であれば、
$hoge = $hoge + 0;
とやって、強制的に数値にしてやるといい。
0701nobodyさん2006/08/18(金) 14:45:02ID:???
相対パス指定がうまくいきません。

main.php
  require "hoge/Calc.php"

hoge/Calc.php
  require "lib.php"

hoge/lib.php

hoge/test.php
  require "Calc.php"


hoge/フォルダ以下でひとつのシステムを作っています。動作確認のために
hoge/test.php からCalc.phpを呼び出して利用した場合は動くのですが、
トップのmain.phpから相対パスで呼び出そうとすると、lib.phpの場所が
問題となって動きません。
実際にはhoge/Calc.phpはmain.phpだけではなく、いろんなフォルダのいろんな
ファイルから呼び出されるのですが、どうパス指定してやればいいのでしょうか?
0702nobodyさん2006/08/18(金) 14:45:24ID:???
>>699
関係ないスレで質問したのにわざわざ答えてくれて本当にありがとうございます
そのページを参考にして頑張ってみたいと思います
では失礼いたしました
0703nobodyさん2006/08/18(金) 14:47:50ID:???
>>701
なるほど main.phpからみるとlibは同一フォルダでないからな。

絶対パスにしてはいけないの?
0704nobodyさん2006/08/18(金) 15:03:16ID:???
>>701
include_pathに/hogeを追加してやれば
どのファイルからでも/hogeからの相対パスで
/hoge内のファイルをロードできる
0705nobodyさん2006/08/18(金) 15:05:01ID:???
ユーザー入力されたテキストのうち、
URL部分だけをハイパーリンクにするにはどうしたらいいですか?

いま考え付く方法は、
「httpから始まる文字列を、全角文字が現れるまで正規表現で抽出」
そしてその文字列にリンクを張る・・・という感じですが、
もっと良い実装方法などありますでしょうか?
専用の関数があると便利なのですが。
0706nobodyさん2006/08/18(金) 15:12:05ID:???
そのへんの掲示板のサンプルソース読めばパターンいっぱいあるだろうに。
0707nobodyさん2006/08/18(金) 15:14:56ID:???
そもそも「正規表現」で検索すればみつかるんじゃないの?
07087012006/08/18(金) 15:16:39ID:???
>>703-704
ありがとうございます。include_pathのほうはいじる権限持ってないので、
絶対パスでなんとかしてみます。
0709nobodyさん2006/08/18(金) 15:18:39ID:???
>>705
ttp://www.din.or.jp/~ohzaki/perl.htm
Perlでの例だが、正規表現は同じだ。
0710nobodyさん2006/08/18(金) 15:21:40ID:???
>>708
ini_setでソースから変えられるよ
ini_set('include_path', $path);
0711nobodyさん2006/08/18(金) 15:24:29ID:Whin3OBF
mkdir関数で新しくディレクトリを作ろうとしているのですが
Warning: mkdir() [function.mkdir]: Permission denied in
とerrorが出て作成できません。
PHPはこれです。
<?php
mkdir ("hoge", 0705);
?>
よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています