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

このエントリーをはてなブックマークに追加
1nobodyさん
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。

まず読め【PHP マニュアル】
http://www.php.net/manual/ja/

本スレ【PHP】質問スレッドpart34【php】
http://pc8.2ch.net/test/read.cgi/php/1142903954/

【PHP】下らねぇ質問はここに書き込みやがれ Part19
http://pc8.2ch.net/test/read.cgi/php/1144513878/

過去スレは>>2-3あたり
2nobodyさん:2006/04/28(金) 04:13:11 ID:ICV8N6RN
・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
【PHP】くだらねぇ質問はここに書き込みやがれpart8
http://pc8.2ch.net/test/read.cgi/php/1123431535/
【PHP】くだらねぇ質問はここに書き込みやがれpart9
http://pc8.2ch.net/test/read.cgi/php/1125716012/
3nobodyさん:2006/04/28(金) 04:13:42 ID:ICV8N6RN
【PHP】下らねぇ質問はここに書き込みやがれpart10
http://pc8.2ch.net/test/read.cgi/php/1127581425/
【PHP】下らねぇ質問はここに書き込みやがれpart11
http://pc8.2ch.net/test/read.cgi/php/1129582431/
【PHP】下らねぇ質問はここに書き込みやがれpart12
http://pc8.2ch.net/test/read.cgi/php/1130835396/
【PHP】下らねぇ質問はここに書き込みやがれpart13
http://pc8.2ch.net/test/read.cgi/php/1132921016/
【PHP】下らねぇ質問はここに書き込みやがれpart14
http://pc8.2ch.net/test/read.cgi/php/1134868212/
【PHP】下らねぇ質問はここに書き込みやがれpart15
http://pc8.2ch.net/test/read.cgi/php/1137236771/
【PHP】下らねぇ質問はここに書き込みやがれpart16
http://pc8.2ch.net/test/read.cgi/php/1139146534/
【PHP】下らねぇ質問はここに書き込みやがれpart18
http://pc8.2ch.net/test/read.cgi/php/1142417901/
【PHP】下らねぇ質問はここに書き込みやがれ Part19
http://pc8.2ch.net/test/read.cgi/php/1144513878/
4nobodyさん:2006/04/28(金) 04:14:12 ID:ICV8N6RN
・part17よりテンプレ化

extractは極力使わないほうがいいと思います。
例えば、

hoge.php?_SESSION[user_pw]=hogehoge

って形で送られてきたとします。これを

extract($_GET)

しちゃうと、$_SESSION['user_pw']の値が、
"hogehoge"に変更されてしまいます。

もし事前にユーザのパスワードを、$_SESSION['user_pw']に
保持してたとしたら、勝手に書き換えられてしまうことになります。

それを避けるために

extract($_GET, EXTR_SKIP)

ってやって上書きを避けたとしても、
このままでは変数の初期化を忘れる危険性があります。

extract($_GET, EXTR_PREFIX_ALL, "get")

と、接頭辞をつけるのが一番安全な気はしますが、
それなら最初から
$hoge = $_GET['hoge'];
ってやるのと手間が変わらないと思いますし、可読性も増します。
確かにextractするのは楽だと思いますけど。
5nobodyさん:2006/04/28(金) 04:31:15 ID:???
取得したRSSを日付順にソートして出力したいんですが、どんな方法がありますか?

ttp://search.net-newbie.com/php/function.usort.html
こことか見たんですがよくわかりません

超初心者の俺にPHP詳しい人教えてください
よろしくお願いします
6nobodyさん:2006/04/28(金) 05:43:54 ID:???
>>5
usort使おうとしてるということは配列なんだろうけど
取得したRSSを・・・と言われてもどのように配列に入っているかわからなければ
答えようも無い。
7nobodyさん:2006/04/28(金) 05:53:54 ID:???
DBに取り込んで日付順に出力
こんなんでダメ?
8nobodyさん:2006/04/28(金) 10:04:43 ID:???
>>5
item単位でソートなのかrss単位でソートなのか知らんが、
日付を元にitemソートすればいいんじゃないの?
9nobodyさん:2006/04/28(金) 12:02:48 ID:???
RSSの話題がでているので便乗
RSSが最新のものに更新されたかどうかをどうやって取得すればいいのでしょうか?
現在わたしがやっているのは最新のRSSを自分のサーバーに置き、
クローンで一定間隔で再取得し、違いがあった場合に自分のサーバーにある
RSSを更新するというやり方をとっています
しかしこれだとあまりにも無駄が多いような気がします。
何か良い方法が教えてもらえませんか?
10nobodyさん:2006/04/28(金) 12:20:52 ID:???
他サーバの画像を自サーバに保存するのに
一番賢い方法教えてくれませんか?
11nobodyさん:2006/04/28(金) 12:53:23 ID:???
>>9
日本語でOK
12nobodyさん:2006/04/28(金) 13:03:23 ID:???
よく移転中のホームページにある、「*秒後に自動的にページ移動」、
っていうのをヘッダーに記述する以外で、phpで実現する方法はありますか?

全てのページに対して
ヘッダー周りは別途ファイルを分けてincludeしているためです。
13nobodyさん:2006/04/28(金) 13:16:01 ID:???
>>12
PHPはページを表示させる前の処理をするんだよ。
表示させた後の処理はクライアントサイドで動作する言語で書け。
14前スレ994:2006/04/28(金) 14:26:27 ID:Na6jyHe3
>前スレ995
>.htaccess「のようなもの」をディレクトリに置くだけでcron代わりになるんだったら
>鯖選びでcronが使えるかどうかなんて見ない。
そうですよね。確かに良く考えてみれば分かるようなことでした。

>cronが使える安鯖か自分のPCにあるブツ(cronでもタスクスケジューラでも)から
>wgetでも叩かせれば、定期的にスクリプトが走るよ。
今あるサーバのスクリプトを、自鯖にあるCRONでも命令可能ってことですか!!?
何だか危険な気もしますが、それが出来れば便利ですね!
wgetを叩けば良いのですね!調べてやってみます!!
どうもありがとうございました。。
15nobodyさん:2006/04/28(金) 14:40:01 ID:???
>>14
ああ、危険だね、何にも考えないでやると。
がんばってな
16nobodyさん:2006/04/28(金) 14:59:53 ID:???
タイムアウト制限もあるからね。
17nobodyさん:2006/04/28(金) 17:56:10 ID:UkqacfT1
質問です。PHPかMySQLか迷ったんですが、こちらで宜しくお願いします。
例えば、カラムが5列ほどの表があり、ユーザ設定で表示のON・OFFをしたいです。
今考えてる処理では、下のようにPage1.phpでDBに表示するカラム名を直接保存し、
Page2.phpでDBからカラム名を呼び出しSELECT文に加えて表を出力、という流れです。

項目が増えたりなど後々の汎用性も考慮して、カラム名DB保存→表示と
かなり考えて最終的に今はこういう処理を思いついたのですが、
一般的にもっとスマートな方法があるような気がしまして、
ヒントなどありましたら御教示おねがいします。

/* Page1.php ユーザ設定画面 */
// 表示されるHTML
□身長 □体重 □視力 □住所 □電話番号 [表示項目の更新]
※チェックがあった項目を表示

// HTMLソース部分
print '<input type="checkbox" name="display[]" value="height">身長';
print '<input type="checkbox" name="display[]" value="weight">体重';
// 処理部分(実際にはサニタイズ処理などします)
$sql = "UPDATE DisplayColumn SET display='" .join(",", $_POST["display"]). "'";
$rs = mysql_query($sql);

/* Page2.php データ表示画面 */
$sql = "SELECT display FROM DisplayColumn";
$rs = mysql_query($sql);
$dispay = mysql_result($rs,0,0);

$sql = "SELECT $display FROM Profile";
$rs = mysql_query($sql);
while ( $row = mysql_fetch_array($rs) ) { }
18nobodyさん:2006/04/28(金) 18:25:30 ID:bvVZ5vZV
超初心者な質問でごめんなさい。
hoge.php(カレンダー表示のphpです。)
をhtml内に表示させるには
html内で <? include "hoge.php";?>
と説明があったのですが、 html内に埋め込んでも
表示されません。
hoge.phpに直接アクセスすると表示されるのですが…

超ド素人な私に表示させる方法を教えてください。
19nobodyさん:2006/04/28(金) 18:57:17 ID:???
>>17
拡張性があると考えたんならいいんじゃないの?
DisplayColumnテーブルのdisplayフィールドにjoinする時に
表示しちゃいけないフィールドを更新しないようにね
(というか表示できるフィールドだけ更新するようにチェック)

>>18
htmlという拡張子もphpで処理するようにすればできるけど
普通はそういう設定してない。
htmlじゃなく拡張子をphpにすれば動くんじゃない?
またはSSIが使えれば少し修正すれば使えると思うけど。
20nobodyさん:2006/04/28(金) 18:59:46 ID:???
>>19
SSI使うには環境依存があるよ〜〜〜
21nobodyさん:2006/04/28(金) 19:07:54 ID:???
見えぬか?
>>またはSSIが使えれば
22nobodyさん:2006/04/28(金) 19:10:38 ID:???
そのスクリプトってレッt(ry
2318:2006/04/28(金) 19:24:34 ID:???
>>19さん
拡張子をphpに変えたら表示出来るようになりました。
有難うございます。
SSIも使えます。
その場合はどのようにしたら
使えるようになるのでしょうか?
24nobodyさん:2006/04/28(金) 19:35:49 ID:???
>>23
>>19は少し言葉足らず

SSIが使えればではなく
SSIのincludeVirtualなどでPHPが読み込めれば が正しい
これはApache2からしか出来ない
25nobodyさん:2006/04/28(金) 19:38:21 ID:???
phpを使ったらどんな事ができるんですか?
2617:2006/04/28(金) 19:40:01 ID:???
>>19
ありがとうございます。もうちょっと煮詰めたりググッたりしてみます。
27nobodyさん:2006/04/28(金) 20:46:02 ID:???
フォームのボタンを押した時に、
セッションを解放する方法はありますか?
2818:2006/04/28(金) 22:16:32 ID:???
>>24さん
SSIのinclude Virtualはまだまだ勉強が必要なようなので
とりあえず拡張子をphpに変えてやってみます。
有難うございました。
29nobodyさん:2006/04/28(金) 23:06:59 ID:???
>>23
そのサーバーで.htaccessが使えるなら、それで.htmlをPHPとして解釈させるように設定すれば動くと思う。
AddType application/x-httpd-php .html

でもサーバー負荷が増えるから、可能なら.phpで使う方がいいと思うけどね。
30nobodyさん:2006/04/28(金) 23:08:00 ID:???
>>27
action先のスクリプトでセッション破壊すればいいじゃん。
31nobodyさん:2006/04/28(金) 23:12:04 ID:???
>>29
サーバ負荷はphpに処理させないファイルが無い場合は変わらないよ。
検索エンジンに最適化するには拡張子がhtmlの方が良い。

(Googleは拡張子によってクロール頻度が変わる。
動的に生産されるページと認識されるとクロール頻度が下がるなどの悪影響がある。
Googleによれば相手のサーバの負荷を考慮しているとのこと。)
32nobodyさん:2006/04/28(金) 23:15:29 ID:???
>>31
>サーバ負荷はphpに処理させないファイルが無い場合は変わらないよ。

↑はぁ??何言ってんの???
HTMLとしてApacheに処理させれば済むものを
わざわざPHPエンジンを通せば当然遅くなる(負荷が増える)。
3331:2006/04/28(金) 23:28:25 ID:???
>>32
誤解を招いたようですまない。
「phpに処理させないファイルが無い」ってのは、ようするに静的に生産されるページが1個も無いって事。
全ページphpで構築していると、phpエンジンに通さないファイルは無いと思って、、、

34nobodyさん:2006/04/28(金) 23:28:48 ID:???
>>32
何でそんなにムキになってるの?
35nobodyさん:2006/04/28(金) 23:43:45 ID:???
>>34
ま、ありがちなタイプだわなw
36nobodyさん:2006/04/28(金) 23:49:36 ID:???
>>33-35>>31=どうでもいいけど日本語ヘタ過ぎ。

「誤解」じゃなくて、完全に認識を間違っている。
HTMLは「静的に生産される」云々の話ではない。
「すでに生産されている静的なファイル」がHTMLである。
3731:2006/04/28(金) 23:52:35 ID:???
>>36
日本語が下手な点はすまない。
あと >>34-35 書いたのは漏れではないので念のため。
38nobodyさん:2006/04/28(金) 23:54:24 ID:???
>>37
日本語の点だけじゃなくて技術的な点も問題あるけどね。
39nobodyさん:2006/04/29(土) 00:10:25 ID:???
>>29,32,36,38
何でそんなにムキになってるの?
40nobodyさん:2006/04/29(土) 01:44:36 ID:???
>>39>>34はなんでそんなにムキになってるの? 自分の無教養を指摘されたから?
4118:2006/04/29(土) 02:21:28 ID:???
>>29さん
有難うございます!
出来ました!!!
感謝です。
42nobodyさん:2006/04/29(土) 03:26:54 ID:???
「生産」じゃなくて「生成」が適切だと思う
43nobodyさん:2006/04/29(土) 09:44:01 ID:???
csvファイルの編集のプログラムを
あるサイトのスクリプトを参考に作ったのですが
編集するたびにとデータとデータの間に改行が増えていきます。
どの部分を修正すれば改行せずに編集できるのかがわかりません。
大変失礼かと思いましたが教えていただけないでしょうか。

     //編集プログラム
     $ID=$_POST["id"];
$Cat=$_POST["cat"];
$ImageLink=ShapeStr($_POST["image"],0,0);
$TextLink=ShapeStr($_POST["text"],0,0);
$Comment=ShapeStr($_POST["comment"],1,1);
$Price=ShapeStr($_POST["price"],0,0);
//配列の格納後文字列へ変換
$lines=array("$ID",$Cat,$ImageLink,$TextLink,$Price,$Comment,"","","","1");
$lines=implode(",",$lines);
$lines=$lines."\n";
//配列を入れ替え
$Data=file("item.csv");
for($i=0;$i<sizeof($Data);$i++){
$line=explode(",",$Data[$i]);
if($line[0]==$_POST['id']){
array_splice($Data,$i,1,$lines);
}
}
44nobodyさん:2006/04/29(土) 09:44:38 ID:???
上の続きです


//CSVファイルに書き込み
$fp=fopen("item.csv","w");
flock($fp, LOCK_EX);
foreach($Data as $item)fputs($fp,$item);
fclose($fp);
print "編集しました";

(参考にしたサイトのURLを載せていいものか迷ったので
編集部分だけ記載させていただきました。)

どうぞよろしくお願いします
45nobodyさん:2006/04/29(土) 10:08:52 ID:???
PHP4系と5系を同じサーバーに併存させることって可能??
併存させると何か問題発生するかな。っていうかそもそも不可能?
46nobodyさん:2006/04/29(土) 10:10:13 ID:???
$line=explode(",",$Data[$i]);

$line=explode(",",trim($Data[$i]));
に(ざっとしか見てないので適当)。
47nobodyさん:2006/04/29(土) 11:42:15 ID:6qKEu+sv
PHP4を5に書き換えるくらいできるだろ
48nobodyさん:2006/04/29(土) 11:48:00 ID:???
>>45
まずは併存させてくれ
49nobodyさん:2006/04/29(土) 12:10:52 ID:???
flockってどういう意味があるの?
50nobodyさん:2006/04/29(土) 12:38:22 ID:???
fopenでリソース開いてるときに
読み込み,書き込みさせないようにロックかけたり解除したり
ttp://jp.php.net/manual/ja/function.flock.php
マニュアル読んで
51nobodyさん:2006/04/29(土) 13:47:35 ID:???
なんか荒れてたのね。
>>31
> サーバ負荷はphpに処理させないファイルが無い場合は変わらないよ。
そりゃそうだ。でも今まで.htmlをPHP扱いしてなかった上に.
htmlでPHPを動かす方法が分かりません!って言ってるのに
それで全ページがPHP生成のはずだと思い込む君の脳みそが心配です。
52nobodyさん:2006/04/29(土) 13:49:16 ID:???
>>49
今、このファイルを開いてる人がいるよーと他のプログラムに通知するもの
53nobodyさん:2006/04/29(土) 15:47:35 ID:???
現在掲示板を作っているのですが、文字色の設定で一つ質問があります。
投稿画面で色(投稿色)を設定するのですが、現在$colorsに配列として色をいれています。
それを以下のようにしてます。
<select name="color" style=color:white;>
<option value="{$colors[0]}" style="background-color:{$colors[0]};">{$colors[0]}



-------------------------------ここまで-----------------------------
しかし、$colorsに色を追加しても、手動で<option value= …を追加しなければいけません。

そこで、$colorsに色を追加したら自動で<option value=…を追加するというのはできないでしょうか?

日本語がおかしくてすいません。
54nobodyさん:2006/04/29(土) 15:57:54 ID:???
>>53
その書き方を見るとSmartyを使ってるようなので、sectionを使えばいいのではあるまいか?
55nobodyさん:2006/04/29(土) 16:17:35 ID:???
>>53
echo <<<EOT
<select name="color" style="color:white;">
EOT;
foreach ($colors as $val)
echo <<<EOT
<option value="{$val}" style="background-color:{$val};">{$val}
EOT;
でいけるっしょ
56nobodyさん:2006/04/29(土) 16:36:08 ID:???
>>54の根拠が知りたい
57nobodyさん:2006/04/29(土) 16:37:01 ID:???
>>54の巨根が知りたい
58nobodyさん:2006/04/29(土) 16:38:08 ID:???
>>54の巨根が尻に…
59nobodyさん:2006/04/29(土) 17:53:27 ID:???
そして掘られました
60nobodyさん:2006/04/29(土) 18:01:12 ID:???
\   矢 口 さ ん 誕 生 日 お め で と う  /

       ノノノハヽヽ                ノノノハヽヽ
∋oノノハヽ(0^〜^)ノノハヽ#ノノハヽo@ノハ@|(‘〜‘ 川
 从*`、っ´) ( つと)( ^▽^)(’ー’川 (‘д‘ ) (つと )
  ( つと)  | | |  ( つと) (つと )  (つと )  | | |
oOノハヽOoノハヽ*∈_)__) .(__(_) (_ノノノハヽヽ〉ノノノハヽヽ
 ( ・e・) 川o・-・)      @@@    ノlVvV从(´ー`●)
 .( つと)  ( つと∋oノハヽo☆@.*ノノノハヽヽつと )  (つと )
 (_)__)  (_)__)(〜^◇^)@+@(`.∀´ )__(_) .(__(_)
〆〃ハハ ☆ノハヽ ( つつ \|⊂⊂  ) oノノ人ヽo ¶¶¶¶ ∋oノハヽo∈
∬∬´▽`) ノノ*^ー^) (_)__)    (__(_)从・ 。.・*从[~~~~~]  (´v(`* )〜♪
 ( つと)   (つと)          .    ( つつ .[~~~~~~~] ●⊂ )
 (_)__)   (_)__)              (_)__)|| ̄ ̄ ̄|| (__(_)
6154:2006/04/29(土) 18:01:20 ID:???
ああ、ヒアドキュメントの存在を忘れてたよ。
"をそのまま使ってるので、echo(やprint)では無いらしいからテンプレートエンジンを使ってると思った次第。
62nobodyさん:2006/04/29(土) 18:03:37 ID:???
単なるPC初心者の知ったかでした^^;
63nobodyさん:2006/04/29(土) 18:04:45 ID:???
まぁ、ヒアドクでわざわざ[0]の配列を{〜}で括る必要なんてないはずだから
Smartyではあるまいか?と予想する54も間違っちゃいないと思う。
64nobodyさん:2006/04/29(土) 18:38:57 ID:???
>>54
こちらの書き方が悪くて勘違いをさせてしまって申し訳ありません。
>>55
上手くいきました。
ありがとうございました。
65nobodyさん:2006/04/29(土) 19:05:14 ID:???
>>61
で、オマイは巨根なのか?
66nobodyさん:2006/04/29(土) 19:17:53 ID:???
>>65
そんなに巨根が好きなのか?
67nobodyさん:2006/04/29(土) 19:34:16 ID:???
巨根に勝るものは無い
68nobodyさん:2006/04/29(土) 19:47:32 ID:???
大きすぎると痛いよ?
69nobodyさん:2006/04/29(土) 19:53:10 ID:???
やらないか
70nobodyさん:2006/04/29(土) 23:27:54 ID:???
しょうがないなぁ、やろうか
71nobodyさん:2006/04/30(日) 00:16:43 ID:???
スレ違いな気がしなくもないですが、どこで聞けばいいのかわからなかったので・・・
xreaでcronを使うシェルファイルを

#!/bin/sh
#PHP
/usr/bin/wget -q --spider http://xxx.com/mmm.php > /dev/null 2>&1
exit
と設定したんですが
/virtual/legnabea/public_html/cron.sh: line 3: 1: ambiguous redirect
とエラーが出ます。これはどういう意味なんでしょうか?
72nobodyさん:2006/04/30(日) 01:31:56 ID:???
>>71
> /dev/null 2>&1

エラーの内容からだと、ここじゃないですか?
73nobodyさん:2006/04/30(日) 02:28:33 ID:???
>>71
ちょースレ違いを通り越して板違い。うにっくすの板向けだろそりゃ。
「2>&1」のりダイレクトのリダイレクト先が書かれてないからエラーになってる。
見よう見まねでそんなの書いてるんじゃないよ。
74nobodyさん:2006/04/30(日) 02:47:40 ID:???
PHPにもあるから良いかな?
あのさ、オブジェクト指向が俺全然解らなかったんだよ。
で、実際にお仕事初めて半年ぐらい起ったんだけど、ずっとPHPとPerlのプログラミング
しててなんとなくオブジェクト指向のすばらしい理由ってのが解った気がするんだけど、
なんかグローバル変数とかが散在しなくて、メンテしやすい!ってのが理由なのかな?
75nobodyさん:2006/04/30(日) 03:02:38 ID:???
>>73
黙ってろクズ
76nobodyさん:2006/04/30(日) 04:01:20 ID:???
ちゃんと回答してる人をクズ呼ばわりするんじゃないよ
77nobodyさん:2006/04/30(日) 09:02:25 ID:???
何で春休みも終わったのに厨房が沸いてるんだ?
GWだから?
こんなとこ着ても意味無いのにな。
78nobodyさん:2006/04/30(日) 09:04:17 ID:???
GWってまだじゃね?
79nobodyさん:2006/04/30(日) 12:15:38 ID:msE59x+3
PHPでは、Lynxのようなウェブブラウザでサイトにアクセスさせるような
ことはできますか?
80nobodyさん:2006/04/30(日) 13:08:32 ID:???
>>78
いや、もうあちこちで新大学生のGW帰省は始まってる
81nobodyさん:2006/04/30(日) 13:09:23 ID:???
>>79
できる
82nobodyさん:2006/04/30(日) 13:27:35 ID:msE59x+3
>>81
具体的にはどうすれば実現出来るのでしょうか?
Perlのモジュールなら「libwww」というのは知っているのですが、PHPにはありません。

よろしくお願いします。
83nobodyさん:2006/04/30(日) 13:37:32 ID:???
正規表現で「ひらがな」はマッチするのですが「漢字」はマッチしません。
どうすればいいんですか?

$str = "あ";
if(mb_ereg("あ",$str)){
print "OK";
}

$str = "一";
if(mb_ereg("一",$str)){
print "OK";
}
84nobodyさん:2006/04/30(日) 13:44:31 ID:???
文字コードが原因でした。失礼しました。
85nobodyさん:2006/04/30(日) 13:48:57 ID:???
>>82
どこまで真面目にやるかにもよるんだが、
単純にHTMLファイル1枚だけ拾ってくるなら標準でfile()などが対応するし、
libwww並のことがしたいならPEARでHTTP_Requestってのがあるよ。
86nobodyさん:2006/04/30(日) 13:51:23 ID:msE59x+3
>>85
ありがとう(・∀・)! 調べてみるよ。
87nobodyさん:2006/04/30(日) 16:20:47 ID:???
UTF-8で記述されたページにeucで記述したファイルをインクロードしたとき
(言語は共にja)これって文字化けしますか?

初歩過ぎてすいません。

88nobodyさん:2006/04/30(日) 16:23:47 ID:???
>>87

>これって文字化けしますか?

>初歩過ぎてすいません。

やってみればわかるだろ。
とりあえずmb_convert_encoding()しとけ。
89nobodyさん:2006/04/30(日) 16:26:17 ID:???
>>87
する
90nobodyさん:2006/04/30(日) 16:30:52 ID:???
自分で初歩的って言うなら自分で解決しろよ
91nobodyさん:2006/04/30(日) 16:36:26 ID:???
なんか質問の仕方がトリビアっぽいな
92nobodyさん:2006/04/30(日) 16:37:58 ID:???
>>87
俺はどの文字エンコードとして表示すればいいんだ??
93nobodyさん:2006/04/30(日) 16:43:12 ID:23/3bPSV
fputs関数で日本語をファイル出力した場合、
Shift-JISで出力されてしまいます。

fputs($file,"にほんご");

etf-8で出力したいのですが、
毎回、mb_convert_encoding()で変換してから
fputs関数に渡さないと出来ませんか?
最初から、文字コードを指定してファイル出力する
方法があるならば教えてください
94nobodyさん:2006/04/30(日) 16:43:41 ID:???
fwriteにする
95nobodyさん:2006/04/30(日) 16:48:37 ID:???
インクロード
96nobodyさん:2006/04/30(日) 16:48:55 ID:???
>>90
多分、各HTML内で個別に文字コード指定ができることを期待したんじゃないの
97nobodyさん:2006/04/30(日) 16:51:34 ID:???
>>93
毎回すればいいじゃない。
fputs($file,mb_convert_encoding("にほんご", "UTF-8"));
ってしとくだけでしょ。
98nobodyさん:2006/04/30(日) 17:01:19 ID:???
>>94
有難うございます。調べてみます

>>95
これは僕へのレスですかね?

>>97
マジレスですか?
一様、釣られるてみます。
それが面倒だから質問してるのに・・・
99nobodyさん:2006/04/30(日) 17:02:34 ID:???
wgetでphpを定期実行させるときに、phpファイル側になにか特別な記述って必要ですか?
100nobodyさん:2006/04/30(日) 17:03:29 ID:???
むしろ>>94がネタレス
101nobodyさん:2006/04/30(日) 17:03:42 ID:???
うんにゃ
102nobodyさん:2006/04/30(日) 17:07:37 ID:???
>>98
> 一様、釣られるてみます。

一様に釣られたの?
それとも一応釣られたの?

もし「一応」の誤用だったらカッコワル(´・ω・')
10393:2006/04/30(日) 17:08:44 ID:???
ほんとだ、バイナリモード・・・釣られた。
皆さん、ホントに>>97さんの方法でやってるんですか?
104nobodyさん:2006/04/30(日) 17:10:18 ID:???
>>99
なんでwgetなんだ?
Cronでいいじゃん。。
105nobodyさん:2006/04/30(日) 17:25:12 ID:???
setcookieで掲示板で名前欄に記入されたやつをブラウザ閉じるまで保存して名前欄に出力していたいのですが、

$name に$_POST['name']が入っていて、
setcookie(namecookie','$name);と設定し、$COOKIE['namecookie']を投稿フォームの名前のvalueに設定しています。
しかし、それでは投稿後名前欄に$nameと出力されるだけで、先ほど投稿した名前は表示されません。

このような場合、どうしたらよろしいでしょうか?
10687:2006/04/30(日) 17:31:54 ID:???
ありがとうございます。
mb_convert_encoding()
この関数はインクロードする時(UTF-8のファイル)に記述?出力する(eucのファイル)時に記述?
どちらでも良いでしょうか?



107nobodyさん:2006/04/30(日) 17:40:55 ID:???
>>93
というかオマエさんのソースファイルのエンコードは何なんだ?

>>105
まずソースをしっかり晒せ
それじゃシンタックスエラー出まくりだ

#おそらくこれ↓で直る
# setcookie( 'namecookie', $name )
# $_COOKIE['namecookie']
10895:2006/04/30(日) 17:41:08 ID:???
>>98
俺のは>>87へのレスだから気にするな
109nobodyさん:2006/04/30(日) 17:42:36 ID:???
レスがぐちゃぐちゃでわかんないです(><)
110nobodyさん:2006/04/30(日) 17:43:05 ID:???
>>105
typoが多すぎるな。。
$nameになる -> $_COOKIE['namecookie']を表示するなどしてチェックする
         -> $_COOKIEをチェックする
         -> setcookieを疑ってみる
ぐらいやって欲しいものだ。

>>106
だから、俺はどのエンコードで喋ればいいんだ!?
111nobodyさん:2006/04/30(日) 17:52:28 ID:???
>>104
cronでphpを実行するにはphpの記述を変える必要があるんですか?
というかcronの書き方がわかんないのでphpを起動させるシェルスクリプト書いて下さい
112nobodyさん:2006/04/30(日) 17:57:48 ID:???
>>98
うん、マジレス。
HTTPへの文字列出力(標準出力)だけならともかく、
バイナリが含まれるかもしれない各ファイルへの出力を
自動文字コード変換なんて設定あったら確実にバグるって。

これを実現するには「絶対に文字列しか出力しない出力関数」を用意する必要があって、
だったら
function fputs_utf8($fp, $str) {
return fputs($fp, mb_convert_encoding($str、"UTF-8"));
}
とか自前で用意するだけで事が足りる。

> 皆さん、ホントに>>97さんの方法でやってるんですか?
というか、エンコードの必要なものと必要じゃないものをそれぞれ区別して処理してるから
「出力するすべてのものをUTF-8変換」なんてアホなこと自体やったことないっす
113nobodyさん:2006/04/30(日) 17:59:33 ID:???
>>103
ソース自体をUTF-8で書いてるからエンコードなんて要らない
114nobodyさん:2006/04/30(日) 18:00:38 ID:???
>>99
特にない
115nobodyさん:2006/04/30(日) 18:05:10 ID:???
>>106
どっちでもやる気になればできるがUTF-8のファイル側でやった方が多分楽
116nobodyさん:2006/04/30(日) 18:06:51 ID:???
>>102
utf-8をetf-8と書いちゃう人にあまり厳しい突っ込みはしてやるな
117nobodyさん:2006/04/30(日) 18:08:58 ID:???
>>105
多分、setcookieで$nameを'〜'で括っちゃってるだけ
118nobodyさん:2006/04/30(日) 18:13:10 ID:???
以下のサイトのように、プロパティのURLと実際の画像のURLを変えたいのですが、
実装の方法を分かる方いますか?

http://tv.yahoo.co.jp/tv_show/nhk/komyo/photo/index.html?p=17_01

プロパティの画像URL
http://img.yahoo.co.jp/images/clear.gif
実際の画像URL
http://tv.yahoo.co.jp/tv_show/nhk/komyo/photo/shot/17/01.jpg
119nobodyさん:2006/04/30(日) 18:16:30 ID:???
PHPと関係ねーじゃん
120nobodyさん:2006/04/30(日) 18:20:20 ID:???
IDE使用してるから〜、普段はもっと気を使ってるから〜、とか反論する余地もなく
何気ない書き込みだったとしても、多数の typo をする奴はマには向いてない。
121nobodyさん:2006/04/30(日) 19:00:32 ID:???
>>118
HTMLソースくらい見れ
<td background="images/h_photo01.jpg"><img src="http://img.yahoo.co.jp/images/clear.gif"></td>
122nobodyさん:2006/04/30(日) 19:06:43 ID:???
>>121 THX!!
123nobodyさん:2006/04/30(日) 19:49:36 ID:???
>>111
氏ね。もしくは1万円払え。
124nobodyさん:2006/04/30(日) 23:05:56 ID:23/3bPSV
クライアントからの入力フォーム情報を元に
サーブレットでの処理をいくつかのファイルに分けようと思っています。
そのため、以下のようなファイルを一つ生成し
クライアントは、このファイルにまずリダイレクトしてしました。
hoge1.php,hoge2.php,hoge3.phpが
それぞれ異なる処理ロジックを持つようにしています。
ですが、これだと入力フォームの情報がhoge1,2,3.php
に渡りません。
どうしたらhoge1,2,3.phpに入力フォーム情報を
渡す事が出来ますか?

<?php
header("Location: hoge1.php");
header("Location: hoge2.php");
header("Location: hoge3.php")
header("Location: hoge.html")
?>
125124:2006/04/30(日) 23:14:11 ID:???
それより、hoge1,2,3.phpをクラス化して
入力フォームからリダイレクトされたサーブレットから
それらを呼び出すようにした方がいいっすかね?
126nobodyさん:2006/04/30(日) 23:16:48 ID:???
>>124
<?php
require("hoge1.php");
require("hoge2.php");
require("hoge3.php");
header("Location: hoge.html");
?>
でいいと思う
127nobodyさん:2006/04/30(日) 23:18:38 ID:???
ブログの更新情報をRDFに落として配信できるようにしようとしています

phpにアクセスしてヘッダー送信→RSSソース表示という手順を踏めばしっかり表示されるのですが、
RSSのソースのファイルをphpに生成してRDFファイルにアクセスすると表示してくれません・・・・
解決方法ありますでしょうか。。。
サーバーはロリポップです。
128124:2006/04/30(日) 23:21:25 ID:???
おぉ、できました。require()初めて知りました。
本当に本当に有難うございました
129nobodyさん:2006/04/30(日) 23:23:06 ID:???
<?xmlとかかいてる予感。
130127:2006/04/30(日) 23:28:31 ID:???
>>129
書いてます・・・・
まずいんでしょうか・・・
131nobodyさん:2006/05/01(月) 00:13:12 ID:???
拡張子php?rdf?どっちで保存してるの?
132nobodyさん:2006/05/01(月) 00:33:09 ID:???
Amazon Web Serviceで売上ランキング情報を取得するにはどうしたらいいの??
ttp://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=******&Operation=ItemLookup&IdType=ASIN&ItemId=B000AYEI5Y&ResponseGroup=Large
ttp://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=******&Operation=ItemLookup&IdType=ASIN&ItemId=B000AYEI5Y&ResponseGroup=SalesRank
上記二つを試したけど、期待した結果XML(<SalesRank>〜</SalesRank>)が
返されなくて困ってます。。。
133nobodyさん:2006/05/01(月) 00:59:11 ID:???
$_SERVER["PHP_SELF"]って偽装できないですよね?
134nobodyさん:2006/05/01(月) 01:04:11 ID:???
偽装してどーすんだそんなの
135nobodyさん:2006/05/01(月) 01:10:54 ID:???
いや、偽装できるなら、偽装されたときを想定しないといけないのかなと思って。
136127:2006/05/01(月) 01:14:33 ID:???
拡張子はrdfです
.htaccess入れたら正常に閲覧できるんですが、何かほかの方法ってありますでしょうか?

phpで出力の方は成功しました。
137nobodyさん:2006/05/01(月) 01:22:37 ID:W7/kimMe
fputs()のオープンモード(第二引数)に"a"を
指定すると追加でファイル出力されるんですが、
ファイルの最後に出力されてしまいます。
どうしたら、ファイルの最初に追加(挿入)する
事ができますか?
138127:2006/05/01(月) 01:30:35 ID:???
>>137
もとのログファイルを
$lines = file("ログファイル");
で読み込んでおいて、

fputs(ファイルポインタ,"文字列");
fputs(ファイルポインタ,$lines);

とするか
fopenの第二引数にr+を指定するといいと思います
139nobodyさん:2006/05/01(月) 01:44:44 ID:???
>>132
アマゾンの売上情報は取得できない(らしい)。
140137:2006/05/01(月) 02:09:05 ID:???
>>138
レス有難うございます。

$lines = file("hoge.txt");
fputs(ファイルポインタ,"test");
fputs(ファイルポインタ,$lines);

出力結果を見ると
testは出力されるのですが、$linesはArrayと表示されてしまいます。

あと、fopenの第二引数にr+を指定すると挿入されてしまいます。
確かに挿入できるか質問しましたので質問の仕方が悪かったです。
これは、
例えば、hogehogehogeという内容のhoge.txtがあった場合、

$file=fopen("hoge.txt","?");
fputs($file,"HOGE");

というコーディングを書いた場合、
"HOGEhogehogehoge"という出力結果が欲しいです。
141nobodyさん:2006/05/01(月) 02:27:22 ID:???
>>140
file()をfile_get_contents()にするといいよ。
基本的にファイルに対して「途中に内容を増やす」というのは無くて、
元ある内容に上書きするか末尾に追加するしかないっす。
(元々のデータの位置はどうやっても変わらない)
なので挿入しようと思ったら、1度読み込んだ上で
ファイル全体を出力しなおす、という手段が必要になる。
142137:2006/05/01(月) 02:41:17 ID:???
>>138
file()は行毎の配列を戻り値とするという事が今解りました。
以下の方法で、やりたい事ができました
ありがとうございました。

$arr = file("hoge.html");
$file=fopen("hoge.html","w");

flock($file,LOCK_EX);
fputs($file,"test\n");
foreach ($arr as $line) {
fputs($file ,$line);
}
flock($file,LOCK_UN);

fclose($file);

>>141
レスありがとうございます
file()とfile_get_contents()、何が違うんでしょうか?

マニュアル引用
string file_get_contents ( string filename [, bool use_include_path [, resource context [, int offset]]] )
offsetで指定した場所から開始し、 ファイルの内容を全て文字列に読み込むこと以外はfile()と等価。

つまり、ファイルを最初から全部読み込む場合は、file()で大丈夫ですかね?
143nobodyさん:2006/05/01(月) 02:54:05 ID:???
>>142
file()は1行ごとに分解した配列で取得。
file_get_contents()は全部まとめて1個の文字列として取得。
144137:2006/05/01(月) 02:56:01 ID:???
>>143
なるほど。
じゃあ、file_get_contents()使います。
有難うございました
145nobodyさん:2006/05/01(月) 15:46:56 ID:???
セッションのini設定を、
session.save_handler files
session.save_path no value
の状態で、セッションを利用できているのですが、
この場合、セッションファイルはどこに保存されていますか?
146nobodyさん:2006/05/01(月) 16:07:35 ID:???
UNIX系なんですが、PHP-namazuモジュール(2.3.1)
インストール出来ないのは私だけ?
147nobodyさん:2006/05/01(月) 16:09:44 ID:???
>>145
多分 /tmp
148nobodyさん:2006/05/01(月) 16:11:38 ID:???
>>146
きっと君だけじゃないよ
149nobodyさん:2006/05/01(月) 16:16:10 ID:???
PHP-namazuってあのPEARにunstableな感じで入ってる奴?
まだ生きてたんだ。namazuがバージョンアップしてから使えるかわからずほったらかし。
でも、前(PHP4.1?とnamazu2.0.12?あたり)は素直にインスコできたよ。
150nobodyさん:2006/05/01(月) 16:32:43 ID:???
2.3.1のインストールがうまくいかない→解決、の事例なら
去年の11月にphp-usersに投稿にあったよ。
ttp://ns1.php.gr.jp/pipermail/php-users/2005-November/028127.html
151nobodyさん:2006/05/01(月) 22:10:25 ID:???
>>150
ありがとうございます。
事例と同じでautoconf(2.13,2.53,2.59)がインストールされています。
同様にすると解決出来るかもしれませんね。

リンクして今後に弊害が出ると思うとちょっと怖いのであきらめます。
152nobodyさん:2006/05/01(月) 23:12:18 ID:???
/^[A-F\d]{2}$/i
preg_matchで↑より16進数の簡単な表現ない?
153nobodyさん:2006/05/01(月) 23:26:29 ID:???
>>152
無い気がする
154nobodyさん:2006/05/01(月) 23:39:20 ID:???
>>153
ありがと
155nobodyさん:2006/05/01(月) 23:48:06 ID:???
is_16sin()
156nobodyさん:2006/05/02(火) 07:12:03 ID:???
>>152
文字数関係なければctype_xdigit()という関数がある
157nobodyさん:2006/05/02(火) 07:22:20 ID:???
phpでNoticeレベルであってもエラーが発生した場合にはその時点で強制終了させることは可能でしょうか?
158157:2006/05/02(火) 07:23:29 ID:???
ちなみに、エラーを全て表示する(※1)ということではありません。
エラーが発生した時点でスクリプトを強制終了して、空白のHTMLや
CGI/Perlみたいに 500 Internet Server Error を返したいんです。


※1
ini_set("error_reporting", E_ALL | E_STRICT)
159152:2006/05/02(火) 07:41:22 ID:???
>>156
preg_matchでマッチした部分を取り出すのが目的なので...
^とか$使って紛らわしくしてましたね
でもctype_xdigit知らなかったのでサンクス
160152:2006/05/02(火) 07:51:13 ID:???
>>158
ttp://jp.php.net/manual/ja/function.set-error-handler.php
まだ詳しく読んでないけどこれ無理かな?
161158:2006/05/02(火) 07:52:12 ID:???
>>160
ありがとうございます
それでいけそうです
162nobodyさん:2006/05/02(火) 14:25:42 ID:???
全部同じ内容(<?phpから始まり?>で終わってる)ファイルの拡張子が
.php .cgi .html
の3つだとそれぞれ違いがあるのでしょうか?
163nobodyさん:2006/05/02(火) 14:37:56 ID:???
↑そんな中途半端なことだけ知ってどうするの?
全部同じように処理しようと思えばできるし、.htmlをPHP、.phpをCGI、.cgiをHTML出力にすることもできる。
164nobodyさん:2006/05/02(火) 14:46:52 ID:???
>>162
扱うサーバ、ソフトの設定しだい。
165nobodyさん:2006/05/02(火) 18:09:09 ID:???
>>162
違うようにもできるし、同じようにもできる
166nobodyさん:2006/05/02(火) 18:36:18 ID:???
functionの関数の戻り値として(連想)配列
返すのはどうしたらよいですか?
167166:2006/05/02(火) 18:49:20 ID:???
すみません。勘違いをしていました。普通に以下でできました

return $return_array;

ありがとうございました。
168nobodyさん:2006/05/02(火) 19:56:21 ID:???
はるだなぁヽ(´ー`)ノ
169nobodyさん:2006/05/02(火) 23:39:23 ID:rocsvmuH
>>163
うざいよ
170nobodyさん:2006/05/02(火) 23:45:46 ID:???
はるだなぁヽ(´ー`)ノ
171nobodyさん:2006/05/02(火) 23:48:27 ID:???
よるだなぁヽ(´ー`)ノ
172nobodyさん:2006/05/03(水) 01:18:16 ID:???
自作関数って意味あるの?
173nobodyさん:2006/05/03(水) 01:27:38 ID:???
おまえにとっては意味内と思うよ。
それより、死んで。
174nobodyさん:2006/05/03(水) 02:20:40 ID:Zf4m7aAt
はるだなぁヽ(´ー`)ノ
175nobodyさん:2006/05/03(水) 03:52:15 ID:???
データベースから、qst、opt1、opt2、opt3というカラムを取り出して表示させたいんですけど、opt1、op2、opt3の前にラジオボタンを表示させる方法が分かりません。

○ ← ラジオボタン

qst-------------------------------- ○ opt1 ○ opt2 ○ opt3
qst-------------------------------- ○ opt1 ○ opt2 ○ opt3
qst-------------------------------- ○ opt1 ○ opt2 ○ opt3

こんな感じでループさせたいんですけど・・・。
今の状態では、

qst-------------------------------- opt1 opt2 opt3
qst-------------------------------- opt1 opt2 opt3
qst-------------------------------- opt1 opt2 opt3

というようにqst,opt1,opt2,opt3を行ごとにループさせて表示することは出来ています。
ラジオボタンを表示するには、qstとoptを別に取り出してoptの前にラジオボタンを表示するタグをくっつけてループさせるしかないんでしょうか?

説明下手ですいません;;
176nobodyさん:2006/05/03(水) 03:55:33 ID:???
春だなぁ
177nobodyさん:2006/05/03(水) 03:59:34 ID:???
>>175
普通にまとめて取り出して、表示するときにラジオボタンのタグをくっつけて表示するだけ。
ぶっちゃけ「めちゃめちゃ当たり前」のことでしかないので、話だけ聞いてると
どこで困ってるのか想像もできない。何故そんなので困る??
まず、今はどういうプログラムで取り出しと表示をやってるのか具体的に書け。話はそれからだ。
178175:2006/05/03(水) 04:15:58 ID:???
>>175
--------------------------------------------------------------------qst,ans1,ans2,ans3を表示
$testNo = $_REQUEST["test"]; //テスト問題を取得
$gateway = new TestGateway(); //TestGatewayクラス内で下のgetQuestion($test)を定義
$table = $gateway->getQuestion($testNo);
$dataview = new DataTableView($table);
$html = $dataview->render();
print_r($html);
-----------------------------------------------------------------------------qst,ans1,ans2,ans3を取り出す
public function getQuestion($test)
{
$link = $this->connect();
$qry = "SELECT qst, ans1, ans2, ans3 FROM db WHERE test=\"$test\"";
$result = mysql_query($qry,$link);
if (!$result) {
throw new Exception(mysql_error($link),QUERY_FAILED);
}
else if (mysql_num_rows($result) == 0 ) {
throw new Exception("",NO_RESULTS);
}
// extract data from table and populate object
$row = mysql_fetch_array($result, MYSQL_ASSOC);
mysql_close($link);
return $row;
// now return results in DataTable
$table = new DataTable();
// now fill table with data
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$table->addRow($row);
}
return $table;
}
179175:2006/05/03(水) 04:16:56 ID:???
>>175
--------------------------------------------------------------------qst,ans1,ans2,ans3を表示
$testNo = $_REQUEST["test"]; //テスト問題を取得
$gateway = new TestGateway(); //TestGatewayクラス内で下のgetQuestion($test)を定義
$table = $gateway->getQuestion($testNo);
$dataview = new DataTableView($table);
$html = $dataview->render();
print_r($html);
-----------------------------------------------------------------------------qst,ans1,ans2,ans3を取り出す
public function getQuestion($test)
{
$link = $this->connect();
$qry = "SELECT qst, ans1, ans2, ans3 FROM db WHERE test=\"$test\"";
$result = mysql_query($qry,$link);
if (!$result) {
throw new Exception(mysql_error($link),QUERY_FAILED);
}
else if (mysql_num_rows($result) == 0 ) {
throw new Exception("",NO_RESULTS);
}
// extract data from table and populate object
$row = mysql_fetch_array($result, MYSQL_ASSOC);
mysql_close($link);
return $row;
// now return results in DataTable
$table = new DataTable();
// now fill table with data
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$table->addRow($row);
}
return $table;
}
180175:2006/05/03(水) 04:18:21 ID:???
----------------------------------------------------------------------------DataTableViewクラス
<?php
class DataTableView {
private $table;
private $tid = null;
private $tcls = null;
public function __construct($datatable) {
$this->table = $datatable;
}
public function setId($id) { $this->tid = $id; }
public function setClass($cls) { $this->tcls = $cls; }
public function render() {
$html = "<table " ;
if (isset($this->tid))
{
$html .= "id=\"$this->tid\" ";
}
if (isset($this->tcls))
{
$html .= "class=\"$this->tcls\" ";
}
$html .= ">\n";


続きます
181175:2006/05/03(水) 04:18:52 ID:???
// now render table header if table not empty
if ($this->table->numRows() > 0 )
{
// now render table contents
// get table iterator
$html .= "<tbody>\n";
$iterator = $this->table->getIterator();
while($iterator->valid()) {
$html .= $this->renderRow($iterator->current());
$iterator->next();
}
$html .= "</tbody>\n";
}
// now render table end
$html .= "</table>\n";
return $html;
}
private function renderRow($row){
$rowhtml ="";
if (count($row) > 0 )
{
$rowhtml .= "<tr>";
foreach($row as $item)
{
$rowhtml .= "<td>$item</td>";
}
$rowhtml .= "</tr>\n";
}
return $rowhtml;
} }
?>
182175:2006/05/03(水) 04:22:07 ID:???
長くなってすいません;;
とりあえず今こんな感じです。
授業中にもらったサンプルスクリプトを元に作ってみました。
2カラム目から4カラム目(ans1,ans2,ans3)までだけにラジオボタンのタグをくっつけるというのがよく分からないです。
183nobodyさん:2006/05/03(水) 04:29:05 ID:???
最近の学校はまともにロジックも読めないやつにいきなりクラス書かせてんのかよ
184nobodyさん:2006/05/03(水) 04:39:25 ID:???
>>182
function render()を改造するかextendして、ラジオボタンつきのrender()を作ればいいだけかと。
個人的にはデザインをメソッドで組み立てるこの設計は気に入らないけどな >class DataDetailView
デザインの出力が分かりにくいしいじりにくいしデザイナーと分業できねーし。
185175:2006/05/03(水) 04:50:53 ID:???
>>183
私がちゃんと理解できてないだけだと思います。
最初から勉強し直してきます。
スレ汚しすいませんでした。

>>184
レスどうもありがとうございます。
1度スクリプトを見直し理解してから184さんがおっしゃった方法を考えてみます。
そうですね。でも私にはこれでいっぱいいっぱいの状態なので、もっとPHPを勉強してからデザインのほうも考えてみることにします。
早朝にどうもありがとうございましたm(_ _)m
186nobodyさん:2006/05/03(水) 04:56:27 ID:???
このクラスってあくまで簡易HTML組み立て用なんじゃねーのかな。
凝ったデザインをするならクラスでなんてやらんと思うぞ。
汎用性を持たせて拡張しようと思うといたずらに複雑になるし、その割に使えないし。
(たまにいるけどな。無駄に巨大で複雑なクラス作って何でもできるぜ!とか息巻いてるやつ)
187nobodyさん:2006/05/03(水) 04:57:38 ID:???
クラス使う前にユーザ関数や基礎を勉強しなおすことをおすすめする
188nobodyさん:2006/05/03(水) 04:59:54 ID:???
ユーザ関数より先にSmartyとか既存のテンプレートと、MVCの概念を学ぶことをおすすめする
189175:2006/05/03(水) 05:06:38 ID:???
>>186
あ、確かに授業のときに先生は、とりあえずテーブルをHTML化させるためのスクリプトとしてこのクラスを紹介してました。
あとはテンプレートとCSSを使うように言ってました。

>>187
はい。私自身全く基礎が分かってないと実感しています。
なのにこの課題クラスを使わないと点が貰えないみたいなんでかなり焦っていますorz
とりあえず提出までにあと数日あるので基礎とか見直しつつなんとかやってみたいと思います。
アドバイスどうもありがとうございます^^
190175:2006/05/03(水) 05:09:43 ID:???
>>188
え、既存のテンプレート・・・?
PHPのこと全く分かってない・・・orz
やっぱり基礎からやり直してきます。
PHPがどういう物か分かってきたら次のステップとして188さんのおっしゃったものを勉強してみます。
191nobodyさん:2006/05/03(水) 05:56:55 ID:???
ソースからインストールした(configration、make、make install) PHP 5.1.3 があります。(OSはLinux)
これをアンインストールしたいと考えております。

make install 時に表示された情報(下記)に載っているパスのファイルは消すだけで良いと聞いたことがあるのですが、
コマンドラインで 「php -i」とやると情報が表示されるということは、OSのシステムにも関連付けられているんですよね?
その情報はどうやって削除すれば良いのでしょうか?

教えて下さい。
192191:2006/05/03(水) 05:57:56 ID:???
nstalling PHP SAPI module: apache2handler
/usr/local/apache2/build/instdso.sh SH_LIBTOOL='/usr/local/apache2/build/libtool' libphp5.la /usr/local/apache2/modules
/usr/local/apache2/build/libtool --mode=install cp libphp5.la /usr/local/apache2/modules/
cp .libs/libphp5.so /usr/local/apache2/modules/libphp5.so
cp .libs/libphp5.lai /usr/local/apache2/modules/libphp5.la
libtool: install: warning: remember to run `libtool --finish /root/tmp/php-5.1.2/libs'
chmod 755 /usr/local/apache2/modules/libphp5.so
[activating module `php5' in /usr/local/apache2/conf/httpd.conf]
Installing PHP CLI binary: /usr/local/bin/
Installing PHP CLI man page: /usr/local/man/man1/
Installing build environment: /usr/local/lib/php/build/
Installing header files: /usr/local/include/php/
Installing helper programs: /usr/local/bin/
program: phpize
program: php-config
Installing man pages: /usr/local/man/man1/
page: phpize.1
page: php-config.1
Installing PEAR environment: /usr/local/lib/php/
[PEAR] Archive_Tar - already installed: 1.3.1
[PEAR] Console_Getopt - already installed: 1.2
[PEAR] PEAR - already installed: 1.4.6
Wrote PEAR system config file at: /usr/local/etc/pear.conf
You may want to add: /usr/local/lib/php to your php.ini include_path
Installing PDO headers: /usr/local/include/php/ext/pdo/
193nobodyさん:2006/05/03(水) 07:11:27 ID:???
>>191
> コマンドラインで 「php -i」とやると情報が表示されるということは、OSのシステムにも関連付けられているんですよね?
意味が分からん。PHPを消せばそんなの表示されなくなるだろう。
194191:2006/05/03(水) 07:32:07 ID:???
>>193
ありがとうございます。
php を消してから、php -i を実際にやったわけではありません。

何処のディレクトリがカレントディレクトリであっても、php -i が使えるということは、
OSのシステムに php というコマンドがインストールされているか、環境変数に設定されているということですよね?
(たぶん後者)

例えば、 php が /user/local/lib/php_hoge (これは例です) に関連付けられてたとして、
削除したら php -i はできなくなると思いますが、それでも環境変数の定義のごみが残ると思うので
それも消したいのです
195nobodyさん:2006/05/03(水) 07:40:13 ID:???
>>194
UNIXのお約束で、コマンドラインで呼び出すプログラムはどれも
/usr/local/bin等、パスを通してあるディレクトリに置かれることになってる。
だから環境変数は特に定義されていない。該当ファイルを消せば終了。
196191:2006/05/03(水) 07:45:11 ID:???
>>195
そうなんですか。
Windowsの感覚でいたので何処かで定義されていると思っていました。

おかげさまで解決しました。

ありがとうございました。
197nobodyさん:2006/05/03(水) 07:45:55 ID:???
PHPで変数に入っている値が、指定した長さまで表示して、それ以上は表示しない
ようにする方法はあるのでしょうか?
198nobodyさん:2006/05/03(水) 08:05:11 ID:???
>>197
printf("%.10s", $var);とかecho substr($var, 0, 10);とか
199197:2006/05/03(水) 09:28:11 ID:???
>>198
ありがとうございます。出来ました。
200nobodyさん:2006/05/03(水) 11:53:34 ID:???
まずマニュアルよよく嫁
201nobodyさん:2006/05/03(水) 13:51:52 ID:???
2chスレ保全スクリプト作っているんだけど書きこみ&クッキー確認が突破できない・・・
どうしたらいいんでしょう・・・
202201:2006/05/03(水) 13:52:54 ID:Zf4m7aAt
ちなみにPEARのHTTP/Request使ってます
p2参考にしようとしたけどfsockopenで叩いてるんで意味不明でした
203nobodyさん:2006/05/03(水) 15:43:09 ID:???
httpをとりあえず理解して(=fsockopen使用)ないと、無理だよ。
204nobodyさん:2006/05/03(水) 18:02:05 ID:???
たとえば、1から45までの数を配列に
$no = array('1','2','3','4','5','6'); こんな感じにいれたいのですが、手動でいれるのはさすがに大変なので、
ループ処理かなんかでうまくいれられないかと試行錯誤してみたのですが、よくわかりません。
教えてください。
205nobodyさん:2006/05/03(水) 18:16:17 ID:???
>>204
$i = 0;
while($i < 45){
$no[] = $i;
$i++:
}
print_r($no);
206nobodyさん:2006/05/03(水) 18:16:54 ID:???
207nobodyさん:2006/05/03(水) 18:19:02 ID:???
訂正
$i = 1;
while($i <= 45){
$no[] = $i;
$i++;
}
print_r($no);
208nobodyさん:2006/05/03(水) 18:20:18 ID:???
>>205
ふつー、そういうループはforをつかわね?
209nobodyさん:2006/05/03(水) 18:24:31 ID:???
>>208 やっぱり、、、

for($i=1;$i<=45;$i++){
$no[] = $i;
}
210nobodyさん:2006/05/03(水) 18:30:18 ID:???
ホントに試行錯誤したのだろうか・・・
211nobodyさん:2006/05/03(水) 18:35:13 ID:???
ここまで簡単な質問だと春厨にしても微妙だよね
212nobodyさん:2006/05/03(水) 18:38:25 ID:???
えーと、説明不足でしたね;
全角でいれたいのです。>>209まではいったんですけど
213nobodyさん:2006/05/03(水) 18:46:54 ID:???
質問させてください。
掲示板をつくっていて、たとえば名前が入力されないで投稿ボタンがおされたら

名前が入力されていません。とだけ表示するようにしたいのです(そのほかは何も表示されない)

そのような場合はどうすればいいのでしょうか?
214nobodyさん:2006/05/03(水) 18:57:24 ID:???
言ってる通りに書いてみたが、どこで詰まってるのか分からん。

if(名前が入力されているか調べる){
 通常の処理
}else{
 名前が入力されていません、と表示
}
215nobodyさん:2006/05/03(水) 19:10:19 ID:???
if($name == ""){
 ファイル書き込み
}else{
 名前が入力されていません、と表示 ここがつまっています。
}
216nobodyさん:2006/05/03(水) 19:10:34 ID:???
>>209
インクリメント逆のほうが速いらしいよ

for( $i=1; $i<=45; ++$i ){
$no[] = $i;
}
217nobodyさん:2006/05/03(水) 19:18:48 ID:???
>>215
if ($name === "") {
     ...処理...
} else {
     echo "名前が入力されていますん";
}
218nobodyさん:2006/05/03(水) 19:20:47 ID:???
ちがう逆だ。

if ($name != "") {
     ...処理...
} else {
     echo "名前が入力されていますん";
}
219nobodyさん:2006/05/03(水) 19:22:14 ID:jSHHm/CA
>>218
それだけではフォームなども表示されたままになってしまいませんか?

ページにその文字だけ表示したいのですが、不可能なんでしょうか?
220nobodyさん:2006/05/03(水) 19:29:21 ID:???
>>212
mb_internal_encoding('EUC-JP');
$numbers = array();
for ($i = 1; $i <= 45; $i++) $numbers[] = mb_convert_kana($i, 'N');

var_dump($numbers);
221nobodyさん:2006/05/03(水) 19:44:24 ID:???
>>219
おいおい、基礎から勉強した方がよくないか?
222nobodyさん:2006/05/03(水) 19:47:04 ID:???
if(投稿ボタンが押された){ // isset($_POST['submitボタンのname']) とかで判断
 if(名前が入力されている){
  通常の処理
 }else{
  名前が入力されていません
 }
}else{
 フォームの表示
}
223nobodyさん:2006/05/03(水) 20:08:15 ID:???
>>216
Cでは速いがPHPでは全然変わらないらしいよ
224nobodyさん:2006/05/03(水) 20:09:59 ID:???
>>219
エラー表示した時点でexit;って書くだけでいいじゃん
225nobodyさん:2006/05/03(水) 21:26:09 ID:???
一緒だけど個人的にdieが好き
226nobodyさん:2006/05/03(水) 22:16:46 ID:???
dieかわいいよdie
227nobodyさん:2006/05/03(水) 23:15:39 ID:igkulSN3
phpってスレッドプログラミングとかロック・排他制御機能とかってありますかね?
228nobodyさん:2006/05/04(木) 00:04:04 ID:???
学校もGWぐらい宿題出さなきゃいいのに…
229nobodyさん:2006/05/04(木) 00:10:04 ID:rpOcOacz
テキストを行を指定して読み込むにはどうすればいいのでしょうか?
230nobodyさん:2006/05/04(木) 00:18:10 ID:???
phpのfsockopenについて詳しく書かれたサイトってないんかね
231nobodyさん:2006/05/04(木) 00:18:32 ID:???
>>229
1行ずつ読み込んでいって指定行数目だけ残して後は破棄。
232nobodyさん:2006/05/04(木) 00:19:01 ID:???
>>230
UNIX一般のsocket通信と何か違うんだっけ?
233nobodyさん:2006/05/04(木) 00:21:22 ID:???
>>232
うんこ
234nobodyさん:2006/05/04(木) 00:32:41 ID:???
phpってスレッドプログラミングとかロック・排他制御機能とかってありますかね?
235nobodyさん:2006/05/04(木) 00:41:03 ID:???
>>234
PC初心者行けよww
236nobodyさん:2006/05/04(木) 01:37:59 ID:???
>>234
>>1 >>200

ここは下らねぇ質問に答えるスレだ
マニュアルも読んでない「下らねぇ質問にも値しない」質問には答える必要が無い
237nobodyさん:2006/05/04(木) 02:04:15 ID:???
いくらレベルが低くてもいいんだけど、宿題終わらすために基礎なんか知らんから要点だけ教えろって質問に萎えるな
238nobodyさん:2006/05/04(木) 06:27:36 ID:wXjTBXc2
pearスレで聞くべきかも知れないのですが、
PEAR::DBを勉強していてプレスフォルダなるものを知ったのですが、これだけでSQLインジェクションは防げると思っていいのでしょうか。
239nobodyさん:2006/05/04(木) 13:52:57 ID:???
Warning: preg_match(): Delimiter must not be alphanumeric or backslash
このエラー文ってなに?
240nobodyさん:2006/05/04(木) 14:11:27 ID:???
警告: preg_match(): デリミタ(区切り文字)はアルファベット・数字・バックスラッシュであってはいけません。

で、マニュアル(Perl互換の正規表現関数のページ)をみると、
> 式は、デリミタ、例えばスラッシュ (/) で囲まれる必要があります。
> 英数字またはバックスラッシュ(\)以外の全ての文字をデリミタと して使用可能です。
とある。
まぁよくやっちゃうのは、デリミタを使わずにいきなりパターンを書いちゃうってやつだな。
241nobodyさん:2006/05/04(木) 14:36:02 ID:???
オブジェクト指向プログラミング(とりあえずPHP4で)とやらを始めたいのですが、
PHPのオブジェクト指向に特化して解説しているサイト(もしご存じの方がいられましたら教えてください)が見つからなかったので質問させてください。

例えば
class Hoge{
var $moge;
function test($string)
{
$this->moge = $string;
}
}

とは$mogeが継承というものに当たるのでしょうか?
また、継承されたもの($this->moge)をクラス外から参照することは出来るのでしょうか?

よろしくお願いします。
242nobodyさん:2006/05/04(木) 15:08:11 ID:???
>>241
> オブジェクト指向プログラミング(とりあえずPHP4で)とやらを始めたいのですが、

 phpでやるなら、php5にした方が良いと思う。
 今持っている環境がphp4だからだと思うけど、近道のつもりが、奇妙な遠回りに
なりそうな気がする。
 xampp使えば、windowsでも手軽にphp5入れられるし。

> PHPのオブジェクト指向に特化して解説しているサイト

 php oopでぐぐれば色々と当たるけど、言語に特化せず、oopについて勉強した
方が良いと思う。書籍では、

http://www.amazon.co.jp/exec/obidos/ASIN/4822281957/qid=1146721919/sr=8-2/ref=sr_8_xs_ap_i2_xgl14/503-3901566-8967151
http://www.amazon.co.jp/exec/obidos/ASIN/4886478158/qid%3D1146722209/503-3901566-8967151

 あたりから入るのが近道かと思う。
 
 参考までに、下記も挙げておきます。

http://www.doyouphp.jp/

> とは$mogeが継承というものに当たるのでしょうか?

 継承には当たらない。

> また、継承されたもの($this->moge)をクラス外から参照することは出来るのでしょうか?

 継承に当たらないので、設問自体が不適切。
243nobodyさん:2006/05/04(木) 17:43:52 ID:???
BASIC認証のかかったページ(パスはわかっている)を読み込むにはどうしたらよいでしょう
244nobodyさん:2006/05/04(木) 18:11:04 ID:???
>>243
Basic認証のIDとパスをURLに埋め込みできなかったっけ
245nobodyさん:2006/05/04(木) 18:21:58 ID:HFt+K4sb
>>244
できました。ありがとうございます。
246nobodyさん:2006/05/04(木) 19:40:38 ID:???
<input type="hidden" name="bbs" value="morningcoffee">
<input type="hidden" name="key" value="0000000000">
<input type="hidden" name="time" value="1111111111">
<input type="hidden" name="host" value="ex11.2ch.net">
<input type="hidden" name="ttitle_en" value="g4qDe4OTgsyLUo5tgsyDYINQg2KDZ5SDgqiCpILGjnaCpILxgr6Cr4LH">
<input type="hidden" name="csrfid" value="8d17ffb713ec7ccfbe05e75acf98c6ae">
この文字列の中から全てのvalue="(?)"の値を変数の中にいれるにはどういう記述をすればいいでしょうか?
247nobodyさん:2006/05/04(木) 19:46:42 ID:???
$value = '( > < )';
248nobodyさん:2006/05/04(木) 19:47:52 ID:???
'/value="(.*)"/'
249nobodyさん:2006/05/04(木) 21:05:31 ID:ItR85wzN
phpで処理した変数をjavascriptで扱いたいのですが
下の記述だとできないっす。
実際、このようなことが出来るのでしょうか?
できるなら方法を教えてください。


function readhoge(){
var temp;
<?php
$arr = file("hoge.txt");
foreach ($arr as $line) {
?>
temp = $line;
document.hogeform.hogeelement.value = temp
<?php
}
?>
}

*readhoge()はjavascriptの関数。
htmlフォームのボタンを押した時などに
呼び出したい関数です。
250nobodyさん:2006/05/04(木) 21:15:39 ID:???
鯖の中でPHPが処理した結果をHTMLの形でブラウザに渡す。
ブラウザは受け取ったHTMLの中にJavaScriptが書かれているのを見つけるとその処理をする。
OK?
251249:2006/05/04(木) 21:22:30 ID:???
>>250
一度画面をリロードしないと無理なの?
252nobodyさん:2006/05/04(木) 22:17:14 ID:zmM8hBMe
phpってエラー表示するときは自分でページ生成した方がいいんでしょうか?
それとも、exitでエラー出力すれば良いのでしょうか?
253nobodyさん:2006/05/04(木) 22:38:00 ID:???
>>249
お前がやろうしている事はphpではできねーよ、ボケ。
phpはサーバ、jsはクライアントで動くんだから
ちょっと考えてみればわかることだろ。
確かJSPなら出来たと思ったけど・・・すれ違いの事
言わすな、カス。

最初にページを読み込んだ時に
下の記述でhiddenに情報持たせて
後はjsで処理しろ

<?php
$arr = file("hoge.txt");
foreach ($arr as $line) {
echo <input type="hidden" name="hoge[$line]" />
}
?>

254nobodyさん:2006/05/04(木) 23:11:36 ID:???
>>252
まず日本語の勉強か、exitの勉強(マニュアル)をしましょう。
255249:2006/05/05(金) 00:09:00 ID:???
>>253
カスはテメーだ
首つって償え
256253:2006/05/05(金) 00:55:23 ID:???
>>255
スマソ。許してくれ
257nobodyさん:2006/05/05(金) 01:29:30 ID:???
>>255-256
そんなことやっておもしろい?
258nobodyさん:2006/05/05(金) 01:58:16 ID:???
>>252
ページ生成=HTML形式で表示って意味?
だったらまー、どっちでも(text/htmlでもtext/plainでも)問題はないけど、
システムの致命的エラーならともかく、俺はちゃんとHTMLでデザインするかな。
あと、携帯だとHTML形式にしとかないと表示してくれないのがあったりするし。
259nobodyさん:2006/05/05(金) 02:03:35 ID:???
>>249
function readhoge(){
var temp;
<?php
$arr = file("hoge.txt");
foreach ($arr as $line) {
?>
temp .= '<?=str_replace("'", "\\'", rtrim($line))?>';
<?php
}
?>
document.hogeform.hogeelement.value = temp
}
こんな感じかね?
で、このPHPが実行されるとページ上には
function readhoge(){
var temp;
temp .= 'aaaa';
temp .= 'bbbb';
temp .= 'c\'cc';
temp .= 'dddd';
document.hogeform.hogeelement.value = temp
}
という内容のJavaScriptが生成されることになる…と思う。
260259:2006/05/05(金) 02:05:58 ID:???
ああ、間違った。.= はPHPの文字連結じゃん。
temp .= '<?=str_replace("'", "\\'", rtrim($line))?>';

temp += '<?=str_replace("'", "\\'", rtrim($line))?>';
に差し替えで。(で、合ってたよな??)
261nobodyさん:2006/05/05(金) 13:15:41 ID:40gAgq8p
文字化け問題が発生して困っています。
form.php----------
<form name ="form1" method="post" action="5-1-2.php">
本文:<br>
<textarea name="contents" cols="30" rows"6"></textarea>
<br>
<input type="submit" value="送信">
</form>

5-1-2.php--------
echo nl2br($_POST["contents"]);

っていう簡単なのを作ったのですが。
$_POST["contents"]が微妙に文字化けします。
例えば
 表示されてますか?
 どんな感じですか?
 いや〜ん
って入れて送ったら。
 表\示されてますか?
 どんな感じですか?
 いや〜ん

ってなるんです。
php.iniの内容は
mbstring.internal_encoding = SJIS
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
です。
あと、PHPの保存はShift-JISで保存しています。
262nobodyさん:2006/05/05(金) 13:17:00 ID:???
>>291
基礎を勉強しなおせ
263nobodyさん:2006/05/05(金) 13:21:28 ID:???
>>261
それは文字化けじゃなくて、エスケープされてるの。
せっかくmbstringを見るところまでわかってるんだから、どこでエスケープされていて、
表示のときはどこでエスケープを外すか、>>291を見習って基礎から勉強しては?
264nobodyさん:2006/05/05(金) 13:22:41 ID:40gAgq8p
>>262
基礎で躓いてるんです。。。orz
265nobodyさん:2006/05/05(金) 13:48:06 ID:???
スクリプトs-jisで書くのはやめよう。
吐くときだけs-jisにすればいいよ。
266nobodyさん:2006/05/05(金) 14:06:59 ID:40gAgq8p
>>263
解決しました。ググッたらすぐできました。
ご迷惑かけました。

>>265
EUC-JPで保存し
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.script_encoding = EUC-JP

としたら激しく文字化けするんです。。。orz
267nobodyさん:2006/05/05(金) 14:21:20 ID:???
EUC-JP EUC_JP
SJIS ShiftJIS
混在しててワケワカメヽ(゚ヮ。)ノ

最近のはどっちでもOKだっけ?
268nobodyさん:2006/05/05(金) 15:24:38 ID:???
>>238
ちゃんとエスケープしてくれてるし大丈夫なんじゃないかなー。
俺はPEAR::DBにまかせっきりだな
269nobodyさん:2006/05/05(金) 15:55:48 ID:???
教えてくださいませ

define (SELF_DIR, "bbs.php");

print <<<_EOF
<form action="SELF_DIR" method="POST">

上記のような場合、actionの値をdefine定数で設定する方法はあるのでしょうか?
クォートで囲むと文字列になっちゃうし・・・
ちなみに定数でなく変数だと文字列とならずにちゃんと変数の値が反映されます。
270nobodyさん:2006/05/05(金) 16:03:04 ID:???
>>269
PHPの仕様。あきらめて一度変数に入れてください。
271nobodyさん:2006/05/05(金) 16:06:37 ID:???
>>270
素早い回答ありがとうございます

そうなんですかorz
全部定数で統一したかったのに(;つД`)w
272nobodyさん:2006/05/05(金) 16:09:00 ID:???
PHPってCの流儀とPerlの流儀がごちゃ混ぜで一部のポリシーが噛み合ってないよな
273nobodyさん:2006/05/05(金) 16:21:49 ID:???
>>272
全て適当でおkがポリシーじゃない?
274nobodyさん:2006/05/05(金) 16:37:22 ID:???
4.4.0のデフォでNoticeエラーONがまたその辺を微妙にした気はするな
275nobodyさん:2006/05/05(金) 16:41:11 ID:???
>>269
俺はヒア文字使わないから文字連結使って定数表示させてる
276nobodyさん:2006/05/05(金) 17:28:54 ID:???
スクリプトの中にドキュメント書いたりしないしな
277nobodyさん:2006/05/05(金) 20:01:26 ID:???
エラーメッセージとかは?
278nobodyさん:2006/05/05(金) 21:13:09 ID:???
システムエラーは全部error_logに吐き出すようにしてる。
ユーザに表示しないといけないエラーはエラー一覧のテンプレート作って
セッション>クッキー>GETでエラーIDを引き渡して表示するようにしてる。
ちゃんとMVCになるように分担させてるよ。
279nobodyさん:2006/05/06(土) 00:40:00 ID:FhNuLJWk
初心者ですんません 教えてください。↓これ成り立ちますか?
else if (isset($_POST['one_all']))
{
$model1 = ($model->main_one_record($_POST));
$id = $model1->risults['main_id'];
$model2 = ($model->items_search($id));
$model3 = ($model->bbs_search($id));
$view->bbs_view($model1,$model2,$model3);
}
3つのfunctionまとめて$model内でresults1,results2,results3,を作ったほうが良さそうです?
$viewの中で $model->results1 $model->results2 $model->results3って呼び出す感じで..
何書いてるのか解かんねくなってき;
解かってくれた方お願いします。
280nobodyさん:2006/05/06(土) 00:45:29 ID:0AyY+NP8
phpより日本語を覚えろ
281nobodyさん:2006/05/06(土) 00:50:27 ID:???
>>279
何を持って「成り立たない可能性があるのか」を心配してるのか、お前の頭の方が意味わからん。
282nobodyさん:2006/05/06(土) 00:58:42 ID:FhNuLJWk
思い付きで質問してすんませんでした。
283nobodyさん:2006/05/06(土) 01:35:12 ID:N1pGuqAz
ImageCopyResampledで画像をリサイズしたいのですが
小さくすると表示される部分も小さくなったり、
大きくすると黒い部分が出たりして画像そのものをうまく伸縮できません。
使い方が間違っているのでしょうかよろしくお願いします

$sizer1="任意の数字";
$sizer2="任意の数字";
$img2=file_get_contents($icount);
$im2=imagecreatefromstring($img2);

imagejpeg ($im,"./doc/" .$file);
$size=getImageSize("./doc/" .$file);

$img_out=ImageCreateTruecolor($sizer1,$sizer2);
ImageCopyResampled($img_out,$im2,0,0,0,0,$sizer1,$sizer2,$size[0],$size[1]);

ImageJPEG($img_out,$aak."test.jpg");
imagedestroy($img_out);
284nobodyさん:2006/05/06(土) 04:56:45 ID:g3SbVbCd
(過去ログ倉庫以外の)当スレをざっと見たのですが
低レベルすぎる質問なのか、どこにも無かったので・・・
既出だったら本当にすみません。

Apacheをインストールしようとしたら

Installation Wizard Interrupted

The Installation Wizard was interrupted
before Apache HTTP Server 2.0.55 could be completely installed.

Your system has not been modified.
To complete installation at another time, please run setup again.

と出てインストール出来ません。
どうすればいいのでしょうか・・・

OSはWinMX プロフェッショナル
バージョンは2002 Service Pack 2 ・・・・です。

PC初心者です _| ̄|○
285284:2006/05/06(土) 05:30:30 ID:eGRayY93
OSを最新バージョンにアップデートしても駄目でした。
言語の設定が問題なのでしょうか・・・
286nobodyさん:2006/05/06(土) 06:39:03 ID:???
>OSはWinMX
>OSはWinMX
>OSはWinMX
>OSはWinMX
>OSはWinMX
287nobodyさん:2006/05/06(土) 07:51:32 ID:???
>>284
どこがPHPの質問?
どこがWebprogの質問?
288nobodyさん:2006/05/06(土) 07:55:08 ID:???
>>287
Web制作板の住民がこっちに誘導していたが…
289284:2006/05/06(土) 08:08:29 ID:8bhnTskp
思いっきり板違いですね_| ̄|  ○
PC初心者板往ってきます・・・・
290nobodyさん:2006/05/06(土) 08:28:23 ID:???
>>285
WinMXがだめならWinnyにしたらいいよ
291nobodyさん:2006/05/06(土) 10:44:05 ID:???
>>284
>OSはWinMX
>OSはWinMX
>OSはWinMX
>OSはWinMX
>OSはWinMX
292nobodyさん:2006/05/06(土) 13:45:34 ID:???
ちょw
293nobodyさん:2006/05/06(土) 14:51:23 ID:???
交換しかできないOSってwww
294nobodyさん:2006/05/06(土) 15:27:44 ID:JnZkkTKP
>>284
すげぇww
295nobodyさん:2006/05/06(土) 15:33:10 ID:???
P2P専用OSがついに出たのかwwwww
しかし、そんなエラー見たことないな。原因が分かったらフィードバックしてもらいたいな
296nobodyさん:2006/05/06(土) 16:02:00 ID:0AyY+NP8
WinMX
297nobodyさん:2006/05/06(土) 16:06:26 ID:???
もしかしたらApacheのディレクトリが邪魔してるのかも?
C:の直下とかProgramFilesの下とかにApacheGroupとかそれっぽいのがあるなら
一回それを消してから再チャレンジしてみて
MySQLはそうだった
298nobodyさん:2006/05/06(土) 20:20:01 ID:???
前に1度インストールしたことがあってしかもそれがサービスで動いてたら
そりゃ上書きでインストールはできないんじゃないか?
停止させてアンインストールしてからインストール、が常道かと。
299nobodyさん:2006/05/06(土) 20:36:05 ID:???
PHP 5.1.3 Released 直後に、PHP 5.1.4 Released とどんどん更新されているけど、

特に理由がない限り最新版を使うことをお奨めする。
めんどくさがらずアップデートしよう。

たまに、make install の前に Apache を停止しなければならないと思っている人もいるけど、その必要は通常は無い。

以下、Linux系のOSでのやりかた。

1. 新バージョン の php(tarボール)をダウンロード
方法は環境によって違う。
良く分からなければ、WinでDL&ウイルスチェックしてから、FTPとかで転送して、cp で適切な場所にコピー。

2. ハッシュ値の検証
$ md5sum -b ファイル名 (-b はバイナリを意味する。通常 -b は無くても結果は同じ。)

3. 旧バージョン の configre の構成が記録された config.nice を展開したディレクトリにコピーして実行
$ cp コピー元 コピー先

4. コンパイルする
$ make

5. rootになってインストールする
$ su -
# make install

6. Apacheの再起動をする(再起動しないとApacheは応答しない状況のままになる)
# service httpd restart など
300nobodyさん:2006/05/06(土) 20:44:42 ID:???
次スレのテンプレに追加しようぜ
301299:2006/05/06(土) 20:57:07 ID:???
解凍が抜けてた

2.5. 解凍
$ tar -xzf ファイル名.tar.gz (-x アーカイブからファイルを取り出す; -z gzipでの圧縮/展開; -f アーカイブのファイル名を指定する;)

ちなみに、-z は環境によっては使えないので、その場合には、tar コマンドの実行後、

$ gzip -dv (-d 圧縮ファイルの解凍; -v 状況をメッセージとして出力;)
302nobodyさん:2006/05/06(土) 21:03:01 ID:???
>>299
Windows系OSでのアップデート方法もFAQよろ。
303nobodyさん:2006/05/06(土) 21:20:15 ID:???
>>286
ネタだとしてもワロタ
304nobodyさん:2006/05/06(土) 21:34:03 ID:???
時代はsquirtなのにね。













とか書こうとおもったらwww
305nobodyさん:2006/05/06(土) 21:35:53 ID:cPHKw6gt
とあるディレクトリに複数入ってるファイルの拡張子を調べたいのです。
わかっているのは拡張子を抜いたファイル名だけです。
なにか素敵な関数はないでしょうか?
片っ端からpreg_matchとかするしかないでしょうか?

何しろファイルが多いのでやりたくない。
具体的にはファイル名はわかってるんだけど、それがjpgなのかgifなのか、
はたまたpngなのか、わからんとです。
ああ、これではファイル名がわかってるとは言えないですか、そーですか。
306nobodyさん:2006/05/06(土) 21:42:24 ID:???
>>305
拡張子なんつーのはDOSの遺産
glob("ファイル名.*")
307305:2006/05/06(土) 21:52:36 ID:???
>>306
うわーん、ありがとうー

実際シェルとか、よくわかってないっす。
php歴5ヶ月な厨房なもんで。
ありがとうー
308nobodyさん:2006/05/06(土) 21:54:03 ID:???
初めまして。
「鏡の国」の2ch風掲示板のCGIを、
自分のレンタルサーバーにて利用させてもらおうと検討している者ですが、
投稿者のログ(投稿者のip、投稿日時、内容等を記録したもの)などは、
投稿自体が削除されても残るのでしょうか?

初歩的な質問で申し訳ありませんが、
知ってる方がいらっしゃれば、よろしくお願いいたします。
309nobodyさん:2006/05/06(土) 21:55:22 ID:???
マルチ市ね
310nobodyさん:2006/05/06(土) 22:03:33 ID:???
>>308
んなもん、ここで聞くより実際に試してみた方が早い
311nobodyさん:2006/05/06(土) 22:26:09 ID:???
>>308
マルチいくない

http://script.s16.xrea.com/2ch/test/read.php/php/1061295630/233

233 名前:名無しさん@PHP :2006/05/05(金) 20:50:13 ID:xeml72SQ
初めまして。
「鏡の国」さんのこの【PHP 2chBBS】を自分のサーバーで
使わせてもらおうと思っている者なのですが、
投稿ログ(投稿内容、投稿日時、投稿者のipなどの記録)は、
どの程度の期間残るのでしょうか?

また、投稿を削除したときに、その投稿ログは残るのでしょうか?


『実際に使ってみて試せばいいじゃないか』と思われるかもしれませんが、
回答よろしくお願いします。
312nobodyさん:2006/05/06(土) 22:28:53 ID:???
>>299
逆だろ
一般ユーザーはある程度枯れていて実績のある方を選択すべきだろ
闇雲に新しいものを勧めるのは問題。 よってそのテンプレ案は却下

現に PHP 5.14 色々問題でてるじゃん
313nobodyさん:2006/05/06(土) 22:41:48 ID:???
5.1.4の問題ってどこで話題が出てる?
314nobodyさん:2006/05/06(土) 23:04:51 ID:???
>>312
はぁ?
古いバージョンにはバグやセキュリティホールがあるわけですが。

PHP 5.1.4 は PHP 5.1.3 のバグフィックス版。
そして、PHP 5.1.2 以前にはセキュリティホールがある。

従って、5.1.2 以前の利用は推奨されるわけがない。
そして、5.1.3 と 5.1.4 ならバグフィックス版の 5.1.4 の方がバグは少ないだろう。

従って、5.1.4が推奨される。


315314:2006/05/06(土) 23:05:39 ID:???
勿論、セキュリティホールがあっても自分のスクリプトが該当しないことの確認が取れてればいいが、
それをするスキルがないのならば、当然アップグレードすべき。
316nobodyさん:2006/05/06(土) 23:18:47 ID:???
まあ、マイナーバージョンアップはそのため存在するんだしな。
317nobodyさん:2006/05/06(土) 23:22:24 ID:???
>>312
それはメジャーバージョンアップの話じゃないのか?
318nobodyさん:2006/05/06(土) 23:35:34 ID:???
>>314
PHPの場合、既知のバグが減るだけで全体のバグはあまり減らない。
既知のバグは既知のノウハウで対処もできるが何が飛び出てくるか分からない新規のバグは非常に怖い。

で、PHP以外も含めて、開発の現場ではリリースされたばかりの十分に確認の取れてない
プラットフォームを本番で選ぶやつはかなりの間抜けだと思う。
入れるとしてもあくまで動作検証を目的とした実験・テストインストールでしょ。
そんなのいきなり本番で差し替えるような人はリスク意識がものすごく低い人にしか見えないよ。
せめて半月〜1ヶ月は様子見ろって。
319nobodyさん:2006/05/06(土) 23:51:30 ID:???
>>283
imagecreatefromstringじゃなく
imagecreatefromjpegでいけるんじゃないかな
320nobodyさん:2006/05/06(土) 23:54:22 ID:???
>>314
例えば4.4.1は4.3.11の致命的セキュリティホール対策版だったが
これはmb系があちこちバグりまくっててかなり使い物にならなかった。
選ぶなら4.4.2か4.3.11のどっちかであって4.4.1はたとえ特定の
セキュリティホールが潰されてたとしても選ぶものではないと思う。
また、この4.4.1は出て数日で致命的なバグが見つかってすぐにパッチまで出た。
毎回こんな致命傷リリースばかりではないだろうが、少しは様子を見た方がいいよ。
>>318
セキュリティホールは公開されるとそれを狙ったワームやクラックツールが出回るから、
ネットワーク系のプラットフォームはもう少し早いタイミングで差し替えた方がいいと思う。
321nobodyさん:2006/05/06(土) 23:57:58 ID:???
なんだかんだでどっちもどっちで正しいんだよな
そんな俺はいまだにWinXPのSP2は入れてない
322nobodyさん:2006/05/07(日) 00:03:12 ID:???
結論をまとめると、「PHPのバージョンアップは信用できない」かな?
323nobodyさん:2006/05/07(日) 00:06:21 ID:???
PHP自体よほどのことがない限り選んではいけない。
324nobodyさん:2006/05/07(日) 00:07:33 ID:???
>>321
くだらねぇ自慢してないでXPSP2プリインストール機でも買え。
325nobodyさん:2006/05/07(日) 00:15:46 ID:???
>>322
そうだね。もうちょっと検証してからリリースすればいいのに、
全然確認もしないでユーザにテストさせてるとしか思えない節が…
326nobodyさん:2006/05/07(日) 00:19:32 ID:???
>>325
セキュリティホールの修正は検証する時間なんてないだろ。
exploitが公表されたら、即座にリリースすべき。

Microsoftは緊急レベルの脆弱性でも特別な場合を除いて
月1回アップデートで管理者の手間を削減しているが、そのせいで、影響を受けやすいIEは修正までの間に攻撃を受けるので、
常に公開されている最新のパッチをあてていても、セキュリティレベル中でアダルト、アングラサイトを巡回すればすぐウイルス、スパイウェアに感染してしまう。
(表示されるActivX等のセキュリティ警告では全て「いいえ」を選んだ場合でも)
327nobodyさん:2006/05/07(日) 03:19:54 ID:???
>>326
それを考慮すると
「致命的セキュリティホール修正のリリースは信用できないからしばらく待て。
普通に機能改良のときのリリースなら安心していいからすぐ入れて大丈夫」
ってことになるのかな?(そりゃまた微妙な…)
328nobodyさん:2006/05/07(日) 06:14:52 ID:???
本当に最新版がほしいならCVSからインストールすればいいよ
どうなっても(゚听)シラネ
329238:2006/05/07(日) 06:33:15 ID:kZFk4AOO
>>268
遅くなりましたがレスありがとうございます。

これだけでいいんですかね。
これだけでいいのだとするとSQLインジェクション起こしてるサイトってこんな事もやってなかったって事なんでしょうか。。
ちょっと信じられなかったので質問してみました。
改めてレスありがとうございました!
330nobodyさん:2006/05/07(日) 11:04:33 ID:???
ここを見ているとよく「レッツPHP!」は古いから参考にならないとの意見がありますが、
カレンダーにある8桁数字のクエリ処理などは、もっといい方法ありますでしょうか?

if(ereg("^[0-9]{8}",$qry)){
$yr = substr($qry,0,4);
$mon = substr($qry,4,2);
$dy = substr($qry,6,2);

$today = getdate(mktime(0,0,0,$mon,$dy,$yr));
// 普通は今日
}else{
$today = getdate();
}
331nobodyさん:2006/05/07(日) 11:48:55 ID:???
>>330
普通は$mon,$dy,$yrそれぞれをクエリで渡す
332nobodyさん:2006/05/07(日) 12:33:58 ID:???
eregはすでに非推奨
333nobodyさん:2006/05/07(日) 12:42:19 ID:???
あーごめん嘘。
334nobodyさん:2006/05/07(日) 12:43:23 ID:???
// *.php?2006-05-07
list($y, $m, $d) = explode('-', $_SERVER['QUERY_STRING']);

こんなん駄目?サニタイズが面倒か
335nobodyさん:2006/05/07(日) 13:52:42 ID:???
PDOで

$sql="SELECT * FROM tbl WHERE name LIKE %:name%";
$stmt->paramBind(":name")

みたいな事をしたいんだけど、うまくいかない。
%%ってどういう扱いになるの教えて
336nobodyさん:2006/05/07(日) 14:46:29 ID:???
WHERE name LIKE '%:name%'";
シングルコーテ????
337nobodyさん:2006/05/07(日) 15:35:02 ID:???
>>330
レッツが古いって言っても主に全体の作り方とか設計とかの話だから
個々の記述については使えるとこは使えるんじゃないかと思うよ。
その辺はもう個人の好き好きだから。
個人的には「8桁の数字」ってのが扱いにくいから「-」区切りとかにして
strtotimeでUNIX秒変換しちゃうけど、これはこれでアリなんじゃないのかな。
まー自分なら
if(preg_match('/^(\d{4})(\d{2})(\d{2})/', $qry, $m)) {
$today = getdate(mktime(0,0,0,$m[2],$m[3],$m[1]));
}
とか書いちゃいそうだけど。
338nobodyさん:2006/05/07(日) 15:46:21 ID:???
>>335
%はファイル名のワイルドカード「*」とほぼ同じ。
それより、文字列データはちゃんと '〜' で括らないと動くわけがない。
339nobodyさん:2006/05/07(日) 16:53:03 ID:???
330じゃないけど、速度的にもsubstrで取り出すより337の正規表現のがいいかな?
340nobodyさん:2006/05/07(日) 16:57:44 ID:???
時と場合によるでしょ
341nobodyさん:2006/05/07(日) 17:12:12 ID:???
>>339
先にeregでチェックしてる時点でレッツのも速度的にはあんまり速くないし。
それが無ければsubstrの方がやっぱ速いと思うよ。
ただ、ereg+substr版は桁と配置の情報が何箇所にも分散してるから
うっかりミスでバグを出しやすいのがイヤだな〜と思う。
342nobodyさん:2006/05/07(日) 17:30:51 ID:???
速度!速度!ってドンだけシビアなサイト作ってんだ?ってェのw
343nobodyさん:2006/05/07(日) 17:42:18 ID:???
入り口のパラメータチェックくらいなら気にするようなものじゃないよね。
これが50万回ループの中に入ってる処理とかならさすがに神経質になるけど。
ま、そういうボトルネックになる場所でタココード書かないために
普段から意識しておくのは悪いことじゃないと思う。
344nobodyさん:2006/05/07(日) 18:14:39 ID:???
やっぱ同じ結果が得られても、ロジック的に変な処理方法で遅かったら嫌じゃん
さっきのクエリチェックくらいなら、(phpMyAdmin風)0.0001も変わらんかもしれんけどね。


携帯サイトとかだとさ、出力するHTMLを極限まで少なくしたいから(パケット節約)
GETでURL付加やHIDDENでPOSTしたりとか、そういう時にクエリを無茶して
処理側で頑張ってる場合が多いと思う。

んで処理側が遅いと、同時接続とかあった場合に一瞬でも待たせることになり
相手がナローバンドで尚且つ移動端末な「携帯」だと、お客を逃す場合もあるかもしれない
345nobodyさん:2006/05/07(日) 18:27:44 ID:???
>>344
まぁ、言いたいことは判らなくもないし、異論は無いけど、
うちでやっているサイトはどれも、ここ最近は全てパケとか一切無視でやってるよ
まぁau公式サイトがほとんどだけどw
346nobodyさん:2006/05/07(日) 18:29:15 ID:???
>>345
ユーザの声を聞く気のないサイトならそれでも別にいいんじゃね?
どんだけ遅かろうとパケ代かかろうと。
大手なんてどこも評判良くないしね。
347nobodyさん:2006/05/07(日) 19:00:15 ID:???
通信速度3M+定額の時代なのに
348nobodyさん:2006/05/07(日) 19:11:19 ID:???
au は 第3世代(win)が2.4Mbpsだよね?
docomo は第2世代(mova)がまだ多いからなあ
voda はウンコということしか分からん
349nobodyさん:2006/05/07(日) 19:15:35 ID:???
「ユーザーの声を聞く」とか言っている時点で、
利益の出る様なコンシューマサービスの提供者側にはなれない罠
勝手サイトで好き勝手にやってろって幹事
350nobodyさん:2006/05/07(日) 19:24:02 ID:???
憎まれっ子世に憚ると言ってだな
351nobodyさん:2006/05/07(日) 19:31:31 ID:???
>>349
うちはまぁたかだか会員20万人程度の小規模携帯サイトなので
お客さんのクレームの声は結構切実なんすよ
352nobodyさん:2006/05/07(日) 20:41:55 ID:IxA6YfPN
PHPのheader()を用いて、Last-Modifiedを出力しようと思い:

if (getlastmod() != FALSE) {
       header ("Last-Modified: " . date("D, d M Y H:i:s", getlastmod()) . "GMT");
}

しかし出力結果は[ Last-Modified: Thu, 01 Jan 1970 00:00:00 GMT
 ]になってしまいます。
ですがエラーは出ていません。
どうしたらよろしいのでしょうか?
353nobodyさん:2006/05/07(日) 20:53:14 ID:???
>>352
スクリプトの更新日なのであれば
filemtime($_SERVER['SCRIPT_FILENAME'])
のほうが確実じゃまいか。
354352:2006/05/07(日) 21:00:01 ID:IxA6YfPN
>>353
現在のスクリプトの最終更新時刻を取得するのに、getlastmod() と filemtime() って区別する必要はあるのでしょうか?
わざわざ $_SERVER["SCRIPT_FILENAME"] までしても filemtime()の方が確実な理由ってを教えて頂けませんでしょうか。
355352:2006/05/07(日) 21:04:08 ID:IxA6YfPN
あ、でも確かにできましたね。
同じUnixタイムを吐くはずなのになんでだろ??
356nobodyさん:2006/05/07(日) 21:26:41 ID:???
357352:2006/05/07(日) 21:48:15 ID:IxA6YfPN
>>356
ありがとうございました。
358nobodyさん:2006/05/07(日) 23:26:35 ID:???
死ぬほどすれ違いだけど、お前ら自宅でどんなOAデスク使ってる?
俺、8000円ぐらいで小さな奴使ってるんだけど、ノートと本を広げたらもう
何も置けないぐらい小さいんだよ。
何かお勧めある?抽象的だけど、ディスプレイが二つぐらい置けるような大きさキボンヌ
359nobodyさん:2006/05/07(日) 23:35:30 ID:???
アホか。
360nobodyさん:2006/05/07(日) 23:43:57 ID:???
>>358
SOHOのスレにでも行って聞いてみれば?
361nobodyさん:2006/05/07(日) 23:51:05 ID:???
ディスプレイ二つって・・・w
モニターを並べたいのか?
両袖机でも使えば?黒壇使ってたらベストかもな

おれは脇机を利用してるけどな
362357:2006/05/07(日) 23:58:23 ID:???
レスサンクス。
いや、マジでスレ違いごめんね。スレ違いの純情じゃ済まされないのは分かってる。
なるほど、脇机もひとつの手だな。ちょっとSOHO系のスレ探してみる。
363nobodyさん:2006/05/08(月) 00:50:39 ID:OM28BwPF
ファイルポインタを最後の行に会わせてその行の情報を読み込みたいのですが
どういう風にしたらよいでしょうか
364nobodyさん:2006/05/08(月) 01:26:21 ID:???
自力で最後の行を探してください。
PHPや他の言語でもいいですが、最終的にOSが提供している関数のようなものを
呼び出すことになるのですが、OSは行数のカウントやそれぞれの改行位置まで把握していないので
当然ながらそれに該当する関数(のようなもの)を持ち合わせていません。

ファイルの最後の方から一定のサイズづつ読み出して、
そこに改行コードが含まれているかをチェックし、それが見つかるまで繰り返す。
見つけたらそれまでに読み出したものを返す、というのが具体的な手法になります。
ファイルサイズが小さければ、先頭から調べる(一行だけ読み込む関数をファイル終端まで繰り返す)というのもありでしょう。
365nobodyさん:2006/05/08(月) 02:45:41 ID:???
>>363
そこそこなサイズなら
$a = file("file");
echo $a[count($a) - 1];
とか
366363:2006/05/08(月) 03:20:12 ID:???
>>364,365
出来ました!(TдT)アリガトウございました!
いろいろサイトを回ってみたんですがずっと分からなくて困ってました
ほんとにありがとうございました
367nobodyさん:2006/05/08(月) 04:43:58 ID:???
exec()でimagemagickを使ってます。
時々、リターンコードが成功を返しているのに、
画像ファイルが生成されていないことがあります。
これはimagemagickが不安定なのでしょうか?
同じような現象に会った人、いますでしょうか?
368nobodyさん:2006/05/08(月) 05:39:53 ID:???
>>367
exec使っての問題なら、環境書かないと。OS、PHPおよびImageMagickのバージョンなど。
369nobodyさん:2006/05/08(月) 11:56:11 ID:???
php4.4.2なのですが
trigger_error()が1023バイトしか取ってくれないんですが、
どこをいじればいいでしょう?
log_errors_max_len = 0;
にはしてるんだけどなぁ…

error_reporting(E_ALL);
set_error_handler('test')l

trigger_error(str_repeat('a', 1024). 'b');

function test($no, $str, $file, $line) {
echo $str. "\n";
echo strlen($str). "\n";
}
370nobodyさん:2006/05/08(月) 12:06:07 ID:???
>>369
log_errors_max_lenじゃない?
371370:2006/05/08(月) 12:09:33 ID:???
いけね。そこは0にしたって書いてあった…
372369:2006/05/08(月) 12:25:42 ID:???
その辺くらいしか思いつかないんだけど、
うまくできた人いたら、報告してもらえるとうれしいす
373nobodyさん:2006/05/08(月) 15:05:08 ID:wZI7Xo6A
phpのコードを書いてて気づいたのですが、
utf-8と書くときと、utf8と書くときがあります。
文字コード系の関数を使うときはutf8(ハイフン無し)で
htmlのヘッダのcharsetはハイフン無いと読まなかったり。
このへんの正確な定義はなんですか?
374nobodyさん:2006/05/08(月) 15:21:47 ID:w88YtdTU
ブラウザ側にheaderを送信して、
その後に時間のかかる処理をしたいのですが、どうしたらよいでしょうか?

構造では、
Locationで別のページへリダイレクトさせておき、
リダイレクトさせた後、サーバー側で残りの時間のかかる処理を終わらせたいのです。

現状だと、Locationを指定してもプログラム全てが終わらないとheaderが実行されてないような感じです。

PHP4.4.2 + Apache2.0 Handlerを使用しています。
375nobodyさん:2006/05/08(月) 15:52:55 ID:???
>>373
>utf8と書くときがあります。
お前が勝手に書いてるだけだろ
ハイフンは入れましょう
http://jp.php.net/manual/ja/ref.mbstring.php#mbstring.supported-encodings
376nobodyさん:2006/05/08(月) 16:16:48 ID:???
apacheのログから転送量を測るログを作ってるんですが、
処理済のログを加算しない方法、どんな方法があるでしょうか?
たとえば、1か月分1つのログファイルにためるとして、
15日/月末の半月毎に測定プログラムを走らせる場合です。
月末に処理するときは15日までを加算してはだめですよね。

ぱっと思いついたのが別のファイルに処理済の日数を書いておいて
それを処理前に読み込んで処理開始の日を決める、
という方法なのですが、非常にまんどくさいです。
もっとシンプルでよい方法ありましたらきぼんぬ
377373:2006/05/08(月) 16:35:36 ID:wZI7Xo6A
>375
えー!そうだったのか。レスどうもです。
でもutf8って書いてあるサンプルコードとかある気がします。
utf8でググってもたくさん出るし。
ハイフンなしは通常ありえないんですかね?
378nobodyさん:2006/05/08(月) 16:51:30 ID:???
いちおう
Shift_JIS
EUC-JP
UTF-8
が正式?
mb_系の関数はsjisとかテキトーに指定しても判別してくれるけどね。
379nobodyさん:2006/05/08(月) 16:52:46 ID:???
ちゃんとIANA標準に合わせてるのかな?そんな感じだね。
380nobodyさん:2006/05/08(月) 16:54:52 ID:???
381nobodyさん:2006/05/08(月) 18:40:52 ID:???
>>369
>log_errors_max_len = 0;

上記を設定したあと、アパッチ再起動した?
382nobodyさん:2006/05/08(月) 18:41:35 ID:???
>>377
エイリアスだからどっちでもいいの。
383nobodyさん:2006/05/08(月) 18:43:31 ID:???
たしかに、sjis、Shift-JIS、EUC、EUC-JP、
ja、Japaneseなどなど混在しててイラッと来るときはある。

統一してほしいよね。
384nobodyさん:2006/05/08(月) 18:47:13 ID:???
>>382
ブラウザへの指定(HTMLのヘッダ)はエイリアス関係ないよね?
385nobodyさん:2006/05/08(月) 18:48:00 ID:???
「HTMLのヘッダ」じゃなくて「HTMLのヘッド(head)」が正確ダタ
386nobodyさん:2006/05/08(月) 18:48:06 ID:wZI7Xo6A
phpで商品管理システムみたいのをつくってます。
値段を入力するところで、桁数を表すカンマ付きで入力すると、
5,000円よりも50円の方が高くなって
値段順ソートができません。
こういう場合は一般的にどうしているのでしょうか?
データ型はfloatとvarcharを試しましたがイマイチです。
387nobodyさん:2006/05/08(月) 18:54:32 ID:???
>>386
カンマを外す
388nobodyさん:2006/05/08(月) 18:56:38 ID:???
ftp_put() 等でサーバーへファイルをアップロードするプログラムを作るつもりです。
ftpってセキュリティの面で色々問題ありかと思うのですが、
そのプログラムへのアクセスをHTTPS通せば、
セキュリティ的にはほぼ問題なくなる(盗み見されなくなる)と考えてよいでしょうか?

MyPC--(HTTPS)--Server--(localなんで覗き見気にしなくて良い)--アップロード先

間違いがあったら指摘よろしこ
389nobodyさん:2006/05/08(月) 19:00:39 ID:???
>>388
×盗み見されなくなる
○盗み見されても暗号化されてっから解析に多大な時間がかかる
390386:2006/05/08(月) 19:14:47 ID:wZI7Xo6A
>387
最悪それでしょうがないかなと思ってます。
phpのスクリプト側で何文字目にカンマとか
表示するときにそういう処理をするのかなとも思ったのですが
結構手間なので。
なんかいい方法ないですかね?
391nobodyさん:2006/05/08(月) 19:18:30 ID:???
>>390
number_format()
392nobodyさん:2006/05/08(月) 19:18:42 ID:???
393374:2006/05/08(月) 19:21:35 ID:???
本スレのほうでもう少し詳しく質問してみようと思います。
無駄レスすみませんでした。
394369:2006/05/08(月) 21:40:26 ID:a7rUGxAu
>>381
サーバーのはいじれないからWinでテストしてるんですが、
そっちだと駄目なんだよね…
unix系ならいくかなぁ
395nobodyさん:2006/05/08(月) 22:33:10 ID:???
>>392
それ
396376:2006/05/08(月) 23:29:30 ID:???
レスきぼんう
397nobodyさん:2006/05/09(火) 02:06:25 ID:???
PHPに関係ないし
398nobodyさん:2006/05/09(火) 12:54:15 ID:???
echo date("Y年m月d日");

とやると普通は「2006年05月09日」と表示されるはずなのですが、

「2006・05月09日」と年が・に化けてしまいます。
Shift_JISエンコードなのですがどうすれば宜しいでしょうか、ご伝授お願いします。

ちなみにphpはバージョン5.1.2です。(Linux版)
399nobodyさん:2006/05/09(火) 13:20:06 ID:???
>>398
PHP5.1.0からdate()のフォーマットに"N"が追加された。
sjisの"年"は"N(0x4E)"を含んでいるのでそうなる
対策は文字コードを変える
または
$year = date("Y");
echo $year . "年" . date("m月d日");
400nobodyさん:2006/05/09(火) 13:21:43 ID:???
>>399
ありがd。 ってそういうことだったのね(´;ω;`)ブワッ
sjis派の自分としては何かメンドクサイことになりそうです。。。
401nobodyさん:2006/05/09(火) 13:32:34 ID:???
>>398
試行錯誤の結果こうなった
マンドクセのは変わらないか
echo date("Y\x94\Nm月d日");
402nobodyさん:2006/05/09(火) 13:41:06 ID:???
これからは
echo strftime("%Y年%m月%d日");
を使うことにする
403nobodyさん:2006/05/09(火) 13:49:39 ID:???
>>401
んー何故かSyntaxエラーが返って着ました。。。 文字コードの直打ちはムリポなのかな(´・ω・`)?

>>402
ぉお!そういえばそんな関数が;;; 記憶量の差が露呈してきた希ガス;
404nobodyさん:2006/05/09(火) 13:51:36 ID:???
訂正:ちゃんと>>401の方法でも表示されました;;;
編集中のコードで実験してみたのですが、その時既に一行上が間違ってました;;; ハズカシス;
405nobodyさん:2006/05/09(火) 14:20:25 ID:???
>>398=403=404?
IDがないので、名前欄にレス番を入れてもらえると助かるのですが。
406376:2006/05/09(火) 16:02:49 ID:???
>>397

どこが関係ないのか教えてほしい
どの言語でも共通の関数・記述法でもあるのかな?
407nobodyさん:2006/05/09(火) 16:20:41 ID:???
>>406
関数や記述の問題じゃなく、設計・実装方法の話だろ、ってことじゃ?
408nobodyさん:2006/05/09(火) 16:25:22 ID:???
>>406
マジレスするならサーバ側でlogrotateして、ローテート処理されたログを対象に集計するのが現実的。
Apacheのログなんて、平気で時系列前後するよ。
409nobodyさん:2006/05/09(火) 16:34:53 ID:???
初言語をphpで初めて早半年。
最近webじゃなくwindowsで動作するソフト作りたいなと思い始めたんですが、
web言語とは全く別物?
410軟式PHP:2006/05/09(火) 17:28:33 ID:???
>>409
phpからだと別物に感じるかもなぁ。.Net ASPなら違和感なかったろうけど。
でもプログラムが好きなら、きっと楽しいからやってみるといいよ。
411nobodyさん:2006/05/09(火) 18:19:51 ID:???
質問させてください。
F-BoardというPHP+MySQLの掲示板をいじっているのですが、

Fatal error: Call to undefined function: numrows()
in /virtual/ホニャララ/public_html/php/board/post.php on line 191

上記のようなエラーが出てまいってます。
このエラーの下部に、その原因となってるであろうファイル名と行数が表示されているものの、
その箇所は特に手を付けたわけでもなく、恐らく正常な記述だと思うんです。

これはどこか別の場所に問題が起きてるのでしょうか・・・。

いじっていたのは確かにこのpost.phpで、例のBBQとかいうのを組み込もうとしていました。
ですがどうやらうまくいかなかったようで、いじった内容を全て削除したんですがこのザマです。

どなたかこのエラーの原因になってるであろう問題がわかる方いらっしゃいませんでしょうか。
412nobodyさん:2006/05/09(火) 18:43:34 ID:???
>>411
エラーメッセージを読めば判るとおり、numrowsという関数が無い。
間違って関数を消したか、関数名を書き換えたか、
関数を読み込む部分を消したか。
差分を取るなりしてどこを書き換えたか確認。
どこをいじったかわからないなら元に戻す。


xreaか?
413nobodyさん:2006/05/09(火) 18:57:43 ID:???
>>412
ご指導ありがとうございます。
お察しの通りxreaです。よくわかりますね・・・。

指摘していただいた内容をもう一度確認してみます。
414411:2006/05/09(火) 19:44:03 ID:???
どうやら元に戻す際に1行余計に削除していたようです。
無事に元通りにできました。
どうもありがとうございました。
415nobodyさん:2006/05/10(水) 12:41:02 ID:???
>>409
つWinBinder(ttp://pecl.php.net/package-info.php?package=WinBinder)
PHPでGUIアプリが作れる...らしいです。
416nobodyさん:2006/05/10(水) 13:15:35 ID:???
今日気づいたんだけど、
IEだとwwwあってもなくてもセッションは同じサイトとして扱われるのに、
Fxだとwwwありとなしで別のサイトとして扱われるんですね。。。

最初それに気づかなくてなんでセッションが勝手に増えたり減ったりしてるのか無駄に時間を費やしてしまったorz
こういうのってW3C絡みで何か取り決めがあるのでしょうか。

それともブラウザの開発者が勝手に判断してるのでしょうか。
無論ドメインを統一すれば問題は解消されますが、
例えばwwwとwww2みたいに複数の鯖を経由する時などに弊害が出そうな気がしまして。。。

ところでセッションが余りに便利過ぎてセッションばかり使ってるのですが、
クッキーを使うのとどちらがブラウザに優しかったりするのでしょうか(期限は同じ設定だったとして)。
417nobodyさん:2006/05/10(水) 14:29:03 ID:???
cookieにはドメイン、pathって設定があってそれ次第。
あとセッションとクッキーって、
セッションidをcookieに格納するもんが普通だぜ
418nobodyさん:2006/05/10(水) 16:58:34 ID:???
レッツPHP −UpdaterRSS−
http://php.s3.to/simple/#updaterss
ソース
http://php.s3.to/simple/source.php?updaterss.php

$logmax = 10; // ログ記録最大行、RSS出力記事数

これを機能させる記述が抜けている様に思うのですが、実際に機能させる為にはどのようにすればよろしいのでしょうか?
419軟式PHP:2006/05/10(水) 18:19:32 ID:???
作った本人に問い詰める
420nobodyさん:2006/05/10(水) 18:48:16 ID:???
スーパーグローバル変数$_POSTで値を受信する簡易掲示板を作ってみたのですが、
サーバー側?の$_POSTの値が初期化されないためブラウザで更新をかけるたびに同じ値を連続投稿してしまいます。

もしかすると、PHPというよりアルゴリズムの問題になってしまうのかも知れませんが
$_POSTや$_GETの値を初期化する方法など無いでしょうか?

421nobodyさん:2006/05/10(水) 18:57:58 ID:???
>>420
それはサーバー側じゃなくてブラウザが毎回同じ値を送信してるだけ。
そういうもの。

投稿完了時にLocationで別のページに飛ばしてしまえば多重送信は防げるよ。
422nobodyさん:2006/05/10(水) 19:50:30 ID:???
>>416
Firefoxが正しい実装だよ。
IEの実装はセキュリティ上の問題がある。

あと、パス指定しないのが悪い。
example.com に対してセッション発行すれば、
www.example.com と example.com で共有できるでしょ。
423nobodyさん:2006/05/10(水) 21:48:54 ID:???
>>422
普通のクッキー発行ならともかく、セッションのクッキーでパス指定なんてできるんだっけ。
どうやんの?
424nobodyさん:2006/05/10(水) 21:59:29 ID:???
       _, ,_
     <[;゚Д゚]> ア゙ー!? ソコマデカンガエルナラ ナゼマニュアルヲミナイカナァ!
      [_]
      < > 
425420:2006/05/10(水) 22:21:00 ID:???
>>421
なるほど・・・
ありがとうございます!

Locationとはheader()関数のことですね?
試しに組み込んでみます
426420:2006/05/10(水) 22:39:25 ID:???
>>421
できました
ありがとう(*´д`*)
427nobodyさん:2006/05/11(木) 01:09:43 ID:???
>>423
CookieもセッションCookieも同じ「Cookie」という技術を使ってるんだよ。
何がいいたいかというと、有効期間の指定が違うだけ。
(有効期間を何も指定しないとセッションCookieになる)

セッションCookieならパス指定ができない、ってわけはない。
428nobodyさん:2006/05/11(木) 01:15:57 ID:???
セッションCookieなんて変な造語作らないでください><
寒気がする。
429428:2006/05/11(木) 01:24:28 ID:???
ごめん、言葉が悪かった。激しく誤解を招きそうな書き方すまん。
>>423はセッションのCookieと言ってるわけで、PHPのセッション機能で発行されるCookieを指してると思うのだがどうか(>>416>>423から)。
>>423
で、結局はPHPのセッション機能を使っても出来る。session.cookie_domainにini_set。
430nobodyさん:2006/05/11(木) 04:11:49 ID:???
>>429
別途、指定の関数があったのか。なるほどー。thks!
431nobodyさん:2006/05/11(木) 04:32:27 ID:???
>>430
マテ。教えてもらったらその関数はなんなのかとか、他に方法が無いのかとかいろいろ調べて見れ
絶対後々役に立つ・・いやたぶん、恐らく、ま・ちょっとぐらいは
432nobodyさん:2006/05/11(木) 04:57:26 ID:???
PHPの英語のコミュニティで最大手のところ教えて
433nobodyさん:2006/05/11(木) 07:12:35 ID:???
ホントにくだらない質問で申し訳ないんだけど、
法人でも個人でも仕事としてPHPでのシステム制作を請け負った場合、
スクリプトの設置場所・設置方法ってどうしてる?? サーバー運用込みで受託?

客のサーバーに入れるとソースばれるからイヤだし、トラブったときにスクリプトのせいじゃなく
サーバー側の問題だったとしても、責任をなすりつけられそうでなぁ。原因解明のために相手のサーバいじるのも怖いからイヤだし。
かと言って、こちらが管理するサーバーに入れて使わせる契約だと
サーバー管理のための人員が必要になるし、サーバー代(レン鯖やハウジング)もかかるし。

それぞれメリット・デメリットあるだろうけど、おまいらはどのようにしてますか?
俺が前にちょこっと知り合いの会社で手伝ったときは後者を選択してますた。
434nobodyさん:2006/05/11(木) 09:25:32 ID:???
>>433
コードを秘匿する方法があるでしょ。
435416:2006/05/11(木) 09:35:32 ID:???
レスありがとうございますm(_ _)m
パス指定とは ini_set()で session.cookie_domain を独自指定汁という意味で解釈すれば宜しいのでしょうか。

結局セッションもクッキーも期限の違いでブラウザ側としてはどちらも優劣はないと言うことですね。

>>433
名前は覚えてないので申し訳ないのですが、PHPのソースをコンパイルする方法があったと思います><
確かphp.iniにモジュールを組み込ませる形で利用できたと思います。
436nobodyさん:2006/05/11(木) 09:50:49 ID:???
>>433
つapc

ttp://www.stackasterisk.jp/tech/php/apc01_01.jsp
使ったことないけど
437433:2006/05/11(木) 11:24:43 ID:???
コードをあらかじめコンパイルしておくのはもちろん知ってる。
単なるキャッシュ用だけなら>>436のよりももっと新しいのやZend公式のがある。
キャッシュ用&暗号化できる製品があるのも知ってる。

だからソースの件はまあどうにでも出来るんだけど、問題はそれ以外の部分なんだよね。
トラブったときの対処とか。

実際構築を請け負ってる人(または会社)の体験談を聞きたいです。
438nobodyさん:2006/05/11(木) 11:26:26 ID:???
433じゃないですが、
436以外にコードを他人に知られないようにする方法きぼんぬ
439nobodyさん:2006/05/11(木) 11:43:32 ID:???
SCRiPTMAFiAの暗号化とか?
440軟式PHP:2006/05/11(木) 11:43:41 ID:???
ということはくだらない質問というよりスレ違いってことになりそうですが…。
441823:2006/05/11(木) 18:19:10 ID:???
$var = <<<ABC

hogehoge

ABC;

なら問題ないのですが、

(タブ)$var = <<<ABC

(タブ)hoge

(タブ)ABC;

にするとエラーが出ます。
対策方法はあるでしょうか?
ヒアドキュメント大好き人間なんですが、
上の理由のため、インデントできずソースがかなり見づらくなってしまいます。
442nobodyさん:2006/05/11(木) 18:27:57 ID:???
>>441
http://jp.php.net/manual/ja/language.types.string.php

非常に重要なことですが、終端 ID がある行には、セミコロン (;) 以外の他の文字が含まれていてはならないことに注意しましょう。
これは、特に ID はインデントしてはならないということ、 セミコロンの前に空白やタブを付けてはいけないことを意味します。
終端 ID の前の最初の文字は、使用するオペレーティングシステムで定義された 改行である必要があることにも注意を要します。
これは、例えば、Macintoshでは \r となります。 最後の区切り文字 (たいていはその後にセミコロンが続きます) の後にもまた、改行を入れる必要があります。

マニュアル読もうね
(タブ)ABC;  が×ってこと
443nobodyさん:2006/05/11(木) 21:38:54 ID:???
>>433
>>437
ソースがばれるのが嫌だってなんでなの?
客の視点から言えば、コンパイルされたりして自由に修正できないのは不便。
せっかく、phpなのに。

どういうシステムだか知らないけど、例えばショッピングカートだとして、
管理画面から自由に項目が編集できるようなシステムだったとしても
それ以外の部分を修正したいときがあるわけよ。

製作を委託した会社がソースコンパイルして保守契約結んだりしてると
ちょっと修正したいだけでも委託せんといけんから面倒なんだよね。

極端な例だけど、「text/html; charset=shift-jis」と文字コード指定が間違ってるせいで
IE以外のブラウザで文字化けする不具合があったときがあって、保守契約結んでる委託した会社に電話して修正しろといったら
「IE以外のブラウザはサポート対象外。IEだと正しくshift_jisと認識されるはず。」と付き返された。

もうはっきりいって腹立つ。

普通企業が下請けに委託するのは社内で作成する技術がないわけじゃなくて、
自社の社員に給料払って作るよりも下請けに任せた方が安いからなわけで、
ちょっとした修正なら、わざわざ保守契約結んだ会社にいちいち電話して説明するよりも
ちょっとソース弄って直した方がはやいんだよね。

わざわざ、ソースから技術盗もうなんてする人そんないないと思うんだけど
あとあと細かなことで文句つけられて修正しろ修正しろ、って言われる方が面倒じゃない?
444nobodyさん:2006/05/11(木) 21:46:59 ID:???
system()に関してなんですが、重い処理を書いた.phpファイルをsystem()で呼び出して実行する時に
ttp://www.stackasterisk.jp/tech/php/php02_02.jsp;jsessionid=au7d2dDCrCMb
を参考にshellでやるように > /dev/null &でバックグラウンドで、かつ、出力を捨てるとあったのですが、もっと詳しくと思ってマニュアルの
http://jp.php.net/manual/ja/function.system.php
をみてみましたが関連する記述はありませんでした…。
> /dev/null &は本当に有効なんでしょか?
445nobodyさん:2006/05/11(木) 21:53:24 ID:???
>>444
以前試して、有効なサーバと有効でないサーバがあった記憶がある。
(xreaで無理で、自宅サーバでOK)
何の設定が影響してたかはしらん・・・
446nobodyさん:2006/05/11(木) 21:55:41 ID:???
UNIX勉強すればいいよ
>は標準出力をファイルに
/dev/nullを指定するとデータ破棄
&はバックグラウンドで実行
447nobodyさん:2006/05/11(木) 22:06:30 ID:???
配列 改行
配列 改行
配列 改行
   ・
   ・
   ・
ファイル内容がこのような内容になっている場合に
「3行目の配列だけ読み込む」ことは可能ですか?
448nobodyさん:2006/05/11(木) 22:17:58 ID:???
>>447
どこに改行があるのか分からんので最初から読んでいくしかない。
まぁ、一行のサイズが固定されているなら、ファイルポインタを移動させることもできるが。。
>>364を参照。
449nobodyさん:2006/05/11(木) 22:20:49 ID:???
DBならいろいろできるよ?
450nobodyさん:2006/05/11(木) 22:25:02 ID:???
>>443
ちゃんとサイトライセンス組んで契約どおりに使ってくれる客ばっかりじゃないよ。
スクリプト売り(但し再販は不可)とか、サイトライセンス作ってどっちにします?
と提示して、安いのが良いから特定サイトにのみに限定したライセンスにしてくれ
と言われて納品したらコピーしまくり、スクリプト転用しまくりのたちの悪い客も結構多い。
それでこっちから苦情を申し入れても平然としたもんだったり...

まあソースごと渡すなら改造可、コピー可のライセンスで
値付けも最初からそういったものにしてりゃ良いんだけどね。
汎用性のないアプリなら問題は少ない。

表示に関してはテンプレ使うだろうから、レイアウトとかの体裁に関して
弄るのはソース隠蔽しても普通は大丈夫だと思うよ。
IE以外云々は、最初から条件に含めなとけって。
451nobodyさん:2006/05/11(木) 22:35:02 ID:???
>>448
サイズがまちまちなので難しそうです・・・

ありがとうございましたー
452nobodyさん:2006/05/12(金) 00:36:52 ID:???
hoge.html(例えば<FONT size="2"><?=$var;?></FONT>)をrequireして表示させる場合、
echo require("hoge.html");
とする場合、"を考慮して <FONT size=\"2\"> のようにエスケープしとかなきゃいけない
と思いますが、それのみに適した関数ありますでしょうか?
addslash()でOKでしょうか?
または str_replace()で " を \" に置き換えとかでも問題ないしょうか?
またどの時点でエスケープは必要になるのでしょうか?
こんがらがってきました orz
453nobodyさん:2006/05/12(金) 01:03:09 ID:???
>>452
やってみればすぐわかる。
エスケープ不要
requireにecho不要
454nobodyさん:2006/05/12(金) 05:40:59 ID:???
>>443
お前みたいなバカに安く買い叩かれないように、ソースを隠蔽するんだよ。
修正とかはもちろん保守契約または随時追加費用をもらえばやるよ。

あと>>450も書いてるように、ソースが欲しいならそれなりの値段で渡すけど、
お前(の会社)では出せない金額になると思うがなwwww
455nobodyさん:2006/05/12(金) 06:17:24 ID:???
>>454
お前(の会社)が書いた糞ソースなど誰もパクらないから安心したまえ。
456nobodyさん:2006/05/12(金) 08:56:57 ID:???
ある一定の時刻(例えば3時)にスクリプトを自動実行させることは可能ですか?

アクセスして時間を取得して実行させるしかないのでしょうか。
457nobodyさん:2006/05/12(金) 09:51:27 ID:p/0gq46a
PHPでテンプレート(と言うかCSS)を切り替え出来るものを作っています。
テンプレート用変数$templeteの内容によってCSSが変化するとします。

if($templete=="赤"){
<link href="css/red/style.css" rel="stylesheet" type="text/css" />
}elseif($templete=="青"){
<link href="css/red/style.css" rel="stylesheet" type="text/css" />
}elseif($templete=="緑"){
<link href="css/green/style.css" rel="stylesheet" type="text/css" />
}elseif(同様に続く)

この方法でも問題はないのですが、ソースが増えすぎます。
何か良い方法はないでしょうか?
458nobodyさん:2006/05/12(金) 11:05:30 ID:???
>>457
俺なら$templateをディレクトリ名にしておいて
<link href="css/<?php echo $template; ?>/style.css" rel="stylesheet" type="text/css" />
459nobodyさん:2006/05/12(金) 11:13:05 ID:???
>>456
PHPだけでやるならソレかスクリプトを常駐させるしかないと思う。
ただWindowsにタスクマネージャがあるようにそのサーバにもcronがあると思う。
cronについてはこのスレじゃないから割愛・・・というか、ググればすぐ出てくる
460457:2006/05/12(金) 11:44:27 ID:???
>>458
$templeteがディレクトリ名なら良いのですが、名称を付ける場合もあります。
例えば「夏デザインA」「スポーツB」など。

登録する時などは日本語名で登録するので、そのような場合に
ディレクトリ名に変換する方法はないでしょうか?出来るだけソースが短くて。
461nobodyさん:2006/05/12(金) 11:57:57 ID:???
>>459
タスクマネージャってCtrl+Alt+Deleteで出てくるやつ?
462nobodyさん:2006/05/12(金) 12:12:20 ID:???
>>460
じゃあ名称とディレクトリを配列にしておく
$css_dir = array('赤'=>'red', '青'=>'blue', '緑'=>'green', '夏デザインA'=>'summerA', 'スポーツB'=>'sportsB');
?>
<link href="css/<?php echo $css_dir[$template]; ?>/style.css" rel="stylesheet" type="text/css" />
463nobodyさん:2006/05/12(金) 12:22:25 ID:???
>>461
タスクマネージャーじゃなくてタスクスケジューラーの間違いだ
コントロールパネルにある「タスク」のことだ
464457:2006/05/12(金) 13:05:31 ID:???
>>462
上手くできました!大変勉強になりました。ありがとうございました。
465nobodyさん:2006/05/12(金) 15:45:10 ID:tJvRMikH
僕が買った技術評論社のphp入門本には、
register globalsをonにしろと書いてあるのですが、
使っているレンタルサーバはoffになっています。
こういうときはどうすればいいのでしょうか?

色々と調べていたら、register globalsがonなのは
ダメだということが分かったのですが、
offの状態でフォームによる値の受け渡しを行うには
どうしたらいいでしょうか?
466nobodyさん:2006/05/12(金) 15:49:19 ID:???
今はセキュリティ関係でOffがデフォルト
$_GETとか$_POST配列で取得
467465:2006/05/12(金) 16:03:36 ID:tJvRMikH
レスありがとうございます。
ロリポップのサーバのアカウントももっているのですが、
そちらは同じフォームのスクリプトでも問題なく動きます。
この場合、ロリポップはセキュリティ的に問題があるということですか?
468軟式PHP:2006/05/12(金) 16:40:11 ID:???
>僕が買った技術評論社のphp入門本には、
>register globalsをonにしろと書いてあるのですが
まず、その本を窓から投げ捨てろ。
469nobodyさん:2006/05/12(金) 16:48:53 ID:???
>>467
ロリポップは聞いたことあるけど使ったことはないので

・register globals に関係ないスクリプトである
・セキュリティが重要なスクリプトは動かさないのが前提
・セキュリティポリシーの相違
・etc
と、色々ある。
おまいさんの言葉だけでセキュリティが高いだの低いだの判断することはできない。

商用でSSL対応のサーバプランとかあるなら、それで環境が違ってるという可能性もあるし
470nobodyさん:2006/05/12(金) 17:16:46 ID:???
>>455
プププ、苦しい煽り乙wwwwwwwwwwww

そんなら文句ばっか言ってないで、自分でスクリプト書けばぁ???www
なぁ、>>443よ。お前みたいなケチな馬鹿に無料でソースくれてやるほど
こちらは「いい人」じゃないぜwwwwwwwwwwwww
471nobodyさん:2006/05/12(金) 17:28:38 ID:???
>>468
きちんと廃品回収に出さなきゃだめ
472nobodyさん:2006/05/12(金) 17:56:42 ID:???
そろそろphp5らしいphpを書きたいのでオブジェクトを特に重点的に書いてある
phpの書籍でお勧めできる物がありましたらお願いします。

当方田舎なもので立ち読みして品定めしたいところなのですが、
phpなんてマニアックな本の取り扱いがありません(´;ω;`)ブワッ

Amazonのレビュー読んでも余計に混乱してどれを買えば良いのか分かりませんorz
金銭的にも余り余裕が無いのでできればあまり大量に買わずにマスターしたいです。
473nobodyさん:2006/05/12(金) 19:18:59 ID:???
>>470
ばーか。どこの誰だかわからん低脳のソースなんかくれたほうが迷惑だろ?
まあせいぜい人様の迷惑にならないようなプログラム書けるようになろうね。
474465:2006/05/12(金) 19:21:51 ID:tJvRMikH
みなさんレスありがとうございます。
どっちにしてもこの本は捨てないとだめですかね?
何冊か買ったPHP本の中ではかなり参考になった本なのですが...。

>469
ロリポップでphpinfo()をしたらregister globalsはonでした。
自分はメールフォームを作ったのですが、
基本的には、$_POST["hoge"]で受け取っておけばいいのでしょうか?
例えば、name="fuga"を$_POST["fuga"]で受け取って、
その直後に$fuga = $_POST["fuga"]とやった場合は
あんまり意味ないんですかね?
egister globalsはonである時点で$_POST[]でもダメなのかな?
475nobodyさん:2006/05/12(金) 19:48:54 ID:???
>>473
プププゲラゲラ プゲラゲラwwwwwww
お前は>>443で自分が書いたマヌケな文章をもう一度よく読み返すこったなwww

だからそんな偉そうなこと言ったり他人に文句つけてるヒマがあったら
自分で開発しろっつーのwww どうせ出来ないから暴れてんだろうけどwww
476nobodyさん:2006/05/12(金) 19:52:26 ID:???
カワイソス
477nobodyさん:2006/05/12(金) 19:58:37 ID:???
お前らスレ違い。
478nobodyさん:2006/05/12(金) 20:00:55 ID:???
>>474
「register globals=on」がなぜダメなのかをよく理解しないと。
話はそれからだ。
479nobodyさん:2006/05/12(金) 20:05:06 ID:???
phpから、perlプログラムを実行したいのですがどの関数を使えばよいのでしょうか?
480nobodyさん:2006/05/12(金) 20:13:31 ID:???
そろそろ>>472にも誰か答えてあげてください><
481nobodyさん:2006/05/12(金) 23:30:25 ID:???
>>480
そんな感じのスレが立っていなかったっけ?
気のせいかな・・・
482nobodyさん:2006/05/12(金) 23:42:52 ID:???
>>443
プログラム全体が見えてない奴が勝手に触ってそれが次回の機能追加のときの障害になるとか、考えないの?
うちでは、勝手に触った場合は、以後、そこに起因するトラブルが起きても責任とらないってことにしてる。
ブァカ客に触らせるとプログラマの士気に関わるんで。
483nobodyさん:2006/05/13(土) 00:01:06 ID:???
484nobodyさん:2006/05/13(土) 00:11:23 ID:???
>>479
そのPerlさんがCLIで動いてくれるんだったら system() とかバッククォート
485nobodyさん:2006/05/13(土) 04:21:46 ID:???
>>482
ウチではソースはクライアントに開示してるよ。
マスターソースはこっちで持ってるんで、クライアントがサーバ上のソースをいじっても
次の仕様追加・変更がされたときにこっちが持ってるソースで上書きされるんで無意味。
というか、ソース云々言う以前に契約で勝手に触らないようにしてあるし。

コンパイルなんかしなくてもWebアプリの速度なんてたかが知れてるし、
余計な手間増やしたくないしね。
あ、ソースはSubversion(CVSっぽいヤツ)で管理してるから変更履歴とかも残ってるよ。
486nobodyさん:2006/05/13(土) 05:17:00 ID:???
>>485
契約なんて守らないのが半島クオリティ。
487nobodyさん:2006/05/13(土) 06:46:28 ID:???
あ〜、どこのサイト、どんな記事読んでもWeb2.0ばっかり・・・
正直もううんざりだぜ!

これからはPHPとJavaScriptの時代か?
JavaScriptはもっとブラウザ同士が同じ動きしてくれたらな〜
PHPは・・・その・・・もっとグラフィックスを・・・
488nobodyさん:2006/05/13(土) 08:50:03 ID:???
>>487
なぁに、数年後にはWeb3.0にうんざりしてるさ。

どうでもいいけどそろそろW3Cみたいにブラウザ間の取り決めをちゃんとして欲しい。
何がIEオリジナルタグだ。ばっかじゃないの。少しはおりこうなFxも見習えての。
489nobodyさん:2006/05/13(土) 09:27:11 ID:???
>>284
たぶんもう見ていないと思うけど、自分も同じ症状に陥ったのでとりあえずの回避策を。

IISが停止している・Apache関連のフォルダがないのにもかかわらず
ApacheのMSI版インストーラで”Installation Wizard Interrupted”エラーが出る人は、
古いバージョンで試してみるとうまくいくかも。

http://archive.apache.org/dist/httpd/binaries/win32/

私の環境では、apache 1.3.31 または apache 2.0.52 ならうまくいきますた。


CPU:Pentium3 MobileCPU: 866MHz
Memory: 512MB
OS:WinXP Pro SP2
アンチウイルスソフト:ノートンインターネットセキュリティー2006
CドライブにWin2000、DドライブにWinXPの構成
apacheインストール暦:2000・XPともになし
IIS:Windowsコンポーネントから削除済み
490nobodyさん:2006/05/13(土) 21:15:37 ID:???
他人のソースを見ていたら

$a = ($b) ? $c : $a ;

みたいな文法があったんですが、これはどういう意味ですか?
491nobodyさん:2006/05/13(土) 21:19:24 ID:???
$aの値を$bがtrueの時$cにfalseの時に$a
492nobodyさん:2006/05/13(土) 21:19:50 ID:???
$b が真なら$aに$cを代入、偽ならそのまま。
三項演算子でぐぐってみ。
493nobodyさん:2006/05/14(日) 00:48:40 ID:???
Perl の Template::Extract みたいなのはないもんかね?
494nobodyさん:2006/05/14(日) 01:06:23 ID:???
>>485
なるほどね。勝手に触った部分はないものとして無視。
これシンプルでいいかも。いじりたきゃいじれ。だけど次の機能追加までの命ね。ってことか。うちも今度それやってみよう
495nobodyさん:2006/05/14(日) 02:58:39 ID:???
他サイトへの転用禁止、第三者への転売禁止、辺りに対する
契約違反にはどう対処してる?やっぱ泣き寝入り?
496nobodyさん:2006/05/14(日) 04:17:12 ID:???
狸寝入り
497nobodyさん:2006/05/14(日) 09:04:06 ID:???
>>495
客のサーバを使わず、こちらで用意する。
(もちろん鯖構築費・管理費も乗せて請求)
498nobodyさん:2006/05/14(日) 10:16:50 ID:???
ダーツに興味ある人はいませんか?
初心者、上級者一切問いません。ダーツを愛する方ならどなたでも結構です。

実はあるダーツ店のマスターが客が来なくてとても困っているようです。


  ↓↓↓ 詳細はこちら ↓↓↓
http://sports9.2ch.net/test/read.cgi/bullseye/1111230059/431-452


できればこのマスターに励ましの言葉をお願いします。
また、もしこの店の近くにお住まいの方はお店の方にも行ってあげてください。
困ったときはお互い様です。ダーツを愛するもの同士助け合いましょう!
499nobodyさん:2006/05/14(日) 12:39:59 ID:AA1LZHii
すんませんお願いします。ブラウザのオートコンプリートをOFFにしたり、もしくはオートコンプリートのキャッシュから特定のデータを削除したりって、PHPからできるんでしょうか?つか、できないとは思うんですが、ひょっとしてできちゃったりしないでしょうか。
500nobodyさん:2006/05/14(日) 14:29:54 ID:???
>>499
できない。
できたとしたらブラウザの仕様がおかしい。
501nobodyさん:2006/05/14(日) 14:39:49 ID:???
>>500
その理屈はおかしい
502nobodyさん:2006/05/14(日) 14:42:05 ID:???
>>499
オートコンプリートOFFは<input>の属性でautocomplete=offって指定するだけ
特定データ削除はムリ
503nobodyさん:2006/05/14(日) 14:44:05 ID:???
>>497
ひょっとして止まったら24時間対応やってんの?すげーなおい。
サーバ管理なんて金もらえばできるってもんじゃないぞ。
504nobodyさん:2006/05/14(日) 14:50:10 ID:???
どの階層にあるphpからでもincludeして共通で使えるのを作りたいんだけど、
ファイルの指定で絶対パスの指定ってできますか。
505nobodyさん:2006/05/14(日) 14:57:16 ID:???
うん
506nobodyさん:2006/05/14(日) 14:57:50 ID:???
>>503
まっとうな業者なら自分の得意分野をきちんと理解した上で
得意でない分野はパートナー業者に依頼するのが普通。
507nobodyさん:2006/05/14(日) 14:58:51 ID:???
>>503
客側のサーバに納品したら、それはそれで
何かトラブれば24時間365日呼び出されるんじゃないの?

しかもこちらの想定しない設定とか運用がされてるサーバだから
原因特定に時間かかりそうだし。こちらのせいじゃないトラブルまで責任押し付けられそうだし。
>>503はそういう経験なかった??
508nobodyさん:2006/05/14(日) 15:26:45 ID:???
>>507
トラブルの内容にもよるけど、サイトが停止するようなトラブルを
プログラムミスで発生させることはかなり稀な事態だから
土日祝はともかく夜中呼び出し食らった経験は無いなぁ。
ほとんどの場合、平日昼間の対応だけで済んでるよ。
一体どんなの作れば夜中に即修正が必要なバグを出せるの?

ただ、サーバー側の問題をこっちに押し付けられることはあるね。
でも不得手な仕事を引き受けてそれが改善できるとは思えない…
>>506にあるように親切なパートナー業者を見つけるのが手なのか。
でも結局、すべての問題がまとめてやってきて忙しくなるのは変わらないような…?
お客に「サーバー側の問題はこちらへ連絡してください」とか通達してるのかな。
509nobodyさん:2006/05/14(日) 16:25:54 ID:???
独学で人様のソースからPHPについて見よう見まねで勉強を始めたのですが

echo TEMPLATE::fill($this->getTemplate(log),$data);

という文でデータを出力しているのはわかるのですが、
::と->がわかりません
ぐぐで検索しても区切り文字になってしまってなかなか目当ての検索結果が得られないので
質問してみます。
とりあえず朝からにらめっこして、->は
データの構造体(?)にアクセスする表記(?)ためのポインタというものを
指しているのではないかと思うのですが、

::と->と上記の行の説明を出来ればお願いしたいです。


510nobodyさん:2006/05/14(日) 16:27:02 ID:???
顔文字ですよ :->
511nobodyさん:2006/05/14(日) 16:28:02 ID:???
>>507
うちの場合は、サーバ管理とプログラム開発をはっきり分けて、
たとえばルートのパスワードを教えてもらっても即廃棄して、
どんな小さなサーバの設定の変更でもいちいち管理者を通す。

常にそうやった上で、システムの不調で
緊急対応した場合は、プログラム開発のミスか、運用ミスかをはっきりさせて
運用ミスなら報告書をつくって緊急手当を上乗せして費用を請求する。
あらかじめ責任範囲を明確にしておけば、きちんと費用は出してくれるよ。

でもやっぱり角が立つから、信用のおけるホスティング会社以外では極力運用と
開発を分けない事にしてる。これが呑めない新規客なら仕事を断ることもある。
ホスティングって、けっこうひどい所もあるからねぇ。
512nobodyさん:2006/05/14(日) 16:29:02 ID:???
俺も独学だけど、マニュアルが無料の初心者本と
思って間違いないと思う。
513nobodyさん:2006/05/14(日) 16:35:57 ID:???
>>509
PHPのオブジェクト指向に関する説明を参照。
514509:2006/05/14(日) 17:13:05 ID:???
ありがとうございます、
見当がつかないと、しらべようがないので助かりました。
読んでまたわからなければ参上させてもらうかもしれません。
いってきます。
515509:2006/05/14(日) 17:22:40 ID:???
>>513
http://www.php.net/manual/ja/language.oop.php
ここを参照したのですがここの説明で->が出てくるのですが
->についてはどこを調べたらよいでしょうか?
何を表すものなのかがわからないので、どこを調べて良いかわからなくて・・・すみません。
516nobodyさん:2006/05/14(日) 17:24:03 ID:???
確かに、マニュアルを読むのが一番なのは分かるし、そうするようにしてるんだけど、

なんでだろう、マニュアルだと分かりにくいと感じるのは
517nobodyさん:2006/05/14(日) 17:25:15 ID:???
PHP使うほとんどの人が独学だと思う。
518nobodyさん:2006/05/14(日) 17:31:54 ID:???
>>515
ttp://www.scollabo.com/banban/php/php_11.html
オブジェクト指向のみだけど、ここも読んでみたら?

ttp://www.rfs.jp/sb/perl/04/01.html
ページ自体はPerlの説明だけど、「パッケージ」について
勉強してみてくらはい

上記の二つのページだけど、お前の疑問の大半は解決できると思う
519nobodyさん:2006/05/14(日) 17:41:31 ID:???
PHP使うほとんどの人が独人だと思う。
520nobodyさん:2006/05/14(日) 17:42:25 ID:???
イッヒ リーベ リッヒ!
521nobodyさん:2006/05/14(日) 17:42:51 ID:???
>>515
> パス名のセパレータは、 -> となります。
この辺。要するにオブジェクトに入ってるメソッドやメンバを示すための単なる区切り記号。
522nobodyさん:2006/05/14(日) 17:46:34 ID:F/h4hhyc
フォームじゃない普通のリンクをクリックされる度に、
セッションへ値を追加する。
と言ったことがやりたくて、
<a href='hoge.php?val=1'></a>
GETで受け取ってセッションへ渡して行こうかと思って以下のようにして見たのですが、うまくいきません。
$_SESSION['valval[]'] = $_GET[val]

<a href='hoge.php?val=1,2,3,4'></a>
後はこんな感じに、クリックされる度にリンクを生成するしかないでしょうか?
523nobodyさん:2006/05/14(日) 17:48:38 ID:???
>>522
$_SESSION['valval'][] = $_GET['val'];
の間違いじゃないか?
524nobodyさん:2006/05/14(日) 17:50:43 ID:???
>>516
キミの頭が悪いから
525522:2006/05/14(日) 18:08:09 ID:???
>>523
ありがとうございますうー
うう

そっか、そうだよな、頭悪いな俺
526nobodyさん:2006/05/14(日) 19:02:16 ID:5bNipnnQ
>>525
まずは落ち着け。落ち着いたらレスアンカーに注目。
527nobodyさん:2006/05/14(日) 21:37:55 ID:???
こういうシンタックスエラーって意外と気付き難いのな
Cとかならコンパイル時に教えてくれるけどPHPは実行時にしかチェックしないし
そもそも融通が利きすぎるから文法チェッカーとかも作るのが難しそうだ
528nobodyさん:2006/05/14(日) 21:59:59 ID:???
>>527
いや、文法的には合ってるし
529nobodyさん:2006/05/14(日) 23:05:50 ID:/vYEQzDW
以下のような感じでMySQLの特定テーブルのデータを抽出しているのですが、
$idに値が入っていない(つまりデータが登録されていない)場合、
「登録されていません」というメッセージを出したいと思っています。

$conn=mysql_connect("localhost","hoge","hoge");
$sql = "select * from list where id='$id'";
$rst=mysql_query($sql,$conn);
while($row=mysql_fetch_array($rst)){
echo $row[$id];
}

whileの中にifを入れて出来ると思ったのですが、無理でした。
どうすればいいのでしょうか?
530nobodyさん:2006/05/14(日) 23:21:59 ID:???
>>529
whileの中は「データがある場合」しか実行されないんだから出るわけねーし。
whileの前にmysql_num_rows()で件数出して、0件ならエラーメッセージ。
531nobodyさん:2006/05/14(日) 23:28:11 ID:???
>>529
質問の文章もスクリプトも適当すぎるなぁ。。
やりたい事は、PHPの変数$idとMySQLのフィールドidの値が同じになるレコードが1つも無かった場合に
「登録されていません」って出力したいんだよね。
mysql_num_rows()を使うと結果セットの行数を取得できるから、whileより前でチェックすればよい。
532529:2006/05/14(日) 23:33:43 ID:???
>>530-531
できました!大変勉強になりました。ありがとうございました。
533nobodyさん:2006/05/15(月) 00:00:22 ID:ZEWPSNXY
htmlでincludeとかrequireみたいに別のファイルを読み込むことは可能でしょうか?

例えば、静的なページを作りその下部にコピーライトのようなものを書くとします。
いくつもの静的なページを作りその全てにコピーライトを書きます。
しかしコピーライト中の一部を改変する(メアド変えるとか)全部のページを修正するので手間です。

方法を二つ考えました。
1.フレームにしてコピーライトだけのhtmlを読み込む
2.インラインフレームにして同上
3.phpにしてincludeとかrequireで読み込む

1はページ最下部というデザイン上の要求が満たせません
2はスクロールとかで使い辛い感じになるので出来たらイヤです
3はできたらphpを使わないでデザインしたい
何か他の方法は無いでしょうか?

phpスレなのにphp使わないでって辺りがスレ違いなんですけどよろしくお願いします。
534nobodyさん:2006/05/15(月) 00:05:07 ID:???
>>533
そんなことのためにフレームやPHPを使うという発想が理解できない。

俺なら、DWのテンプレート機能や、DWやテキストエディタの一括置換を使う。
以上。
535nobodyさん:2006/05/15(月) 00:13:02 ID:???
>>534
そもそもなぜPHPを使いたくないのか分からない。
まさか勉強するのがメンドクサイとかじゃないよな?
536nobodyさん:2006/05/15(月) 00:14:58 ID:???
>>533
SSIは論外ですか。そうですか。
537533:2006/05/15(月) 00:17:49 ID:???
>>534
置換はファイルの数が増えると手間かなぁと。
とりあえずDWをググってみます。

>>535
phpが使えない鯖に置くかもしれないんです。
あとつかえるとしても検索エンジンで拡張子がphpだと
ちゃんとクロールしてくれないと聞いて。
538nobodyさん:2006/05/15(月) 00:18:22 ID:???
>>533
> phpスレなのにphp使わないでって辺りがスレ違いなんですけどよろしくお願いします。
自分で分かってるんだから他所池よ
539nobodyさん:2006/05/15(月) 00:20:48 ID:???
>>537
.htmlでPHP動かせば検索エンジンの問題は回避できる。

PHPが入ってない鯖はすでに論外だわな。
その場合、SSIも使えない場合を考慮すべきなの?
だったら後はJavaScriptでdocument.writeとかしかないんじゃないかと思うぞ。
俺もそれはDreamWeaverでテンプレートにしちゃうかなー
540533:2006/05/15(月) 00:23:53 ID:???
>>536
SSIってSSLと似たようなもんかと思ってた・・・。
これが使えれば一番楽ちんですね、ども。

>>538
ごめんち
541533:2006/05/15(月) 00:32:18 ID:???
>>539
>htmlでPHP動かせば検索エンジンの問題は回避できる。
なるほど、そんな方法があるんですね。

Javaはまだあんまよく分からないっすがメモだけしときやす。

安い鯖は当然SSIもダメなんすね。へこむわ。

DWってDreamWeaverの事でしたか。もってないもんくすん。
542nobodyさん:2006/05/15(月) 01:25:08 ID:???
>>533
そういう動的に差し替えるにも値しない箇所は、
アップロード前に事前にツール使って差し替えてるけど。
ただ作業者が複数いる場合は、アップロード後にhtmlを書き換え、
ちゃんと正常に書き換えられたことが容易に確認できるような
ツールをPHPで組んで置いとく。無論書き換えツールのセキュリティは強固にね。
543nobodyさん:2006/05/15(月) 02:38:53 ID:???
拡張子phpでも普通に上位いくよ
gooleとyahooとMSNしかチェックしてないが
544nobodyさん:2006/05/15(月) 03:01:53 ID:???
>>543
googleとMSNはそうではないが、
Ya!Japanは拡張子の違いであからさまに結果が違う。
(回収ロボットの動作に差は無いが、回収したデータの扱いに差がある)
まあYa!の出来が悪いと言えばそうだが、SEOのためにはそうも言ってられん訳で。
# 検索結果の最適化はともかくロボットの熱心さの点では、最近のMSNは感心するな。
545nobodyさん:2006/05/15(月) 04:22:14 ID:???
>>508
客の認識不足で、「サーバとプログラムは別で・・・」って言っても理解してくれなさそうな希ガス。
「いいから直せ!」って。それと親切なパートナーってどういうこと?? 鯖の運用部分を客の代わりに委託するってこと?

>>511
ごめ、最後の3行がいまいち意味が分かりにくいんだが。。。
特に「運用と開発を分けない事にしてる」ってどういう意味?
546nobodyさん:2006/05/15(月) 05:09:23 ID:???
>>541
Javaじゃねーよ!
Javascriptだよ!!
2つは全くの別モンだよ!!
547nobodyさん:2006/05/15(月) 05:26:26 ID:???
>>545
客が運用する鯖や客の指定する鯖運用業者でなく
プログラムとセットで鯖もこっちから提供&その業者はこっちのパートナー企業、
ってことじゃない?
確かにうちで使った外注でもそんな条件を出してきたとこが1箇所あった。

で、そのあっちで指定した鯖運用会社ってのがセキュリティに無頓着なとこだったんで
その開発会社含めて初回こっきりで2度と仕事しないことにした覚えが。
548nobodyさん:2006/05/15(月) 05:29:55 ID:???
>>541
別にDWじゃなくても、オリジナルのHTMLにはCopyright部分にキーワードを埋め込んどいて、
アップロード前に全ファイル一括置換した上でアップ実行、くらいは簡単にできるんじゃない?
複数ファイル一括置換くらいならその辺のテキストエディタでもできるしフリーのツールもあるし
なんならPHPで組んだっていいと思うけど。
549nobodyさん:2006/05/15(月) 06:22:05 ID:???
>>547
あ、なるほどね、あなたは「客側」だったってことかな?

ちなみに俺が>>497で書いた「サーバーをこちらで用意」というのは、
「こちらで専鯖をレンタルして、開発したシステム入れて、それを又貸し(再販)する」という意味であって、
別に自社内とかにサーバーを物理的に設置して運用する…というわけじゃないです。
550nobodyさん:2006/05/15(月) 06:37:35 ID:???
一括置換なら↓がオススメ。サイト全部に共通のある特定部分を置換するときなど重宝する。
http://www.vector.co.jp/soft/win95/util/se142895.html
551nobodyさん:2006/05/15(月) 08:45:56 ID:???
(´-`).。oO(スレ違いというか板違いな事にそろそろ気付いてほしい・・・・)
552nobodyさん:2006/05/15(月) 13:14:31 ID:???
>>551
いいじゃん別に。
話題というのは常に発展していくからこそ有益で面白いんだから。
板とかスレとかいうのは出発点を絞るだけ。
553nobodyさん:2006/05/15(月) 14:27:16 ID:???
今回のは出発点からして間違ってるけどな。
554nobodyさん:2006/05/15(月) 15:16:38 ID:???
簡単な画像掲示板を作ったら、やたら日本語のファイルをアップされてしまいました。
現在は日本語のファイルをアップ出来ないようにしているのですが、
これまでアップされたファイルをどうにか変換して表示出来るようにしたいです。

そのような事は可能なのでしょうか?それとも一旦すべての日本語ファイルを
削除して、再度アップし直して貰うしかないのでしょうか?
555nobodyさん:2006/05/15(月) 15:24:43 ID:???
>>554
デザイン(設計)のミスだな。
スクリプトをデザインする際に先の事を考えないと恒久的なモノは出来ない。

日本語のファイル名が使われたファイルをアップロード出来ないようにするのはいかがなものかと。
最初から違うファイル名に置き換えするとか、rawurlencode()すればよかったんだよ。
556nobodyさん:2006/05/15(月) 15:42:53 ID:???
下らない質問をさせてください。

DB2と接続した上で、prepare→bind_param→executeの流れで
ストアドを実行したいと思っています。

bind_paramの段階で
db2_bind_param($stmt, 1+$cnt, 'param1[' . $cnt . ']', $tmpparam);
バインド変数に配列を指定したいと考えて、上記のように記述してみましたが
この書き方ではエラーとなってしまいます。
バインド変数に配列を指定する場合の方法をどなたかご存知ではないでしょうか?
557nobodyさん:2006/05/15(月) 16:19:58 ID:???
済みません・・・
写メール対応の掲示板を作りたいのですが・・・
サーバーは「さくらのレンタルサーバー」です。

phpで動かす際に
<?php
// 受信メールサーバーの設定
// POP3サーバー
$host = "takurou.sakura.ne.jp";
// ユーザーID
$user = "takurou";
// パスワード
$pass = "0000";

例をあげると、これで合ってるのでしょうか・・・
takurou=は例です。
済みませんが、此処で詰まってしまって困難してます。
何方か、アドバイス宜しくお願いします。

サーバーのプランはスタンダードです。
558nobodyさん:2006/05/15(月) 16:50:41 ID:???
POP3サーバーしらべて決められた自分のIDとPASS設定だけだよ?
559nobodyさん:2006/05/15(月) 17:12:15 ID:???
>>554
画像ファイルをどのように保存しているか知りませんが、
フォルダ管理だと同名のファイルが送られたら困るので
>555が言うようにファイル名置き換え(ex:スレ名+投稿時間とか)が無難ですよ。
560nobodyさん:2006/05/15(月) 17:35:49 ID:???
>>557
その$hostとか$userがどう使われてるか分かんねーから分かんねー
DBの接続に使ってんのかそれとも管理者用の機能でもあんのか?
561nobodyさん:2006/05/15(月) 18:15:11 ID:???
>>558 >>560

DBサーバーを入れても「サーバーが接続できません」となるんです・・・

ttp://php.s3.to/bbs/bbs7.php
ここの掲示板を設置したかったのですが、どうしても作動しないのです・・・

ごめんなさい・・・下らない質問してしまって・・・
562nobodyさん:2006/05/15(月) 18:50:47 ID:???
>>561
DB関係ないでしょ。
なんで向こう(レン鯖板)で板違いって言われたのかはわかんないけど

$host = 'MUAに設定するときと同じ';
$user = 'MUAに設定するときと同じ';
$pass = 'MUAに(ry';

うろ覚えだけど、さくらってPOP3ログオンのときのユーザ名が
account@sakura.ne.jp とか account%sakura.ne.jp じゃなかったっけ。
「メールソフトの設定のしかた」がわかればいけると思うよ。PHPと関係なく。
563nobodyさん:2006/05/15(月) 19:15:34 ID:???
>>562

済みません、本当にありがとう御座います!!!
御蔭様で言われた通りに設定しましたら、ちゃんと作動しました。

本当に下らない質問に細かく説明して頂いて、有難う御座いました!
本当に感謝です・・・有難う御座いました!
564nobodyさん:2006/05/15(月) 20:42:06 ID:???
$htmlstr = preg_replace("/##banner##/",file_get_contents("/path/to/banner.html"), $htmlstr);
echo $htmlstr;
とすると問題ないのに、
$htmlstr = preg_replace("/##(banner[^#]*)##/",file_get_contents("/path/to/$1.html"), $htmlstr);
echo $htmlstr;
とすると動きません(空白に置き換わる)。使い方間違っていますか?
565nobodyさん:2006/05/15(月) 20:55:01 ID:???
eオプション
566nobodyさん:2006/05/15(月) 21:37:38 ID:???
>>564
$htmlstr = preg_replace("/##(banner[^#]*)##/e",'file_get_contents("/path/to/$1.html")', $htmlstr);
567nobodyさん:2006/05/16(火) 00:09:31 ID:???
>>549
ハードウェアは自社で持たずに、専用レン鯖やハウジングを利用するってことか。
それならウチも客の鯖なんか使わずに、鯖ごとこちらで提供したいね。

客鯖なんか使ってトラブルでも起きたら、原因解明だけで一苦労だ。
568564:2006/05/16(火) 00:09:38 ID:???
>>565 >>566
ありがとうございます。解決しました。
わざわざ文字列にしてevalするんですね…。
569nobodyさん:2006/05/16(火) 00:48:03 ID:Q3oWbdgp
すみませんPHPを学びたいのですが
1のPHPマニュアルを読んでもあまりわからないようです
基本的なプログラムに対する考え方がわからないのですが
こういう人間はまずどういうところを勉強すると良いでしょうか?

能力的には
HTMLは大体わかります。
パソコンも基本的なことはわかります。
プログラム的なことは切り貼りでperlをいじることしかしたことがありません


570nobodyさん:2006/05/16(火) 00:59:27 ID:???
>>569
順次、選択、繰り返し。まずはこれをちゃんと覚えることだな。
オブジェクト指向も手続き指向も飛び越えて基本中の基本だ。
配列の添え字の動きとかにも気をつけろ!

で、慣れてきたら、色々調べながら画像掲示板とかでも作ってみれば?
もちろん自サーバで。
PHPだけじゃなくて色々勉強になるよ。
571569:2006/05/16(火) 01:30:37 ID:Q3oWbdgp
ありがとうございます
順次、選択、繰り返しというのはなんですか?
配列の添え字の動きというのは、添え字が動く??
せっかくコメントいただいたのに、アホなのでよくわかりません

関係ないですが''と""の使い分けがよくわかりません、

572nobodyさん:2006/05/16(火) 01:40:22 ID:???
>>571
1.まず、自分が作りたい"なにか"を見つける
2.本屋行って立ち読み。「自分が作りたい"なにか"」またはソレに近いものが載っている本を探す
 ※立ち読みついでに基本的な事も覚えておく
3.その本を買って帰り、書いてある通りに作ってみる。
4.動かなかったら何がおかしいのか動くまで考える
5.動いたらソレを改良してみる
6.ソレを数年繰り返す
7.その技能を活かして社会に出る ←オレ今ココ
573569:2006/05/16(火) 01:45:57 ID:Q3oWbdgp
>>572
>>512でPHPのマニュアルをよめばいいのか、と思ったのですが
最初はとりあえず本かってみたほうがいいですかねぇ?
574nobodyさん:2006/05/16(火) 04:02:43 ID:???
>>573
perlやってるならphpのマニュアル読めばたいていの感じは掴めると思うよ。
構造そのものはそんなに変わるわけじゃないし。
自分で作ったperlをphpに移植してみるとか、どこかでフリーなphpスクリプト
を入手していじってみるとか。
本を買うなら一回↑の感じをやってみてから本屋で立ち読み、自分のレベルに合うのを買えばいいかと。

俺は572さんの1はとても大事なことだと思うぜよ。
575nobodyさん:2006/05/16(火) 07:20:57 ID:???
俺は今初心者なんだが、正直、基本的なことだけ覚えて後は関数調べるだけだと思っていた。
でも独学でコーディングなんて滅茶苦茶。

どうスクリプトを組んでいけばいいのか、どう設計すればこうなるのかが
まだつかめていない。

と、いうわけで他人のスクリプト見て勉強中。
このスレもROMってます。
576nobodyさん:2006/05/16(火) 07:37:21 ID:???
プログラム言語と英語の習得を比較するとこんな感じ。
言語を習得してからも実用的な物を作れるようになるまでの道のりは長い。

[プログラム言語の習得]        [英語の習得]
関数・構文を覚える           単語・構文を覚える
簡単なものを作る            簡単な文章を作る
必要な知識(プロトコルとか)を習得  ジョークの理解に必要な歴史的背景や風俗を知る
より効率的な作り方を身に付ける  古典的なアメリカンジョークを聞きつづける
実用的な物を作る            どっかんどっかん受けるようなアメリカンジョークを作る
577nobodyさん:2006/05/16(火) 09:46:57 ID:???
>>575
>基本的なことだけ覚えて後は関数調べるだけ

その認識で正解だと思うが。
もちろん高度なことをやろうと思えばもっと奥が深いけどね。
でもたいていのことは「基本文法+関数(リファレンス調べれば良い)」でOKでそ。
578nobodyさん:2006/05/16(火) 11:23:40 ID:???
とりあえず動けばいいだけならそんなもんでしょ
579nobodyさん:2006/05/16(火) 11:25:19 ID:???
>>569
学校行けば?
580nobodyさん:2006/05/16(火) 11:31:02 ID:???
>>569
> パソコンも基本的なことはわかります

じゃあこのコマンド知ってるか?
これが分かればパソコンを理解してると判断できる

[Windowsキー]押す [U]を二回押す。
581nobodyさん:2006/05/16(火) 11:40:52 ID:???
htmlentitiesとhtmlspecialcharsの違いを教えてください。
582nobodyさん:2006/05/16(火) 11:56:22 ID:???
>>580
Windowsキーがありませんw
583nobodyさん:2006/05/16(火) 12:08:16 ID:???
Linuxですが(笑い)
584nobodyさん:2006/05/16(火) 12:37:33 ID:???
php鯖でsafe_modeをOnにした状態で開放しようと思うのですが、
safe_mode_exec_dir配下(又は直下)のディレクトリにあるSystem関数が使えません。

例えば safe_mode_exec_dir =/var/www/html
と指定して/var/www/html/test.phpに、

system("ls");

と書くとエラーが帰ってきます。
これは指定の方法が間違っているのでしょうか。ご指摘お願いします。
それと少し反れますが、safe_modeをOffで

system("ls -la /home/hoge");

だと何も帰ってこないのに

system("ls -la /var/www/html/");

と書くとディレクトリ一覧が丸見えになってしまいます。
アクセス権限はhomeと同じ状況を再現したつもりなのですがphpはhomeに対して何か特別な設定がされているのでしょうか。
実はsafe_modeをOnにしているのも/var以下のファイルが見えてしまうからです。
585nobodyさん:2006/05/16(火) 13:30:51 ID:???
ディレクトリ内のファイル一覧を取得する方法を教えてください
586nobodyさん:2006/05/16(火) 13:36:04 ID:???
>>569
はじめてのPHPといった感じのタイトルの書籍買え。
Hello worldからやってくしかない。
587nobodyさん:2006/05/16(火) 13:44:05 ID:???
588nobodyさん:2006/05/16(火) 14:35:39 ID:???
>>584
どんなエラーが出力されたの?

>>585
ディレクトリ一覧を取得するためにsystem()を用いるのは気持ち悪いな。
つ opendir() & list()
589nobodyさん:2006/05/16(火) 14:59:11 ID:2DWA6EEG
文字列の中から、文字を指定範囲抜き出す関数ってなに?
abcdefgの中のcからfまで抜き出すとか…
590nobodyさん:2006/05/16(火) 15:27:33 ID:???
>>584
その場合のsafe_mode_exec_dir には lsコマンドのあるディレクトリを指定しないといけない
safe_mode_exec_dir = /bin

system("ls -la /home/hoge");
hogeのパーミッションを707か757か777に
591nobodyさん:2006/05/16(火) 16:17:35 ID:???
>>589
substr
592nobodyさん:2006/05/16(火) 16:31:52 ID:???
数字をフォーマットしたいのですがcのsprintfのような関数はありませんか?
593nobodyさん:2006/05/16(火) 16:34:24 ID:???
>>592
sprintf
594nobodyさん:2006/05/16(火) 16:46:56 ID:ivYPrAjt
session変数をssl内で設定して、
通常サイトへ戻ってくるとsessionに格納したデータが消えてしまいます。
これはバグのせいでしょうか?それとも設定の問題?
595nobodyさん:2006/05/16(火) 16:54:54 ID:???
>>594
レンタル鯖を利用していて、SSL使用するときに別鯖をはさんでるとか
596nobodyさん:2006/05/16(火) 17:38:48 ID:???
<?php
include "ヘッダー";
include "メニュー";
include "本文";
include "フッター";
?>
な感じでページを管理する時に
ページのタイトルに関する情報は本文ファイルに含めるのが効率的だと思うんだけど、
上のやり方だとヘッダのところで先にタイトルを出力しないといけません。

どうやって本文ファイルからタイトルを出力するのが効率いいのでしょうか?
できればファイルのI/Oは上の4回に抑えたいのです。
597nobodyさん:2006/05/16(火) 17:47:43 ID:???
どうでもいいが、そこまでしてファイルのI/Oをケチる必要はない
598nobodyさん:2006/05/16(火) 18:21:06 ID:???
>>597
禿同
まあなんか理由があるんだろうが

>>596
includeの内容を直接出力しないで、(ob_start()等で)一旦変数に蓄え、
本文ファイル内でヘッダの内容を書き換えるようにしては?
599nobodyさん:2006/05/16(火) 18:59:09 ID:1Q+rAczY
こんにちわ。下記の文章から54位の54だけを取り出したいのですが、
正規表現はどのように書けばよいでしょうか。ちなみに、javascriptです。
<hoge34>本日は54位<hoge34>
inner.match(/[0-9]+位|-位/g);
とやりますと位まで入ってしまうので・・・お願いします。
600nobodyさん:2006/05/16(火) 19:25:37 ID:???
PHPでMySQLのレコードAとレコードBの内容をごっそり入れ替えたいのですが、どうすればよいのかわかりません。ヒントだけでも良いのでご教示お願いします。
601nobodyさん:2006/05/16(火) 19:56:40 ID:???
str_replace('レコードA' ,'レコードB' $FOOBAR)
602nobodyさん:2006/05/16(火) 20:38:13 ID:???
>>600
カラム名を入れ替えればいいんじゃね?
603602:2006/05/16(火) 20:38:48 ID:???
まちがった。カラムじゃないのか。
604nobodyさん:2006/05/16(火) 20:57:41 ID:???
>>600
レコードの一部を入れ替える質問
http://pc8.2ch.net/test/read.cgi/db/1140154701/529-546n

レコードにソート用のフィールドを加える質問
http://pc8.2ch.net/test/read.cgi/db/1140154701/785-799n

まあ一回のクエリではなく何回もクエリ発行すれば難しい問題ではない
605nobodyさん:2006/05/16(火) 20:58:37 ID:???
>>601-603
すいません、説明不足でした。
レコードの上下関係を入れ替えたいのです。Bレコードより上にあるAレコードをBレコードの下にもっていきたいのです。
606nobodyさん:2006/05/16(火) 21:07:45 ID:???
DB内の各レコードに上下関係(順序)は無い。
取り出す時になんらかの条件で順序を指定してやることで順番が生まれる(order by)。
とは言っても、順序を指定しない場合でもなんらかの順番でデータを取り出していく必要があるので、
それがたまたまABの順番に並んでいただけ。
607nobodyさん:2006/05/16(火) 21:08:27 ID:???
さらに補足
元のAレコードは削除したいです。移動後のAレコード1つ、ということです。
608nobodyさん:2006/05/16(火) 23:25:13 ID:???
zend5誰かnyに流してください><
609nobodyさん:2006/05/17(水) 00:44:18 ID:2nYaOrw7
変数が取得できません。
$_POST['f_name'];
$_POST['f_mail'];
$_POST['f_sex'];
$_POST['f_age'];
$_POST['f_add'];
$_POST['f_blad'];
$_POST['f_comment'];
$_POST['f_time'];

書き方はこれじゃないですか?
フォームでPOSTで別のPHPに飛ぶのですけど
変数を受け渡しできません。なぜでしょうか?
610nobodyさん:2006/05/17(水) 00:55:36 ID:???
>>609
試しに、

<?php echo $_POST['f_name']; ?>

してごらん。
611nobodyさん:2006/05/17(水) 01:04:38 ID:2nYaOrw7
>>610
すみません、空白でした。
うpしてみたのですけど、これではなぜだめか
よければ教えてください。お願いします。

http://venus.aez.jp/uploda/data/dat6/upload324523.zip
612nobodyさん:2006/05/17(水) 01:12:18 ID:???
>>611
$_POST['f_name'];ってどこに書いてあんの?
613nobodyさん:2006/05/17(水) 01:16:49 ID:???
$f_name = htmlspecialchars($f_name);
未定義の予感…
614nobodyさん:2006/05/17(水) 01:17:27 ID:???
>>611
<form action="<?php echo $PHP_SELF; ?>" method="POST" name="form" target="_parent" id="form">
今回の質問には直接関係ないけど、PHP_SELFの使い方が間違ってるぞ
615nobodyさん:2006/05/17(水) 01:17:34 ID:???
$_POST配列使ってねーじゃん

試しにprint_r($_POST);使ってみ
<?php
print_r($_POST);
//時間の取得
...略
616nobodyさん:2006/05/17(水) 01:41:04 ID:???
register_globalsが前提になってるね。
使っているPHPは4.2.0以前?

以降ならば
$PHP_SELFを$_SERVER['PHP_SELF']
129行にextract($POST);
と書くと動くようになると思うけど
こういう書き方は良くないから書き直した方がいいと思う。

それから、ファイルに書き込んでるところがバグっぽいね。
617nobodyさん:2006/05/17(水) 01:42:55 ID:???
ごめん
×$POST
○$_POST
618nobodyさん:2006/05/17(水) 02:11:53 ID:2nYaOrw7
>>612
無理だったので別ページのは消しました、すんません

>>613
未定義ですか?
PHPの小部屋というサイトを参考にしたのですが

>>614
同じくPHPの(ry

>>615
使ってみました。
Array ( [f_name] => ああああ [f_mail] => ああああ [f_sex] => 男性 [f_age] => 11 [f_add] => 静岡 [f_blad] => O [f_comment] => ああああああ [regist] => 投稿する ) 「」

これで格納されたのでしょうか?

>>616
どういう意味でしょうか?
619nobodyさん:2006/05/17(水) 02:20:59 ID:???
>>618
> 無理だったので別ページのは消しました、すんません
「動かない」と言ってるものを見せないと動かない原因なんて分かるわけが無い。

> PHPの小部屋というサイトを参考にしたのですが
そこに
「*PHP4.2.0以降において、GETとPOSTでのデータの受け取り方に大きな変更点があります。必ずお読み下さい。」
と書いてないか?
アップロードされたスクリプトでの書き方はもう古いからそのままでは動かない。

> Array ( [f_name] => ああああ [f_mail] => ああああ [f_sex] => 男性 [f_age] => 11 [f_add] => 静岡 [f_blad] => O [f_comment] => ああああああ [regist] => 投稿する ) 「」
> これで格納されたのでしょうか?
$_POST['〜']形式の変数なら動くはずだ。もう1度書き直せ。
620nobodyさん:2006/05/17(水) 02:29:43 ID:2nYaOrw7
<?php
$_POST['f_name'];
$_POST['f_mail'];
$_POST['f_sex'];
$_POST['f_age'];
$_POST['f_add'];
$_POST['f_blad'];
$_POST['f_comment'];
$_POST['regist'];
//時間の取得


これでいいのですか?
621nobodyさん:2006/05/17(水) 02:30:47 ID:???
>>620
違う。$f_nameとか書いてる場所を$_POST['f_name']に差し替えろ。
今のPHPでは$f_nameなどの変数は自動的には生成されなくなってる。
622nobodyさん:2006/05/17(水) 02:34:00 ID:???
>>618
例えば
<input name="f_name" value="ああああ">
でPOSTすると古いバージョンか設定によっては
$f_nameに"ああああ"が格納される場合があって、新しいバージョンの場合は$f_nameという変数は無くて
$_POST["f_name"]="ああああ"と格納される。もちろん$_POST["f_mail"],$_POST["f_age"]も格納される
615の指示でそれが確認できたわけだ。

ここら辺の状況(バージョンや設定)は下を参照
ttp://jp.php.net/manual/ja/language.variables.external.php

でだ、616に書いてある
>129行にextract($POST); <-617に書いてある通り $_POSTが正解
を追加するとだ、$_POST["f_name"]とか$_POSTという配列に入っている
連想配列のキー(f_nameとか)の名前で変数を作ってくれる
ttp://jp.php.net/manual/ja/function.extract.php

で解決すると思われる。がっあまりよろしくないのでできることならば
extractされる変数を全て$_POST["f_name"]のように書き直して
extractを使わないほうが良い。
ttp://jp.php.net/manual/ja/security.globals.php

以上612から勝手にまとめますた
623nobodyさん:2006/05/17(水) 02:34:35 ID:???
$_POSTは関数じゃねええええぇぇぇぇ!!
いくら下質でもここまで下らないと涙が出てくるな
624nobodyさん:2006/05/17(水) 02:38:25 ID:2nYaOrw7
ということは、すべてにおいて変数は
$〜の形じゃなく$_POST['〜']になるんですか!?
625nobodyさん:2006/05/17(水) 02:39:58 ID:???
>>624
変数は、じゃなく「POSTで送信される変数は」。
626nobodyさん:2006/05/17(水) 02:46:22 ID:???
(´-`).。oO(なんで質問者がくってかかるような調子なんだろう…)
627nobodyさん:2006/05/17(水) 02:47:33 ID:???
PHPは簡単だって聞いてたのに騙された!と思ってるカラ
628nobodyさん:2006/05/17(水) 02:54:41 ID:2nYaOrw7
つまり、

$f_name ⇒ $_POST['f_name']
$f_mail ⇒ $_POST['f_mail']
$f_sex ⇒ $_POST['f_sex']
$f_age ⇒ $_POST['f_age']
$f_add ⇒ $_POST['f_add']
$f_blad ⇒ $_POST['f_blad']
$f_comment ⇒ $_POST['f_comment']

にすればいいのですよね!
629nobodyさん:2006/05/17(水) 07:46:11 ID:???
御意
630607:2006/05/17(水) 09:35:40 ID:???
>>606
亀レスすいません。よくみてませんでした。
そうですか、了解しました。ありがとうございましたm(__)m
631584:2006/05/17(水) 10:04:49 ID:???
>>588
語弊を招く表記をしてしまいスミマセン。
具体的には何も出力されません。 要するにセーフモードなので関数が実行されていないようでした。

system("ls"); (こう書きました

>>590
ということは実行を許可されるプログラムがあるフォルダを指定するのでしょうか。
当方プログラムを実行することが許可されるphpのフォルダと認識しておりました。

逆にその様に 特定のディレクトリ配下のphpはプログラムの実行が許可されるような設定は可能でしょうか。
具体的にはhome以下のディレクトリではプログラムが実行されなければこちらとしては何の問題もありません。
もっと言えばプログラムは実行されてもよいのですが /var/www/ 以下が見えてしまう状況を阻止できれば問題ありません。

>system("ls -la /home/hoge");
>hogeのパーミッションを707か757か777に
こちらも語弊を招く表記をしてしまいスミマセン。
逆です。homeの様にvar以下も見えない様にしようとしています。

試しに /var -> 0701 /var/www/ -> 0701 /var/www/html/ -> 0701 としましたが、
/var/www/html/test/test.php のソースがcatで出力されてしまいました。
ちなみに所有者は全てrootです。実験ユーザは/home/hoge/test.php からhogeユーザー権限で

system("cat /var/www/html/test/test.php"); を実行しました。

safe_modeをOnでは見えなくなりますが逆にこちらもfreeなどが実行できなくて支障がでています。

よろしくお願いします。
632nobodyさん:2006/05/17(水) 10:43:47 ID:???
具体的にイメージが浮かばないので質問します。

日記などのプログラムで、日付をセレクトメニューで選んで登録出来るものがあるとします。
日記プログラムにアクセスすると、今日の日付が選択されています。
そして過去の日付は選択出来ないようにします。

dateを取得してifで判別し、適合するセレクトメニューのoptionにselectedを
付けたら選択されている状態になるかと思うのですが、どうもソースが増えすぎます。

何か簡略的に表示出来て、「今日の日付を選択・過去の日付は表示されない」
ようにする方法はありませんでしょうか?
633nobodyさん:2006/05/17(水) 10:53:36 ID:???
>>632
「過去は表示させない」で「今日の日付」を選択するなら、常に最初の値が
selectedになるんじゃない?
634nobodyさん:2006/05/17(水) 10:58:24 ID:???
ログファイルにアクセスできないようにするのって、どうやれば?
いま、ログファイルが丸見えで、アクセスしたら、個人情報も丸見えなんだけど…

.htaccess?

635nobodyさん:2006/05/17(水) 10:59:42 ID:bNJTvUbh
<select>
for(当日から月末まで){
echo "<option ".(本日 ? "selected" : "" )." >日付<option>";
}
</select>

みたいなかんじでだめなの?
636nobodyさん:2006/05/17(水) 11:12:01 ID:???
>>634
document_rootより上のディレクトリにファイル置けば終了
637nobodyさん:2006/05/17(水) 11:14:30 ID:???
>>634
ログファイルの拡張子を変えたら?「〜.cgi」とか。
638632:2006/05/17(水) 11:32:06 ID:???
>>635
それでやってみます。ありがとうございました。
639nobodyさん:2006/05/17(水) 12:26:23 ID:???
そろそろ誰か631にも答えてあげてくだしあ><;
640nobodyさん:2006/05/17(水) 13:15:44 ID:???
>>636
Document_rootって?
いま、
/new
├index.php
└/log
 └hoge.log
ってなってるんだけど

>>637
サンクス、試してみるよ
641nobodyさん:2006/05/17(水) 13:30:38 ID:???
>>640
普通はこんな感じで配置する
/new
└index.php
/log
└hoge.log
642nobodyさん:2006/05/17(水) 14:09:30 ID:???
php の print 的な出力をなんとかして、ファイルに保存ってやっぱりムリですかね?
やりたいのは pukiwiki の全頁の出力を html としてファイルに保存なんですが。
pukiwiki ではスキンファイルを用意して
<html>
hogehoge
</html>
のようになっているのを require(スキンファイル); のように最終的に出力しているようです。

外から http 経由させるしかないのかしら。
643nobodyさん:2006/05/17(水) 14:52:13 ID:???
>>642
フツウにファイルの入出力関数で出来る。

そんなことより>>631を教えてクレクレ。
644nobodyさん:2006/05/17(水) 16:01:09 ID:???
>>642
ファイルの先頭に
<?php
ob_start();

最後に
file_put_contents("hoge.html", ob_get_contents());
ob_end_clean();
exit;
?>
645nobodyさん:2006/05/17(水) 16:02:30 ID:???
>>643
フツウにセーフモードをオフにすれば出来る。

そんなことより次の質問クレクレ。
646nobodyさん:2006/05/17(水) 16:55:29 ID:???
みなさん漢字の50音の並べ替えってどうやってしてます?

何か便利な関数(またはモジュール?)などありましたら教えてください
647nobodyさん:2006/05/17(水) 17:03:09 ID:???
>>646
振り仮名のフィールドつくってそれでソートする。
648646:2006/05/17(水) 17:19:03 ID:???
>>647
データベース側とかで、ふりがなフィールドを増やし ORDER ですか

やっぱ上記のが一般的&簡単&確実ですかね
649646:2006/05/17(水) 17:21:41 ID:???
途中で送信してしまいました。

データベース側を変更することができない場合はPHP側でどうします?
(下流プログラム変更のみ可能、またはDB件数が多く修正が事実上不可能)
650nobodyさん:2006/05/17(水) 17:25:26 ID:???
なんのため世の中の個人情報にふりがな欄があると思ってるんだ。
651nobodyさん:2006/05/17(水) 17:25:45 ID:???
>>649
漢字のままでソート
652nobodyさん:2006/05/17(水) 17:34:17 ID:???
>>650
おまえのような かんじがよめないやつ のため
653nobodyさん:2006/05/17(水) 17:52:32 ID:???
「一二三」
と書いて
「いちにさん」なのか
「ひゃくにじゅうさん」なのか
「ひふみ」なのか
人間にだってわかんないもんがコンピュータにわかるわけないじゃん。
654nobodyさん:2006/05/17(水) 17:54:38 ID:Li0DlXrb
最新の2ヶ月の平均値を求めたいのですが、
値のない月もあるため、毎月の値があるわけではありません。

プログラムする上で、
流れをどうのように考えたらよいか教えてください。
655nobodyさん:2006/05/17(水) 18:01:21 ID:???
>>654
まずは組んでみよう。話はそれからだ
656nobodyさん:2006/05/17(水) 18:02:48 ID:???
>>645
解らないのに中途半端なレスしないでくだしあ><;
657nobodyさん:2006/05/17(水) 18:09:52 ID:???
まあ慣れれば漢字のソート順もなんとなく分かるようになるよ。
はじめの設計が悪かったんだ。あきらめて漢字のままソートしれ。
658nobodyさん:2006/05/17(水) 18:32:06 ID:???
最近寝れないんですけど、どうしたらいいのでしょうか?
659nobodyさん:2006/05/17(水) 18:47:28 ID:nPnNtFXb
$this->getarray()が配列を返すとして、
この配列の要素に直接アクセスしたい場合はどうすればいいですか?

{$this->getarray()}[0]

じゃだめですよね。
660nobodyさん:2006/05/17(水) 18:48:52 ID:???
つ【睡眠薬】
661nobodyさん:2006/05/17(水) 19:01:41 ID:???
>>659
一旦変数に入れる
直接はPHPの仕様上_
662nobodyさん:2006/05/17(水) 19:12:26 ID:???
$this->directsetarray( $index, $data );
とかを作る
663nobodyさん:2006/05/17(水) 19:22:27 ID:nPnNtFXb
>>661,662
サンキューです。
perlも好きでよく使うので、ついついこう書いてしまいたくなるんですよね。
できないのであれば、とりあえず一時変数に入れてやっておきます。
664nobodyさん:2006/05/17(水) 19:29:45 ID:???
>>663
Perlも最近は構造化とかクラス化とかの概念を取り入れてるとか聞く。
そうするとそういった書き方はあまり好ましくないんじゃないか?

どーでもいいけど。
665nobodyさん:2006/05/17(水) 21:25:35 ID:???
PHPでも確か$this->hoge()->hage()とかできなかったっけ。
666nobodyさん:2006/05/17(水) 21:40:17 ID:???
phpでディレクトリを作成したら所有者がapacheになって消せなくなってしまいました。
どうしたら、apache以外に出来ますか?
667nobodyさん:2006/05/17(水) 21:41:48 ID:???
>>664
最近ってPerl5が出たのはPHP5の何年前だとおもってるんだ!
でもoooの考えから行くと、なんでもオブジェクトと想定できるのは好ましいんじゃないの?
668nobodyさん:2006/05/18(木) 00:15:24 ID:???
>>664
PerlのCPANライブラリは大半がクラスで作られてるが
それでも>>659くらいの書き方は当たり前のようにやる。
oopごときでPerlの信念は揺るがない。
669nobodyさん:2006/05/18(木) 00:18:40 ID:???
PHP4で665の構文は使えるのでしょうか?
繋がれる側メソッドでreturn $this;してるのですがパースエラーとなってしまいます。
670nobodyさん:2006/05/18(木) 00:25:59 ID:???
>>666
キリ番野郎め
rootにはなれないのか?
じゃあ、PHPで作成してディレクトリを作ったんだから
もう一回PHPでディレクトリを削除してみてはどうだろう
上手く行ったらお前のおっぱいうp
671nobodyさん:2006/05/18(木) 00:26:41 ID:???
>>669
使えない
672nobodyさん:2006/05/18(木) 00:30:28 ID:???
673nobodyさん:2006/05/18(木) 01:22:13 ID:???
perlの無名(配列|ハッシュ|リファレンス)って好きだな。
674nobodyさん:2006/05/18(木) 04:32:45 ID:???
他人の作った
function hoge() {
static $called;
if ($called) {return 'do not call twice';}
$called = true;
}
みたいな関数があるのですが、そのコード自体は変更せずに
外からこの static 変数の値に無理やりアクセスして値を false に戻すような
ハックをしたいのですが、できますでしょうか?
675674:2006/05/18(木) 10:21:47 ID:???
うわーん、返事がニー。
676631:2006/05/18(木) 10:34:14 ID:???
うわーん、返事がニー。
そろそろマジレスクレクレ(´・ω・`)ショボーン

ガチで困ってるんです><;
677nobodyさん:2006/05/18(木) 10:45:19 ID:???
>>674
ほれ
//他人が作ったやつ
function hoge() {
static $called;
if ($called) {return 'do not call twice';}
$called = true;
}

//抹消
unregister_tick_function("hoge");

//自分で作る
function hoge(){
....
}
678nobodyさん:2006/05/18(木) 10:49:12 ID:???
それ無理くさい
679678:2006/05/18(木) 10:50:32 ID:???
ってごめん、>>678はなかったことにして
680nobodyさん:2006/05/18(木) 11:21:31 ID:R6Lcg4C1
オラクルってやつ買ったんですけど、使い道がわかりません。。。
どうやって使うのがいいですかね?おすすめの方法とかあったら教えてください。
681nobodyさん:2006/05/18(木) 11:51:01 ID:???
>>680
現時点で使い道が判らないのなら、今は必要ないってこと。
ヤフオクで売れば?ソフトウェア時間が経つと普通どんどん価値は下がるから
(買ったときからの値段の面でね)
682674:2006/05/18(木) 12:26:58 ID:???
>>677
ちょっと調べてみたんだけど、
それって register_tick_function で登録したものを解除するんじゃないの?
tick っていう仕組み用じゃないの?意図通り動かないんですが。
unregister_tick_function("hoge");
hoge();
で hoge() 呼べてるんですが。
683nobodyさん:2006/05/18(木) 12:45:39 ID:???
>>682
関数名そのままの動作なんだが・・・
tickへの登録を解除するだけ

http://www.php.net/manual/ja/language.functions.php
>PHP は関数のオーバーロードをサポートしていません。 また、宣言された関数の定義を取り消したり再定義することもできません。
684674:2006/05/18(木) 12:53:39 ID:???
>>683
へむへむ。

何か他の方法ないですかね?
685nobodyさん:2006/05/18(木) 13:57:14 ID:???
>>684
ないんじゃね?
686nobodyさん:2006/05/18(木) 14:00:38 ID:???
>>684
ないね
687nobodyさん:2006/05/18(木) 14:13:06 ID:???
>>631
結局、何に困ってるの?
system() の外部コマンドの結果が気にくわないということだったら、
これはもうPHPとは関係ないよ。聞く場所を間違ってる。
688nobodyさん:2006/05/18(木) 14:15:12 ID:???
>>687
無知な人がレンタルスペース業を始めようとして困ってるだけとか
689nobodyさん:2006/05/18(木) 14:40:07 ID:JEjNXrfu
PHPでPNGファイルのCRCを計算するスクリプトキボン
690軟式PHP:2006/05/18(木) 14:47:07 ID:???
>>689
スレ違い。カエレ。
そもそも何でPNG限定なんだよw
691軟式PHP:2006/05/18(木) 14:50:22 ID:???
と思ってちょっと調べたらPNGのファイル構造の中にあるCRCのことか。
ここ見て自作して抽出しる。
ttp://www.geocities.co.jp/Playtown-Knight/6845/sd_doc/format_png.html
692nobodyさん:2006/05/18(木) 15:26:14 ID:???
>>689
■こんなCGI作ってください■ Part.2
http://pc8.2ch.net/test/read.cgi/php/1133361560/
693nobodyさん:2006/05/18(木) 17:08:09 ID:???
>>689
「Lvうpしたいので宿題ください」
http://pc8.2ch.net/test/read.cgi/php/1147830986/l50
694nobodyさん:2006/05/18(木) 22:53:26 ID:???
他のスレから来ました。
Perlで他のサイトを取得して表示したいと思っています。
(著作権侵害とかそういうことをしたいのではないです)

お時間のある方にお願いしますが、次のコードで@niftyのトップページを取得してみたら
どうなるか教えていただけませんでしょうか?

print "Content-Type: text/html\n";
print "\n";
use LWP::Simple;
print get( 'http://www.nifty.com/' );

私のところだと、ブラウザ上での表示がぐちゃぐちゃになるんですが…。
695nobodyさん:2006/05/18(木) 23:11:35 ID:???
ほんとにくだらねぇ質問なんだけど
logファイルから、文字列を取得して、それが引数と同じならば、その文字列がある行のほかの文字列を出力するってどうするの?

1\t2\t3\t4\t5\t6
11\t12\t13\t14\t15\t16
21\t22\t23\t24\t25\t26
で、2列目が12であったら、その行の6列目を返すって感じで
696nobodyさん:2006/05/18(木) 23:20:24 ID:???
>>694
なんで、このスレに来たの?
697nobodyさん:2006/05/18(木) 23:23:19 ID:???
>>696
質問紙に来たんですが?
698nobodyさん:2006/05/18(木) 23:27:52 ID:???
>>697
スレ名見てなんか気づかない?
699nobodyさん:2006/05/18(木) 23:31:13 ID:???
>>698
くだらない質問のつもりはありませんが、向こうでくだらない質問だといわれましたので。
700nobodyさん:2006/05/18(木) 23:33:29 ID:???
>>699
う〜〜〜〜ん…
701nobodyさん:2006/05/18(木) 23:33:48 ID:???
>>695
なんか言ってる意味がよくわからんのだが
えーと、引数に "12" ってきたら
"11\t12\t13\t14\t15\t16" の中から"12"を削除して表示できればいいんかいな?

まぁとりあえず正規表現でググれ
702nobodyさん:2006/05/18(木) 23:35:09 ID:???
>>699
スレ名の【】の中にある3文字のアルファベットでググればわかるよ
703nobodyさん:2006/05/18(木) 23:36:11 ID:???
ああ、Perlにクダ質スレって無いんだな…
>>699
君は、まず2ch初心者板へいったほうが良いよ
704nobodyさん:2006/05/18(木) 23:40:38 ID:???
>>694はPerl関係から来たマルチだからほうって置け。
705nobodyさん:2006/05/18(木) 23:47:44 ID:???
SimpleXMLでRSSのデータを取得しているのですが、CMSの名前(MTのバージョンとか)が書いてある
<admin:generatorAgent rdf:resource=〜の項目を取得する方法がわかりません。

$root = simplexml_load_file($url);
$root->channel->children("http://webns.net/mvcb/")->children("http://www.w3.org/1999/02/22-rdf-syntax-ns#");

とやって、$rootをvar_dumpしてみると

object(SimpleXMLElement)#70 (1) { ["@attributes"]=> array(1) { ["resource"]=> string(38) "http://www.movabletype.org/?v=3.01D-ja" } }

というところまでできたのですが、この先の取得方法がわからず、止まっています。。。どなたか、わかりますでしょうか。

↓取得するRSSデータの一部です。

<?xml version="1.0" encoding="UTF-8"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"
xmlns:cc="http://web.resource.org/cc/"
xmlns="http://purl.org/rss/1.0/">

<channel rdf:about="http://hogehoge/">
<title>hogehoge</title>
<link>http://hogehoge/</link>
<description></description>
<dc:language></dc:language>
<dc:creator></dc:creator>
<dc:date>2006-05-12T02:13:52+09:00</dc:date>
<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=3.01D-ja" />
706nobodyさん:2006/05/18(木) 23:48:31 ID:???
>>701
12って入ってきたら、16って返したいんだ。
引数とログファイルの2行目を比較して、マッチすれば、その列の6行目を返す…
707nobodyさん:2006/05/18(木) 23:59:35 ID:???
>>706
file() -- ファイルの中身全部を1行ずつ配列に格納する関数
explode() -- 区切り文字で文字列を分割する関数
foraezh() -- 配列を1つずつ取り出せるループ構文
if() -- 条件構文

これくらいヒントあればいいか?
708nobodyさん:2006/05/19(金) 00:01:58 ID:???
709nobodyさん:2006/05/19(金) 00:12:04 ID:???
メールチェックの際、送り先のアカウントが存在しているか
しらべる方法はあるのでしょうか。
710nobodyさん:2006/05/19(金) 00:45:32 ID:???
>>709
ない。

まあMLやメルマガの配送とかやってるなら、
User unknownのエラーメールが返ってきたら
配布リストの休止にマークとかいう処理で良いんじゃない。
配信に影響すんのはそういったエラーリターンとかだから、
相手のメールサーバはUser unknownのエラー返さなくて捨てても
その場合は自分には関係ないと思われ。
711nobodyさん:2006/05/19(金) 00:47:29 ID:???
サンプルコードとか書く時、バックスラッシュをわざわざ全角のバックスラッシュ(斜線)で書くのって定石なの?
712nobodyさん:2006/05/19(金) 00:49:27 ID:???
>>711
半角のバックスラッシュは表示できないから
713nobodyさん:2006/05/19(金) 00:55:45 ID:???
>>711
なんかのブラウザは記事投稿するとき勝手に\を\とか¥にする
714nobodyさん:2006/05/19(金) 01:30:06 ID:???
\でいいじゃん
715nobodyさん:2006/05/19(金) 01:36:22 ID:???
1:あなたはミスをするのだということを理解し、受け容れよう。物を作る前にこの点をはっきりさせよう。
  幸いなことに、ロケットのガイドソフトをJPLで開発しているような少数の例外を除けば、私たちの職業
  ではミスは滅多に致命傷にはならない。だから、学ぶべきだし、学ぶことができるんだ。そして笑い、前
  するんだ。

2:あなたの書いたコードはあなたの分身ではない。レビューのポイントは、問題を発見すること、そして問題は
  見つけられるのだだということを覚えておくといい。誰かが指摘してくれるときのために、コードを公開しな
  いのは良くない。

3:あなたがどれだけ「空手」について知っていようとも、ほかのだれかがもっと知っているのだ。あなたが教え
  を乞えばだれかが教えてくれる。第三者からの情報を探して受け入れるんだ。特に、もう教えてもらうことな
  んてないと思っていることに対して。

4:会議の一つもしないで、コードを書き直しちゃいけない。「コードを修正すること」「コードを書き直すこと」
  この二つには明確な境界がある。違いを知り、一匹狼としてではなく、コードのレビューという形を通してスタ
  イリッシュな変更を目指そう。

5:あなたよりも知識が劣っていると思う人たちに対して、尊敬、尊重、寛容の気持ちを持つことだ。例外なく、技
  術系でない人間は、次の通説を支持している。できる技術者とできない技術者の違いはプリマドンナと泣き喚く
  赤ん坊ほどの差があると。こんな怒りと絶望に満ちた決まり文句は、広めてはいけない。

716nobodyさん:2006/05/19(金) 01:36:53 ID:???
6:唯一不変な法則は世界は変化するということである。笑ってこのことを受け入れ、そして広めて欲しい。仕様や
  プラットフォーム、ツールの変化は、拒否すべき不便なことではなく、新しいチャレンジだと受け取ろう。

7:真の尊厳は地位ではなく、知識にある。知識は権威を起こし、権威は尊敬を起こしてくれる。エゴレスな環境に
  おいて、尊敬が欲しいなら、知を探求することだ。

8:あなたは自分の信じていることを突き崩し、そして敗北を受け入れなければならない。あなたのアイデアはしば
  しば踏みにじられるものだということを理解しよう。あなたの意見が正しかったことがのちにわかったとしても、
  「だから言ったのに」なんてうらみごとは言っちゃいけない。そして葬られたアイデアは、殉教者や、左翼の集会
  のように扱ってはいけない。

9:「引きこもり」になっちゃいけない。真夜中のオフィスで、コーラを買うためだけに部屋をでる、そんなプログ
  ラマになっちゃいけない。そんなことをしていると、コミュニケーションもなく、かえりみられることもなく、
  コントロールも効かなくなってしまう。オープンで、協調的な環境を築くことはできない。

10:人ではなくコードを批判しよう。プログラマには優しく接して、コードには厳しく接しよう。できるかぎり、
  あなたの発言はポジティブでコードを改善するものでなくてはならない。コーディング標準や、プログラムの構
  造、パフォーマンスの改善に向けられた発言をすべきなんだ。
717nobodyさん:2006/05/19(金) 01:52:55 ID:???
セッションを使ってログイン処理を実現したいのですが、
これにはクッキーは必要ないのでしょうか?

私が試しに作ったログイン処理コードは、よく見たらsetcookieなどを使っていません。
つまりクッキーを使用せず、セッション関数のみです。
 (※ログインフォームで入力されたIDとパスがDBに保存しているものと一致したら、$_SESSION['login'] = "true"とフラグを立てる。
  そのフラグがtrueでなければログインしていない状態と判断する。)
上記のようにクッキーを使っていませんが、期待した通りの動作(ログイン処理)をしているように見えます。

しかし以前に何かで読んだのですが、「ログイン処理ではセッションIDをクッキーに保存して云々」とか
書かれていたような気もします。

セッションを使ったログインには、クッキーは必須なのでしょうか、必須ではないのでしょうか。
そもそもクッキーが何のためにあるのか、よく分からなくなってきました。
718nobodyさん:2006/05/19(金) 02:06:29 ID:???
>>717
PHPではセッションIDの保存は自動でしてくれる
大抵Cookieに保存してるがCookieが使えない場合URLの末尾に自動的に付記される

Cookieはデータをクライアント側に保存する技術
セッションはデータをサーバ側に保存する技術
719717:2006/05/19(金) 02:34:29 ID:???
>>718
セッションIDはURLの末尾には付加されてませんが。。。。

php.iniではクッキーのみ使うような設定にしてありますが、
実際にスクリプト内で明示的にSetCookie関数を使わないと
クッキーは使用されませんよね??
720nobodyさん:2006/05/19(金) 02:59:03 ID:???
>>719
よく嫁
>"Cookieが使えない場合"URLの末尾に自動的に付記される
それとCookieが使える場合はセッションIDはCookieに保存される
SetCookieはコッチがCookieに保存したいときに使う関数だ

マニュアルにもちゃんと書いてあっからまずマニュアル読んで来い
721nobodyさん:2006/05/19(金) 03:59:15 ID:???
ttp://php.thm.jp/index.php?know=link
で紹介されていることをやりたいー

ためしにそのページにあるやつコピペして
phpで保存して鯖にうpしたら
そこで説明されてるとおりにならなかった・・・

知りたいのは・・・・
たとえば「ttp://www.japan.co.jp」があるとして
indexページから001.phpに移動したときに
ttp://www.japan.co.jp/001.php」と表示されますよね?
これを「ttp://www.japan.co.jp/?aaa=link」 ←このような感じにしていんです

知ってるかた教えてください
722nobodyさん:2006/05/19(金) 06:02:21 ID:???
>>721
そのページのドコでやってるのか分からんが
ttp://www.japan.co.jp/?aaa=link ってのはレンタルサーバじゃまず不可能
やるとしたらApacheの方でやるしかないが・・・多分そのスクリプト以外動かせないWebサーバになるぞ

ttp://www.japan.co.jp/001.php?aaa=link なら可能

どっちにしろPHPとは関係ない。
CGIの本でも読みなさい。
723nobodyさん:2006/05/19(金) 07:40:11 ID:???
>>721
こういうことじゃないの?

index.php
<?php
switch ($_GET['aaa']) {
 case "link":
  include "001.php";
  break;
 case "hoge":
  include "002.php";
  break;
 default:
  header("Location: http://www.2ch.net/");
  break;
}
?>

724nobodyさん:2006/05/19(金) 08:10:56 ID:???
>>720
>それとCookieが使える場合はセッションIDはCookieに保存される

いや、自分もそうだと思っていたんですが、
自作スクリプトにアクセス直後(≒ログイン直後)にIEのクッキー保存フォルダを
開いてみても、該当するクッキーが見当たらないんですよ。

でもたしかにセッションによるログインはうまく行ってる・・・だから混乱してます。
725nobodyさん:2006/05/19(金) 08:23:27 ID:???
本当に正しいフォルダを見ているのか、setcookie()で明示的にcookieを発行して
ファイルが生成されるかどうか確かめて見ればいいんじゃないかな。
おいらは面倒くさがりなのでproxomitronとかのプロキシソフトを使って直接HTTPヘッダを覗いてるけど。
726nobodyさん:2006/05/19(金) 08:39:57 ID:???
質問スレってなくなったの?
727nobodyさん:2006/05/19(金) 09:20:32 ID:???
>>726
1000近くなった頃、ここと質問レベルが大差なくなってきたので、次を立てる人がいなかったんだと思います。
728nobodyさん:2006/05/19(金) 11:08:16 ID:???
>>724
>>725の言うようにヘッダをダンプしろ。
729nobodyさん:2006/05/19(金) 11:28:09 ID:???
前から使用しない意味不明な引数を付けたリクエストがあって
 例)
 index.php?hogehoge
 index.php?you=hage
これ自体は普通にindex.phpが返るだけなのであまり気にしてなかったんですが、
少し前にミスったせいで
 例)
 index.php/hoge.php
 index.php/?/hage
 index.php/index.php/index.php
のようなリクエストが来るようになってしまいました。
前者の原因は不明なんですが、後者はミスって修正するまでの数十分の間に
クロールされてしまい、index.phpで表示するはずの画像ファイルのリクエストも
全てindex.phpに送られちょっと無視できなくなってきました。

これらのリクエストに対し404を返したいのですが、どのような方法がありますか?
apache1.3.34 php4.4.2 です
htaccessの方がいいでしょうか?
730nobodyさん:2006/05/19(金) 11:33:10 ID:???
>>727
992で質問したんだけどDAT落ちしちゃったから回答が返ってきたのかすらわからない・・・・・
731nobodyさん:2006/05/19(金) 12:11:12 ID:???
>>724
お前
セッション限り(期限の設定なし)のクッキーの場合クッキーファイルは作成されないんだよ
732nobodyさん:2006/05/19(金) 12:43:44 ID:???
>>730
過去ログ見たけど、回答はなかったよ。まだ解決してなければ、ここで再質問どうぞ。
733nobodyさん:2006/05/19(金) 12:59:46 ID:b+EKMyUQ
フォームから受け取るメールアドレスの値はエスケープする必要はありますか?
734nobodyさん:2006/05/19(金) 13:26:50 ID:???
>>733
目的による
735nobodyさん:2006/05/19(金) 13:34:44 ID:???
>>733
何のためにどこでエスケープすべきか、
もっと基本から勉強した方がいい。
736nobodyさん:2006/05/19(金) 13:52:56 ID:b+EKMyUQ
733です。エスケープしました。
ありがとうございます。
737nobodyさん:2006/05/19(金) 14:46:50 ID:???
>>729
$_SERVER['PATH_INFO']あたりで判定できないかな?
phpinfoを呼び出すプログラムを書いて
そのURIにいろいろくっつけて使えそうな引数探してみるといいかも。
404はheaderで飛ばせるはず。
738nobodyさん:2006/05/19(金) 15:33:15 ID:???
データベース板って住人が少ないのか、質問への回答が得られない場合があって寂しい
739nobodyさん:2006/05/19(金) 15:33:27 ID:???
ログイン判定して、ログイン済の人に内容表示、未ログインの人は飛ばす時って、

if( ログイン判定 ){
内容表示
}
else{
echo 'ログインして下さい';
}

みたいな感じが基本?
if文の中でコンテンツがばーっと続くのがちょっと嫌な感じだったんだけど、どんな風にやるのがいいかな?
740nobodyさん:2006/05/19(金) 15:47:07 ID:???
ifでログインしていない場合の処理をすればいいだろ。
741738:2006/05/19(金) 15:47:32 ID:???
ログイン画面での話なら自分の場合は↓が多い。
・ログインできない人は同じ画面でエラーメッセージ表示
・OKな人は別ページへ飛ばす(飛ばした先でセッション確認)

<?php
if ( ログインできない人 ) { $error="ログインできません"; }
header("Location: ログイン後のページ");
?>
<html>ログインページ内容 <?= $error ?> </html>
742nobodyさん:2006/05/19(金) 15:50:33 ID:???
うは、被ったしelse忘れてた
else { header("Location: ログイン後のページ"); }
743nobodyさん:2006/05/19(金) 16:49:30 ID:???
phpMyAdmin2.8.0.3で「扱えない拡張子のファイルです、<br>PHPの設定をチェックしてください。」
とでたんですが、
考えられる設定漏れはなんでしょうか?
744nobodyさん:2006/05/19(金) 18:26:48 ID:???
たまに$$A=$Zという文をみますが、$が二個ついてるのはなぜどすか?
745721:2006/05/19(金) 18:55:41 ID:???
>>723

おおお!できました!!^^ ありがとうございます
746nobodyさん:2006/05/19(金) 19:21:00 ID:???
>>740
>>741
ログイン画面ならそのような感じでいいんですが
私が今考えているのは、例えば投稿ページのように、ログインしていないとフォームが表示されないように
したいといったページについてです。
そういう場合はどうしていますか?
747nobodyさん:2006/05/19(金) 19:30:50 ID:???
ファンクションつかえ
748nobodyさん:2006/05/19(金) 19:35:07 ID:???
>>746
既に出ている答えで何が不満なのか良く分からんが、
俺の場合は殆どテンプレートファイルを切り替えるだけだから問題ないな。
あとは、ページ表示を関数化したら?
749nobodyさん:2006/05/19(金) 19:37:08 ID:???
今月が30日までなのか、31日まであるかの判定をする方法はないでしょうか?
date関数で日を取得するのはわかるのですが、、、
750nobodyさん:2006/05/19(金) 19:43:21 ID:???
>>749 来月の前日が今月の最終日。
751nobodyさん:2006/05/19(金) 19:45:05 ID:???
//今月末の日付を取得する
$last_day = date("d", mktime(0, 0, 0, date("m") + 1, 0, date("Y")));
752nobodyさん:2006/05/19(金) 20:05:30 ID:???
こんなエラーが出るのですが、
これってどういうときに生じるエラーなのでしょうか。

Warning: pg_query() [function.pg-query]:
Query failed: ERROR:
could not serialize access due to concurrent update in
/phpページのアドレス on line 94

ここでは
Postgresql7.4へupdateのクエリーを送っているのですが、
5人くらいが同時に何度もその問題のページへアクセスしてみると
100回に1回くらいでてきます・・・。
なお、updateするレコードはひとつなので、
取り合いになっていて、その処理がおかしいのかと考えて、
5時間くらいいろいろ試行錯誤してみましたが、
解決していません。

また、このWarning文をブラウザに表示させないようにする方法が
ありましたら教えていただきたいです。

よろしくお願いします。
753nobodyさん:2006/05/19(金) 20:07:12 ID:???
HTMLの「<title>2ちゃんねる</title>」のところををphpで取得できますか?
754752:2006/05/19(金) 20:10:44 ID:???
>>753
文字列を文字列で分割する関数explodeを使ったらどうだろう
755nobodyさん:2006/05/19(金) 20:24:31 ID:???
>>752
それ、PHPの問題じゃないじゃん。
「could not serialize access due to concurrent update in 」でぐぐったら?

Warningを表示させたくないなら、
設定のdisplay_errorsディレクティブとか、
error_reporting関数を見てみな
756nobodyさん:2006/05/19(金) 20:52:39 ID:???
>>753
preg_match( "/<title>.+<\/title>/i", $data, $matches);
$title = $matches[0];
757nobodyさん:2006/05/19(金) 21:09:19 ID:???
久々にきたらマニュアルすら読まねぇ教えてクンが大量発生してんな
なんかの宿題か?
758nobodyさん:2006/05/19(金) 21:18:49 ID:???
>>757
おそらく新人。
どうやって仕事のプログラム書いたらいいかわからないんだろうなw
プログラマー以前。
759nobodyさん:2006/05/19(金) 21:44:09 ID:???
>>756
preg_match('/<title>[^<>]+<\/title>/i', $data, $matches);

の方がいいんじゃないか
760nobodyさん:2006/05/19(金) 21:47:00 ID:???
アドレス帳のようなものを作っています。
例えば、「2006年5月19日〜2006年5月25日までバイト」などの指定が出来る場合、
2006年5月19日〜2006年5月25日までの期間を一度に複数登録出来る必要が
あると思います。

1件ずつデータを追加するのはわかるのですが、どうやって複数の期間を
判別するのかがわかりません。配列に入れてcountで計算?とか思ったのですが、
なんか違うみたいだし・・。登録処理はforでその期間分を回すと思うのですが・・。
761nobodyさん:2006/05/19(金) 22:07:23 ID:???
>>760
よくわからん
例キボンヌ
762nobodyさん:2006/05/19(金) 22:10:34 ID:???
それのどこがアドレス帳かと。。。
763760:2006/05/19(金) 22:13:09 ID:???
>>761
すみません、、簡略化しました。

$main_time1= date("Ymd"); //現在の日時
$main_time2= "20060525"; //開催期間の最終日時
$main_time=$main_time2-$main_time1;

for($i=1;$i<$main_time;$i++){
$kaisai=$main_time1+$i;
echo"開催期間は"."$kaisai"."です。"."<br>\n";
}

これでとりあえず開催期間は表示されますが、20060520のような形になります。
これを2006-05-20のように表示出来ないでしょうか?
764nobodyさん:2006/05/19(金) 22:16:16 ID:???
>>760
それはスケジュール帳の間違いじゃないのか
765760:2006/05/19(金) 22:19:35 ID:???
>>764
スケジュール帳の間違いです。。
766nobodyさん:2006/05/19(金) 22:19:53 ID:???
>>763
それ、月や年超えたらすごい数値にならないか?
767nobodyさん:2006/05/19(金) 22:21:29 ID:???
>>763
substrとかで切ったら?

その前に、$main_timeの内容(中身の意味)は何?
768nobodyさん:2006/05/19(金) 22:24:09 ID:???
>>763
だからマニュアルを読め
substrでもstrtotimeでも好きなのを使え

あと日付差分のアルゴリスムはめんどいぞ、と忠告しておく
769nobodyさん:2006/05/19(金) 22:33:13 ID:???
unixtimeで計算した方が楽だと俺は思う。
770nobodyさん:2006/05/19(金) 22:38:43 ID:???
>>760
20060301-20060228=73
20040301-20040228=73
771nobodyさん:2006/05/19(金) 22:41:49 ID:???
>>768
> あと日付差分のアルゴリスムはめんどいぞ
unix秒に変換→計算→再フォーマット
ってだけじゃないのか
772nobodyさん:2006/05/19(金) 22:59:27 ID:???
>>768
1ヶ月を30日で計算するか31にするかとかのこと。
3ヶ月単位の作業があって、○月の3ヶ月後とか出すのがめんどかった。
90日後なら楽なんだが、11/29の3ヶ月後が2/28なのか2/29なのか、それとも3/1にするのかとかね。

作ること自体は簡単なんだがな。
その年の月の日数を計算する関数つくるだけだし。
773nobodyさん:2006/05/19(金) 23:10:58 ID:???
mktimeの中の人の頭の良さに気づかない馬鹿ども。
774nobodyさん:2006/05/19(金) 23:14:07 ID:???
年月日を分解しておいて
$d++;
$main_time1 = mktime(0,0,0,$m,$d,$y);
echo"開催期間は".date("Y-m-d",$main_time)."です。<br>\n";
な感じ
775nobodyさん:2006/05/19(金) 23:16:33 ID:???
間違えました


最初の年月日を$y,$m,$d分解しておいて
$d++;
$main_time = mktime(0,0,0,$m,$d,$y);
echo"開催期間は".date("Y-m-d",$main_time)."です。<br>\n";

を最後の日($main_time2)までループする感じで
776nobodyさん:2006/05/20(土) 00:18:10 ID:???
配列にデータを格納しようとして

$a[] = 1;

とかをしてみたら

Fatal error: [] operator not supported for strings in *******

というようにその行がエラーだと言われるのですがこれはPHPのバグでしょうか?

PHPは5.0.4です。
777nobodyさん:2006/05/20(土) 00:27:59 ID:???
>>776
$a = array(1);
778nobodyさん:2006/05/20(土) 00:45:07 ID:???
>>776
それやる前に$a="hoge";とかしてない?
779nobodyさん:2006/05/20(土) 00:48:15 ID:???
>>737
PATH_INFOで判別できました。
headerがうまく動いてくれないんですが(他のスクリプトでは問題ないのに)
エラーを表示するようにしました。
助かりました。ありがとうございました。
780nobodyさん:2006/05/20(土) 01:17:33 ID:???
久々にここ着たんだけど
くだ質じゃなくてPHP質問スレってどうなったの?
781nobodyさん:2006/05/20(土) 01:24:55 ID:???
>>780
16日にpart34が埋まって誰も立ててない。>>726-727な感じ。
782724:2006/05/20(土) 01:47:02 ID:???
>>731
phpinfoでsession.cookie_lifetimeを調べたところ、値は「3600」でした。
ということで期限の設定もされていると思うのですが、
もしかして調べるべきディレクティブを間違ってるでしょうか??

他には「session.cache_expire」は「60」、「session.use_cookies」は「On」です。
783nobodyさん:2006/05/20(土) 02:57:18 ID:???
>>782
おまい、CookieにIDとパスワードが残ってるとか思ってないか?
784nobodyさん:2006/05/20(土) 04:00:40 ID:???
2ちゃんのTV番組欄をクリックするのですがファイルが残ってなくて毎回クリックしなきゃならない。なぜ?
785nobodyさん:2006/05/20(土) 04:20:40 ID:???
>>784
  ワケ     ワカ     ラン♪
  ∧_∧   ∧_∧    ∧_∧
 ( ・∀・)  ( ・∀・)   ( ・∀・)
⊂ ⊂  )  ( U  つ  ⊂__へ つ
 < < <    ) ) )     (_)|
 (_(_)  (__)_)    彡(__)
786nobodyさん:2006/05/20(土) 04:28:51 ID:???
>>749
date('t');
787784:2006/05/20(土) 05:03:45 ID:???
http://epg.2ch.net/tv2chwiki/
をIE5で開いても番組ファイルが残ってないのでクリックし直さなきゃなんないのです
788nobodyさん:2006/05/20(土) 05:03:45 ID:???
>>785
そのAA、確か続きがあったよな。どんなのだっけ。
789724:2006/05/20(土) 05:04:48 ID:???
>>783
いえいえ、もちろんそんなこと思ってませんよ。
もし何か保存されてるとしたらセッションIDだけですよね。
自分では明示的にクッキーに何か保存するコードは書いてませんので。

っていうか、とにかくIEのクッキー保存フォルダに、該当ドメインのクッキーが
見当たらないんですよね。。。 他のサイト(たとえばyahooとか)のクッキーはもちろんそのフォルダにあります。
790nobodyさん:2006/05/20(土) 06:32:41 ID:???
すいません。
スレ違いかもしれないのですが、SQLiteってidentityって使えませんでしょうか。。
SQL文は通るのですが、値が入ってないみたいでして。。
PHPは5.1.4使ってます。
791nobodyさん:2006/05/20(土) 07:23:44 ID:???
>>790
identity使えるのはSQL ServerとMS Accessだけ
SQLite含めOracleやpostgreSQL, MySQLでは使えない
792nobodyさん:2006/05/20(土) 09:52:31 ID:???
>>787
キャッシュコントロールによるもの
793nobodyさん:2006/05/20(土) 12:09:03 ID:???
logファイルから、文字(半角英数字を除く)を呼び出したら、文字化けした。。。。
なんで?
携帯サイトだから、SJISなんだけど
794nobodyさん:2006/05/20(土) 12:11:52 ID:???
くだ質があります。

今までで、これは使いやすい・または優秀だと思ったWebアプリのUIは何ですか?
ちょっとPHPとは関係ない感じではありますが、(DHTMLよりかも)
デザイナーではなく、マの視点が聞きたいのもありますので。

Virtual Earth
http://local.live.com/
795nobodyさん:2006/05/20(土) 14:02:30 ID:???
>>794
PHPと関係ないってわかってんならココに書くな
796nobodyさん:2006/05/20(土) 14:40:18 ID:???
まあ大分類だと UI=HTML だからね
797nobodyさん:2006/05/20(土) 14:58:45 ID:???
>>793
解決しました
798nobodyさん:2006/05/20(土) 15:13:58 ID:???
<html>
<head>
<title>aaa</title>
</head>
<body>
<?php
$hour = date('H');
if (3 <= $hour < 10) {
$greeting = 'おはようございます';
} else if (10 <= $hour < 18) {
$greeting = 'こんにちわ';
} else {
$greeting = 'こんばんわ';
}

echo $greeting."現在の時刻は".date('H時間')."です";
?>
</body>
</html>

Parse error: syntax error, unexpected 〜と出るんですが
何がおかしいですかね
うんこな質問だったらごめんなさい
799nobodyさん:2006/05/20(土) 15:27:38 ID:???
エラーの行数も表示されるはずだが、なんで隠すのかねぇ。
とりあえず、この書き方がキモく感じるから、これが間違ってるんでね?
if (3 <= $hour < 10) {
800nobodyさん:2006/05/20(土) 15:40:19 ID:???
if (3 <= $hour and $hour < 10) {
801nobodyさん:2006/05/20(土) 16:30:53 ID:???
phpに直接関係ないかもしれないけど、phpで作るつもりなので質問させてください。
ある会社が提供してるサービスを再販するために、システム開発のためのAPI提供してくれてるんですが、
その使用形式ってのが
http://その会社のアドレス/api.php?id=$id&pass=$pass&action=$action
というアドレスへシステム(php等)からアクセスするっていう方式なんです。
ここでかなり不安になったのが、
URLにID/PASSを含んでることです。
まずSSL使用しなければ危険性盛りだくさんな気がしますし、
このシステムはクライアントに対して利用してもらうことになるので
他にもなんかかなり不安です。
(たとえば、php.iniでエラー表示させる設定にしてて
何かエラーが発生したら簡単にID/PASSを漏らしちゃいそうな・・・
これの場合はその設定をoffにすればいいだけですが)


注意点とかあったら教えてください m(_ _)m
お願いします
802nobodyさん:2006/05/20(土) 16:36:01 ID:???
>>801
ショルダーハックでググると幸せになるかもしれません。
803nobodyさん:2006/05/20(土) 16:45:50 ID:???
>>801
そのURLをPHPの中で使用するという前提でAPI提供してくれているならOKじゃね?
804nobodyさん:2006/05/20(土) 17:02:24 ID:???
>>799
ああああ
もしかして最後のline 7とか出てたのがそれだったんですか
>>780

お二人ともありがとうございました
805nobodyさん:2006/05/20(土) 17:09:46 ID:???
いっつも preg_match_all 使って特定の文字列抜き出してるんだけど、

例:「COUNT=1 COUNT2=2」のCOUNTの値を取り出したい場合は

$var = "COUNT=1 COUNT2=2";
preg_match_all("/COUNT=([0-9])/", $var, $match_list);
$count = $match_list[1][0];

とやってますが、この $match_listの後ろの配列っぷり([1][0])が苦手です。

もっとわかりやすい方法あったら教えてちょ
806nobodyさん:2006/05/20(土) 17:26:52 ID:???
bbsなどで、何処かに 1 2 3 4 5 6.... と数字(アンカー)を出力して、過去ログの各ページに直接ジャンプさせたいんですが、
全てのページ分の数字を出すと、多すぎて邪魔になってしまいます。

そこで、「1 2 (3 表示中) 4 5」や「25 26 (27 表示中) 28 29」のように、指定した数だけ表示させたいのですが、
方法がいまいちわかりません。どのようにすれば良いでしょうか。
807nobodyさん:2006/05/20(土) 17:59:24 ID:???
>>805
$var = "COUNT=1 COUNT2=2";
preg_match_all("/COUNT=([0-9])/", $var, $match_list);
これでOKなのかと小一時間?
808nobodyさん:2006/05/20(土) 18:00:15 ID:???
>>806
表示中の位置(3とか27とか)はわかるんでしょ
ループの開始値は「現在の位置−2」、ループの終了値は「現在位置+2」
809nobodyさん:2006/05/20(土) 18:08:25 ID:???
>>807
言ってることがサニタイズ房と変わらんぜよ
810nobodyさん:2006/05/20(土) 18:12:09 ID:???
>>805
面倒なら一旦
$var2=explode(' ', $var);
とかやって、1つずつ分割してから
foreach ($var2 as $var3) { if (preg_match('〜
のように処理しては?
どっちが分かりやすいかは(゚听)シラネ
811nobodyさん:2006/05/20(土) 18:36:42 ID:???
送られてくるクエリの型を変更できるのならそれがいいかもな
812nobodyさん:2006/05/20(土) 20:54:02 ID:poPXxmgL
PHPの組み込み関数で複合できる暗号関数ってありますか?
ハッシュは見つかるのですが。。
813nobodyさん:2006/05/20(土) 21:01:18 ID:???
PEARならcryptがあった気がするけど組み込みで可逆は記憶にないなぁ・・・
つか可逆暗号化なんて使う機会なかったし。

Blowfishなら簡単に作れるから作ってみたら?
814812:2006/05/20(土) 21:07:32 ID:???
ご回答ありがとうございます。
PHPが出てから結構たつ気がするのですが、ライブラリはまだPerlに比べて貧弱なんですね。。orz
けれど、mod_phpで運用されているところが多いのを考えると。。
Blowish、CPANから引っ張って来て移植してみます。ありがとうございました!
815nobodyさん:2006/05/20(土) 21:15:06 ID:???
セキュリティ対策(CSRF対策など)チェックのためなどにhiddenのvalueを変更したり、値を
変更することを

フォーム内容を変更して

って言っていたんですが、通じなかったのですが、通常なんて言うのですか?
816nobodyさん:2006/05/20(土) 21:59:06 ID:???
最初の2行
817nobodyさん:2006/05/20(土) 22:05:08 ID:???
>>815
業務でやってんならソイツが糞
818nobodyさん:2006/05/20(土) 22:05:18 ID:???
>>815
「フォーム内容」だと漠然としすぎて(値だけじゃなく構成から何から全部含むので)
それで通じるとこは普通無いと思う。
素直に具体的に書け。
819nobodyさん:2006/05/20(土) 22:05:29 ID:???
>>815
すみませんが、あちらにお帰り下さい。
820nobodyさん:2006/05/20(土) 22:08:22 ID:???
みなさんすみません。
>>815
http://pc8.2ch.net/test/read.cgi/hp/1141064508/
で暴れまわっている、◆uuPwxrB4qc というキティちゃんなので
完全放置してください。
821nobodyさん:2006/05/20(土) 22:13:57 ID:???
はーい
せんせーわかりましたー(;´Д`)∩
822nobodyさん:2006/05/20(土) 22:22:11 ID:???
>>815
強いて言えばフォームの送信内容を変更して、かなぁ。
普通はそれ、フォーム内容とは言わないと思う。
823nobodyさん:2006/05/20(土) 23:00:41 ID:???
ぜんぜん分かっとらんやないかー
824nobodyさん:2006/05/21(日) 00:35:06 ID:???
>>815が皆様に御迷惑をおかけしたようで大変申し訳御座いませんでした。
http://pc8.2ch.net/test/read.cgi/hp/1141064508/
にてなぶり殺しの刑に処しましたのでお許しくださいませ。
825nobodyさん:2006/05/21(日) 00:38:49 ID:???
はーい
せんせーわかりましたー(;´Д`)∩
826nobodyさん:2006/05/21(日) 00:53:41 ID:???
>>815
フォームをどうこうでは難しいんじゃないかなぁ
強いて言うならパンツ一丁というか、、、
827nobodyさん:2006/05/21(日) 17:14:54 ID:???
フォームのデータをPOSTしているんですが、
なぜか受け取り側ではGETでしか値を取得できません。
きちんとPOSTでうけとりたいのですが、
どこをいじればいいんでしょう?
お願いします。
828nobodyさん:2006/05/21(日) 17:23:45 ID:???
>>827
methodがgetになっている
829nobodyさん:2006/05/21(日) 17:33:39 ID:???
>>828
↓これがGETでしか受信できません。

<form action="top.php" name="top" method="POST">
<table>
<tr>
<td><input type="text" name="name" value=""></td>
</tr>
<tr>
<td><input type="submit" name="confirm" value="確認"></td>
</tr>
</table>
</form>

830nobodyさん:2006/05/21(日) 17:46:10 ID:DL+BRbj9
>>829
なぜGETでしか「受信」できてないのかを書いたほうがいいかも
#どういう事象からGETでしか「受信」できてないかという結論を導き出したかってことね
831nobodyさん:2006/05/21(日) 18:07:43 ID:???
YouTubeのように、動画から静止画を抜き出したいんですが
これってかなり技術を要するのでしょうか?
解説するページ等があったら教えてください。
832nobodyさん:2006/05/21(日) 18:14:47 ID:5ljoxKlZ BE:266958454-
パンツのゴムひもがゆるゆるなんですが
直す方法ないでしょうか?
パンツがずり下がってきて困ってるんです。
833nobodyさん:2006/05/21(日) 18:22:16 ID:???
>>832
パンツに紐は付いてないのですか?
それを縛ればOK
834nobodyさん:2006/05/21(日) 18:36:47 ID:???
>>831
バックグラウンドで動画からサムネイル抽出するツール起動すればいいだけ。
835nobodyさん:2006/05/21(日) 18:55:08 ID:???
>>831
ffmpegだっけなぁ。そういう動画を扱う(外部)プログラムを>>834のように実行させる
836nobodyさん:2006/05/21(日) 18:57:03 ID:???
>>829
top.php の方もヨロ
837nobodyさん:2006/05/21(日) 19:04:10 ID:???
>>834,835
レンタルサーバー等では無理そうですね…。
ヒントもらえたので色々調べてみようと思います。
838nobodyさん:2006/05/21(日) 19:38:51 ID:???
>>827>>829
変な文章だな。送信はGETでやれてんの?POSTでやれてんの?
ブラウザのアドレス欄を見ればどっちで送信されてるかは分かるだろう。
アドレス欄に「?〜」が付いていないのに、受け取り側では$_POSTが空っぽ、って話?
839nobodyさん:2006/05/21(日) 19:40:09 ID:???
>>837
レンタルスペースだと使えるとこは限られるだろうけど
サーバー貸しのとこならそのくらいインストールできるんじゃね?
840nobodyさん:2006/05/21(日) 19:45:51 ID:???
>>829
実はformタグが入れ子になってたりしてな
841nobodyさん:2006/05/21(日) 22:03:59 ID:???
>>840
というか、その前にある<form>タグの閉じ忘れとか。
842nobodyさん:2006/05/21(日) 23:32:31 ID:???
ログアウトボタンを押したら特定のページに移動するものを作っています。

<?php
if (isset($logout)) {
unset($_SESSION['id']);
header("Location: ../login.php");
}else{
$mess .= "ログアウトしますか?";
$mess .= "<form method='POST' action='$PHP_SELF'>";
$mess .= "<input type='submit' name='logout' value='ログアウト'>";
$mess .= "</from>";
}
echo $mess;
?>

しかし、「ログアウト」のボタンを押すと、以下のようなエラーメッセージが出て
locationされません。どうしたらいいでしょうか?
Cannot modify header information - headers already sent by (output started at
843nobodyさん:2006/05/21(日) 23:38:10 ID:???
>>842
ファイル名見せてみ?
844842:2006/05/21(日) 23:39:51 ID:???
>>843
ファイル名は(というかファイルの場所は)
http://(ドメイン名)/admin/logout/index.php

にしています。
845nobodyさん:2006/05/21(日) 23:46:17 ID:???
header()関数を使う前に何か出力していたので、HTTPヘッダを出力できなかった、というのがそのエラーの内容。
header()の代わりにexit()で終了させて何も出力されていないか確認してごらん。
「何も」にはスペースや改行コードも含まれる。
846nobodyさん:2006/05/21(日) 23:49:40 ID:???
>>842
↓ここに書いてある通り、
headers already sent by (output started at
↓の行が実行される前に何かが出力されている
header("Location: ../login.php");

<?phpの前に空き行が無いか確認
というか、「started at〜」の所にその最初の出力がある行番号が出ているはずだが
あと、Location:のとび先は本来は絶対アドレスで書く
いずれも詳しくはマニュアルのheaderの項目を嫁
847nobodyさん:2006/05/21(日) 23:49:58 ID:???
<?phpの前とかに空白あるってのは定番のバグ
848nobodyさん:2006/05/21(日) 23:50:34 ID:???
>>842
絶対に<?php の前に<html>から始まる一連のHTMLタグが書かれているでしょ
849842:2006/05/21(日) 23:56:42 ID:???
>>845
exit();をしましたが、何も出力されませんでした。

>>846-848
もしかして同じページにheaderが2つあったらいけないのでしょうか?
というのも
<?
ログインを判別するソース。ログインしてない場合はheader("Location")で
ログインフォームに戻す
?>
<html>

>>842のソース
</html>

となっています。
850nobodyさん:2006/05/21(日) 23:59:02 ID:???
>>849
>>842のソースの前に<html>あるじゃん。それだよ。
ログインチェックと一緒にやりましょ。
851842:2006/05/22(月) 00:03:19 ID:???
>>850
わかりました。修正してみます。ありがとうございました。
852nobodyさん:2006/05/22(月) 00:03:25 ID:???
>>649
headerが二つ書いてあったって別に良いけど、
出力(実行)は一回だけ。

ただし、header関数実行以外でも<?php 〜 ?>の外側に何かが書かれていると、
その時点で、PHPはtext/htmlというMIMEヘッダーを出力する。
853nobodyさん:2006/05/22(月) 00:29:24 ID:???
854nobodyさん:2006/05/22(月) 00:39:27 ID:???
>>853
しょーもないからコメントしてあげたw
855nobodyさん:2006/05/22(月) 00:44:06 ID:???
またしょーもないコメント書いたもんだなぁw
856nobodyさん:2006/05/22(月) 00:49:48 ID:???
>>855
いやぁ、それほどでも…(デレデレ
857nobodyさん:2006/05/22(月) 00:51:04 ID:???
俺も書いてきたぜ!

…真面目に相手しすぎ?
858nobodyさん:2006/05/22(月) 00:54:58 ID:???
ほめてないお(^^;
859nobodyさん:2006/05/22(月) 00:57:05 ID:???
ところで最初のコメントの 意味が逆です ってどういういみ?

男らしく謝る心の広さw
860nobodyさん:2006/05/22(月) 01:02:50 ID:???
>>859
「多分>>857氏が書いた内容」を読めば分かると思う。
861nobodyさん:2006/05/22(月) 01:41:38 ID:U9KQg94s
require()で、存在しないファイルを指定した場合、「ファイルが無いよ」という
エラーメッセージを返したいのですが、require()は取りこみに失敗しても「FALSE」を返しませんよね?

こういった場合、みなさんはどうします?
862nobodyさん:2006/05/22(月) 01:50:50 ID:???
>>861
if(file_exists())
を直前に行っておく。
863nobodyさん:2006/05/22(月) 01:56:59 ID:???
>>861
require()だと普通に「ファイル読ねエラー」吐いて停止するでそ?

include()掛けて、インクルードファイルの中に
定数定義でも仕込んでおいて、それを評価するとか。
思いつきだけど。
864nobodyさん:2006/05/22(月) 02:04:29 ID:???
>>861
require()で、存在しないファイルを指定
↑そういう実装の仕方が糞だと思うに一票。
865861:2006/05/22(月) 02:07:01 ID:U9KQg94s
>>862-863
ヒント、ありがとうです。

$cmd  =  $_GET["cmd"];
if (file_exists($cmd . ".inc.php") {
    include ($cmd . ".inc.php");
} else {
    $error  =  "Not Found...";
}
866nobodyさん:2006/05/22(月) 02:12:27 ID:???
>>865
そのままだとXSSの危険性があるので preg_match() で正規表現による
マッチングを行ったほうがいいと思う。念のため。
867nobodyさん:2006/05/22(月) 03:10:50 ID:???
868861:2006/05/22(月) 03:37:18 ID:U9KQg94s
>>866-867
こんな感じでどうでしょうか?

if ($_GET["cmd"]) {
  $cmd = $_GET["cmd"];
  if (preg_match ("[0-9A-Za-z]", $cmd, $m_cmd) ) {
     if (file_exists ("./plugin" . $m_cmd . ".inc.php") != FALSE) {
        include ("./plugin/" . $m_cmd . ".inc.php");
     } else {
        $error = "Plugin: " . htmlspecialchars ($m_cmd) . "is not implemented";
     }
  }
}
869nobodyさん:2006/05/22(月) 04:34:06 ID:???
Cでよくやる
#define DEBUG
#ifdef DEBUG
デバグ用コード
#endif
に近いことを php でやるにはどうしたらいいでしょう?

デバグ用のコードに簡単に切り替えられればなんでもいいですが。
870nobodyさん:2006/05/22(月) 04:47:43 ID:???
define('DEBUG', true);
if (defined('DEBUG')):
デバグ用コード
endif;
871nobodyさん:2006/05/22(月) 04:49:09 ID:3WaYFEXj
以下のコード(ほんの一例)では・・・
system("cvs checkout -d /usr/local/www/subdomain/cvs example.com");
system("chmod 707 /usr/local/www/subdomain/cvs/inc/class/smarty/app/templates_c");
必ず、1つめのsystemによる実行がすべて終わってから、2つめのsystemが実行されるのでしょうか?
(同時に実行してしまうことはないでしょうか?)
872nobodyさん:2006/05/22(月) 04:57:54 ID:???
>>870
endifなんてPHPにあったっけ?
873nobodyさん:2006/05/22(月) 04:58:54 ID:???
>>871
systemで実行するコマンドがバックグラウンド動作指定されてなければ大丈夫
874nobodyさん:2006/05/22(月) 05:05:07 ID:???
>>867
それはfile_exists()の段階で弾かれそう
875nobodyさん:2006/05/22(月) 05:08:04 ID:???
>>870
あれ、PHP って
if() {
function hoge() {
}
}
とかできるん?
876nobodyさん:2006/05/22(月) 05:18:08 ID:???
877nobodyさん:2006/05/22(月) 05:22:40 ID:???
>>875
できるよ
878nobodyさん:2006/05/22(月) 05:38:25 ID:???
>>874
ぐは
file_existsはリモートファイルでは使えないって書いてあったorz
みんな、マニュアルはよく読もうね(´・ω・`)
879nobodyさん:2006/05/22(月) 06:28:30 ID:???
>>877
できんかった。
class 内ではできないのか?こまっちんぐ。
880nobodyさん:2006/05/22(月) 06:30:14 ID:???
>>879
それは普通、extendでメソッドオーバーライトする場面じゃないのか?
881nobodyさん:2006/05/22(月) 06:35:44 ID:???
>>880
php で関数上書きなんてできんでしょ?
882nobodyさん:2006/05/22(月) 06:39:29 ID:???
>>881
あれ、ごめん勘違い。
オーバーロードができないだった。
883nobodyさん:2006/05/22(月) 06:42:45 ID:???
あれ、でも、class 内関数でない関数をオーバーライドはできないよね?
そのときは例の if を使わざるをえない?
884nobodyさん:2006/05/22(月) 08:41:41 ID:???
>>868
その正規表現だと「0-9A-Za-z」しかマッチしないんじゃないか?
正しく書かれていても、0-9a-zA-Zが1文字も含まれない場合しかスルーしない
if (preg_match ("!^\w+$!", $cmd, $m_cmd) ) {
とすべきか(_も含まれちゃうけど)

まあ既出の通りその後で蹴られるけど、関数の仕様が変わった時問題になるので
ファイル名のチェックは必要
885nobodyさん:2006/05/22(月) 08:50:14 ID:???
フォルダに突っ込んであるファイルを全部requireするような機能がないので

foreach( scandir(INCLUDE_DIR) as $filename){
if(!is_dir($filename)){
require_once(INCLUDE_DIR.$filename);
}
}

みたいにやってるんですが、こんな感じの関数とかってありませんか?
886nobodyさん:2006/05/22(月) 09:12:27 ID:QKaBTlkn
データの中から、χ行目だけ読み込んで、
上書きまたは削除というのはできませんか?
そういう関数はありませんか?
887nobodyさん:2006/05/22(月) 09:16:37 ID:???
>>886
出来るけどそういう関数は無い。
DBが使うのが手っ取り早い
888nobodyさん:2006/05/22(月) 09:20:46 ID:QKaBTlkn
>>887
やっぱり、ループで一行ずつ読み込まないといけないですよね。
DBを使わずに作成したいのですが、データが大量になるとつらいです?
889nobodyさん:2006/05/22(月) 10:13:56 ID:???
>>888
大した技術も持ってないので全然自信ないけど、もし自分がやるとしたらこんな感じにすると思う…というのを書いてみた↓
間違いのご指摘とか大歓迎。

$buf_ary = array();
$fp = @fopen($path, 'r+');
flock($fp, LOCK_EX);
while ($line = fgets($fp)) {
  該当行に来たら$lineの中身を変更する処理
  $buf_ary[] = $line;
}
ftruncate($fp, 0);
rewind($fp);
fputs($fp, implode('', $buf_ary));
fclose($fp);

例えばこれが掲示板なら、データファイルはある程度の大きさで分割する。
また、単なる表示処理とかにはキャッシュを使い、データファイルを読みに行くような処理にはしない。
890889:2006/05/22(月) 10:18:41 ID:???
あ、削除もあるのか。

$buf_ary = array();
$fp = @fopen($path, 'r+');
flock($fp, LOCK_EX);
while ($line = fgets($fp)) {
  該当行に来たら$lineの中身を変更/削除する処理
  if ($line != '') { $buf_ary[] = $line; }
}
ftruncate($fp, 0);
rewind($fp);
fputs($fp, implode('', $buf_ary));
fclose($fp);

全然自信ないけどどうでしょう?
891nobodyさん:2006/05/22(月) 11:13:30 ID:???
>>890
俺ならデータがかなり大きいと予想される場合は
固定長のレコードを使って、小さいならvar_export()とかのシリアライズ系
の関数をつかってすませてしまうかな。

まぁ、PHPで固定長のレコードを持つファイルを扱ったことなんて
ないんだけどね。
892nobodyさん:2006/05/22(月) 11:30:12 ID:???
↑意味が分からない。
>>890みたいにソースでも晒してくれれば良いのに。
893nobodyさん:2006/05/22(月) 12:07:12 ID:???
>>892
1行の長さが固定のファイルならfseek使って
ダイレクトに行単位の読み込みや上書きができるからそういうことじゃ?
894nobodyさん:2006/05/22(月) 12:10:19 ID:???
>>893
そういう説明なら分かる。解説ありがと。
固定長なんてカウンタぐらいしか扱った事ないなー
895890:2006/05/22(月) 12:15:08 ID:???
で、自分の書いたソースってどんなでしょう?>識者の方々
「KENT WEB」とか見てperlから独学で入ったクチで、Cとかの経験は全く無しなんで自信ないのよね。
要するに基礎がおろそかっていうか。

今はperlなんて忘れちゃったけど、「KENT WEB」見て勉強してた当時のソースは、
なんか配列にデータ全部読む→配列を処理する→ファイルに書き込む
みたいな事をしてた気がする。アレは駄目だよね?
896nobodyさん:2006/05/22(月) 12:20:34 ID:???
perlはもう忘れたので↑をもしPHPで書くとこんな感じ。

$data_ary = @file($path);
foreach ($data_ary as $key => $value) {
  なんか処理をごじょごじょ
}
$fp = @fopen…以下書き込み処理

↑これはやっぱりマズイだろと思い>>890を考えてみた。
MySQLばっかやってるので、ファイルベースの管理に疎い俺に勉強させて下さい。
897nobodyさん:2006/05/22(月) 12:24:46 ID:???
>>890
ftruncate($fp, 0);
rewind($fp);
fputs();
よりも
rewind($fp);
fputs();
ftruncate($fp, ftell($fp));
の方が早いらしい

自分で確認したことはないので本当かどうかは知らないが
898890:2006/05/22(月) 12:41:12 ID:???
>>897
どもです。
早いか遅いかというよりもむしろ、
ftruncate($fp, 0); って要するにファイルの中身を一度空っぽにしてしまうっていう事ですので、
もし何らかの原因でファイルロックに失敗してた場合、中身が全部消えてしまう可能性がありますよね。

書かれている
rewind($fp);
fputs();
ftruncate($fp, ftell($fp));
の場合、データの長さが変になる可能性はあっても、中身が全部消えてしまう事は無いのではないかと思います。

こんな書き方もあるんですね。勉強になりました。有難う御座いました。
899nobodyさん:2006/05/22(月) 13:10:19 ID:???
>>895
ネ申KENT巨匠云々はどーだっていいが、perlとphpは脳内で確実に切り離して考えろ
phpはperlよりJavaScript寄りで脊髄反射で書ける代物から勉強するが良い
と、->のアローを使わないし今一存在意義の分からない俺が言うのだから
説得力なんて丸っきし無いのだけどな
900nobodyさん:2006/05/22(月) 13:36:22 ID:???
>>890
ロックに間違いはないし、この1つのファイルだけでやりくりするならこれでいいと思う。

問題点としては、
ファイルの内容を全てメモリ上にロードしていることに対するシステムへの負荷
これはまあ、よほどでなければ無視できる。
それから、インデックスや、別のログファイルなど、
他のファイルを読み書きすることになった場合の整合性かな。

>>895
メモリ上に全て読み込んでいるからKENTとやってることは実質同じだよ。
KENTのは読み込みと書き込みで別々になってるけど
処理全体をロックして堅牢性を確保してる。
ロック時間が長すぎない分にはあの書き方の方がわかりやすいと思う。
901nobodyさん:2006/05/22(月) 13:40:51 ID:???
そーいやPHPのロック(flock)ってどこまで信用していいん?
Perlのロックはサーバによっては意味なかったり、
アンロックとファイルクローズの間隙に処理されるからアンロックせずにファイルクローズしたりと
あんまり信用できなかったけど・・・
902nobodyさん:2006/05/22(月) 14:01:52 ID:???
全部読み込んでしまうコードのほうが処理に区切りがでてきて
追いかけやすいし、改変もしやすいかもしれない、
という利点もある。リッチプログラミングってやつだな。
スクリプト言語なんてリッチ以外の何者でもないし〜、
ってことで俺は人間の理解しやすさ重視で組むように昔方針変更した。
それでもソースコードレベルでの最適化を頑張るのも無駄じゃないし、
その人の方針しだいだよな。
903890:2006/05/22(月) 14:01:53 ID:???
>>899
切り離すっていうか、perlとphpしかやった事ないしもうperl自体忘れちゃってるので何とも。
perlならゴチャゴチャ関数書いてたのが初めから何でもかんでも用意されてて、
その関数通せば1行で終わり…php始めた頃はそういうところに感動しましたね。

>>900
>ファイルの内容を全てメモリ上にロードしていることに対するシステムへの負荷
>それから、インデックスや、別のログファイルなど、
>他のファイルを読み書きすることになった場合の整合性かな。
ここら辺を考えるのが面倒で、mysqlに逃げちゃうんですよね。。。

>>896に書いたソースでは、A・B別々の人がほぼ同時に書き込み処理を行った場合、先に書いた人の内容が
消えてしまう可能性がありますよね?>>900に書いたソースならそれは無いと思うですが、認識として間違ってます?

>>901
その点自分も結構疑問なのですが、
例えば1日300万以上回るカウンタ(データの長さは固定長になるようにしてる)で1年以上一度も壊れた事ないです。
904nobodyさん:2006/05/22(月) 14:07:33 ID:P0gT7hBy
フォーム入力の際に、タグを無効かしたいので、確認画面で
$text = htmlspecialchars($_POST["text"]);
を入れました。

それで、確認画面ではタグが無効化しているのですが、そのまま登録すると
表示の画面ではタグが有効になっています。

そこで改めて確認の画面で
<?= htmlspecialchars($text);?>

としたのですが、今度はテキストエリアで入力した改行(<br>)が表示されてしまいました。

2chのフォームもそうですが、改行(<br>)は画面に表示させずに
その他のコードは完全に無効にするにはどうしたらいいのでしょうか?
905nobodyさん:2006/05/22(月) 14:16:04 ID:???
>>903
>A・B別々の人がほぼ同時に書き込み処理を行った場合

合ってる。
だから、読み書きを分ける場合は処理全体をロックしていれば大丈夫。
俺なら、ロック用ファイルを別に用意してそこにflockするか
rename方式でやるかな。
906890:2006/05/22(月) 14:19:04 ID:???
また別件で質問なのですが、file()やfile_get_contents()等のファイル一気に読み取り系の関数って、
共有ロック処理(flock($fp, LOCK_SH)と同等の処理)されてるんでしょうか?
907890:2006/05/22(月) 14:23:10 ID:???
>>905
どもです。
つまり、ロック用ファイル=今処理中ですよと認識する為のフラグ みたいなもので、

書き込み中でそのファイルが存在する時は、読み取り処理を行えないようにする。
読み込み中でそのファイルが存在する時は、書き込み処理を行えないようにする。

という具合にすればOKって事ですよね?
908nobodyさん:2006/05/22(月) 14:35:52 ID:???
>>904
あたりまえ
マニュアル嫁
909890:2006/05/22(月) 14:39:20 ID:???
>>904
自分のせいで埋もれてしまうと申し訳ないので回答しようと思ったのだけど、
いまいち質問の意味が掴みきれないので↓で勘弁して下さい。

仮に改行コードが"\n"で統一できてると仮定します(その方が説明しやすいので。実際には環境により異なります)

$text = $_POST['text'];
$text_escape = htmlspecialchars($text); //※1
$text_disp = str_replace("\n", '<br>', $text_escape); //※2
※$text_escapeとか$text_dispを用意する必要はないけど、分かりやすいかと思い敢えてそうしています。

という順番で処理すれば、改行(=\n)は<br>となり、その他のHTMLタグはエスケープ処理されます。
※1と※2の処理が逆になると、どうなるか分かりますよね?問題が起こってるのはそういう理由だと思います。

連投すみませんでした。
しばらく時間をおきます。
910nobodyさん:2006/05/22(月) 14:41:54 ID:???
>>904
最後2行に対し答えるとすると、

$text = htmlspecialchars($_POST['text']);
$text = str_replace("<br>","<br>",$text);

ってか、処理の流れがヘンなのが一番の問題かも。
911910:2006/05/22(月) 14:43:11 ID:???
>>910
おお、やっちまったorz

$text = htmlspecialchars($_POST['text']);
$text = str_replace("&lt;br&gt;","<br>",$text);
912nobodyさん:2006/05/22(月) 14:48:26 ID:???
>>907
合ってるような合ってないような。
flockでのやり方は、コードにするとこんな感じ。

$lock = fopen('lockfile', 'w');
flock($lock, LOCK_EX);

//読み書き処理いろいろ

fclose($lock);

これだけ。
ポイントは処理中1ファイルを開きっぱなしにすることだけかな。
lockfileはサイズ0でも問題ないし、別に消す必要もない。
PHPはスクリプトが終わると勝手に閉じてくれるから
fcloseを忘れてもロックは残らないし、簡単なわりに結構いいよ。
913904:2006/05/22(月) 15:03:16 ID:???
みなさん、出来ました。勉強になりました。
ありがとうございました
914nobodyさん:2006/05/22(月) 16:01:04 ID:???
編集するファイルを直接ロックするときは結構面倒

$fp = fopen($file, 'ab+');
flock($fp, LOCK_EX);
stream_set_write_buffer($fp, 0);
rewind($fp);
ftruncate($fp, 0);
// 書き込み
// ...
ftruncate($fp, ftell($fp));
flock($fp, LOCK_UN);
fclose($fp);

たしか、こんな感じにしないとまずいかったと思う
ab+モードのときは rewind() はいらないんだっけな
915nobodyさん:2006/05/22(月) 16:14:51 ID:???
素人です。

フォームに入れた値を、phpからmySQLのDBに送るっていうのを作ったのですが
送信後にF5、つまり更新すると空の内容がDBに送られてしまいます。

sql_closeを入れても同じです。

どうやったら、解決するでしょうか?
916915:2006/05/22(月) 16:17:16 ID:???
sry

sql_closeじゃなくてmysql_closeです。
ついでにソース

$con = mysql_connect("","","") or die(mysql_error());
$con_tbl = mysql_select_db("");
$query = mysql_query("INSERT INTO result_tbl () VALUES(");
mysql_close($con);
917nobodyさん:2006/05/22(月) 16:32:47 ID:???
>>915
フォームからの入力値をチェックして不適切(空)ならエラー処理
918nobodyさん:2006/05/22(月) 16:34:36 ID:???
>917
やっぱ、それしか無いんですかね・・・
もっと簡単に出来るかなと思ったのですが。

ありがとうございました。
919nobodyさん:2006/05/22(月) 16:36:05 ID:???
ブラウザのリロードは、同じ内容を同じように送信するのが普通だよな。
だから、2重送信をブロックするロジックを自分で考えなきゃいけないんだよ。
Submitボタン連打だともっと酷いデータが送られてくるときもあるからな。
こっちも忘れんな。
920nobodyさん:2006/05/22(月) 16:43:09 ID:???
>>915

フォームのアクションを別ファイルにして、1.php → 2.php へPOST
<form method=post action=2.php>

そこから元ファイルに飛ばせばフォームデータ消えるから、F5更新しても大丈夫
header("Location: http://example.com/1.php");
921915:2006/05/22(月) 17:32:49 ID:???
>919,920
ありがとうございます。

一度917さんのソリューションでやってみたんですが、解決しなかったっす
同じ内容を2度送る場合にエラー出すように設定しても、やはり普通に送られてしまいました。
フォーム側の$_POST['']をクリアするようにしてもうまく動かなかったので
920さんのでやったら、解決しました。一番簡単で確実かもしれないっすね。
ただ、別問題でなぜかフォームの一つが動作しなくなったのは萎えてきましたが。

とりあえず、みなさんありがとうございました。
922nobodyさん:2006/05/22(月) 17:49:31 ID:???
inc.php
<?php
function htmlheader($title){
echo <<<HOGE
<html>
<head>
<title>{$title}</title>
</head>
<body>
HOGE;
}
function htmlfooter(){
echo <<<HOGE
</body>
</html>
HOGE;
}
?>

test.php
<?php
include("inc.php");
htmlheader($title);
//ここが中身
htmlfooter();
?>
こんな風にするのはよくあると思いますが、inc.phpではhtmlheader(),htmlfooter()って関数で定義せずに例えば、$htmlheader,$htmlfooterって変数を定義。
それをincludeしてtest.phpのなかで、そのときに応じて$titleを与えて(上書き)やるみたいなことは出来ないでしょうか?
参照渡しとか可変変数とかを使えばなんとなく出来そうな気がするんですが。
923nobodyさん:2006/05/22(月) 17:53:43 ID:???
echo しないで関数の返値にすれば?
924nobodyさん:2006/05/22(月) 17:54:40 ID:???
もう一つ。
mysql&phpなんですが、特定のレコードのフィールド(数値int(11))を一番効率よくカウントアップするにはどんな方法をとるのが良いでしょう?
最初にselectして値をとって、それを変数に入れて++したものをupdateするしかないんでしょうか?
update文一発で出来る方法を以前見かけたような気がするんですが。
925nobodyさん:2006/05/22(月) 17:57:54 ID:???
>>923
なるほど。関数の実行結果を変数に入れちゃう訳ですね。
自分はけっこう大きな固まりでヒアドキュメントを使いたいので変数にしちゃいたかった訳です。
ヒアドキュメントの直前で
$htmlheader = htmlheader($title);
とやるわけですね。
926nobodyさん:2006/05/22(月) 18:00:00 ID:???
>>925はもちろんfunctionの中身をechoじゃなくて変数にしてreturnにするのは承知しております。
927nobodyさん:2006/05/22(月) 18:12:40 ID:???
>>924
AUTO_INCREMENT属性。
928nobodyさん:2006/05/22(月) 18:16:23 ID:???
>>927
AUTO_INCREMENTは承知しておりました。
いろいろためしたとこ、事前のselectでの取得は不要、これで逝けそうです。
UPDATE `tablename` SET `count` = `count` + 1 WHERE `id` = 1;
ありがとうございました
929nobodyさん:2006/05/22(月) 19:09:56 ID:???
すみません、セッションを使ったログイン・システムを作ったのですが、
ログイン後に操作をしない(サーバと通信をしない)時間が数分〜十数分続くと、
勝手にログアウトしてしまいます。 厳密に計ったわけではありませんが、20分ももたないようです。

ブラウザを閉じたわけでもないですし、session.gc_maxlifetimeは1440あります。
明示的にログアウト処理をしない限りログイン状態が続くようにしたい(mixiのように)のですが、
どこの設定をいじれば良いのでしょうか・・・。
930nobodyさん:2006/05/22(月) 19:13:25 ID:ZjR2V7y0
PHP4 + Postgresの環境でWebアプリ作ってます。
あるテーブルから普通にデータ取得して、HTMLでテーブル作って表示してます。
データの件数が多くなってしまい、表示に時間がかかるようになりました。
よくある「次のページ」リンクをつけて、数回に分けて表示したいと思います。
やり方でセオリーとかありますか?
自分で考えたのは普通に、start_numみたいな変数をhiddenに持たせて、
データを取得する時、ループさせる中でstart_numから30回分を表示してあとはスルーみたいな感じです。
931nobodyさん:2006/05/22(月) 19:29:23 ID:???
>>930
limitとoffset使って表示件数分だけselectした方がよろしいかと
932nobodyさん:2006/05/22(月) 20:02:16 ID:80zZuoVH
$textには、

* H1要素
段落段落段落...
** H2要素
段落...

という値が代入されているとします。
先頭が「*」で始まる文字列を見出しタグで括りたいのですが、これを実現するための関数はありますでしょうか?
933nobodyさん:2006/05/22(月) 20:41:29 ID:???
$line = explode("\n", $test);
$int = count($line);
for($i=0;$i<$int;$i++){

if(strpos($line[$i], '**') === 0){
$line[$i] = '<h2>'.substr($line[$i], 2).'</h2>'
}elseif(strpos($line[$i], '*') === 0){
$line[$i] = '<h1>'.substr($line[$i], 1).'</h1>'
}
//↓ならh1〜h*まで
//if(preg_match("/^([\*]+)(.+)$/", $line[$i], $ast)){
//$line[$i] = '<'.strlen($ast[1]).'>'.$ast[2].</'.strlen($ast[1]).'>';
//}

}
934nobodyさん:2006/05/22(月) 20:43:10 ID:???
シングルクォータが抜けてら...
'<'.strlen($ast[1]).'>'.$ast[2].'</'.strlen($ast[1]).'>';
935932:2006/05/22(月) 20:46:40 ID:80zZuoVH
>>933
ありがとうです。
preg_match()を用いるのだとは思っていたのですが、応用することができませんでした。

まだまだ私は勉強が足りないみたいです。
936nobodyさん:2006/05/22(月) 20:47:27 ID:???
うん。足らなすぎ。
937nobodyさん:2006/05/22(月) 20:47:44 ID:???
>>931
ありがとうございます。それでいきます。
938nobodyさん:2006/05/22(月) 20:53:27 ID:???
ぐだぐだですまん
最後に$test = implode("\n", $line);

今気づいた・・
$test = preg_replace("/([\*]+)([^\n]+)\n/", "<h".strlen("\\1").">\\2"."</h".strlen("\\1").">\n", $test);
939nobodyさん:2006/05/22(月) 20:58:08 ID:???
$hoge =0; もしくは $hoge ="0";
echo $hoge;
上記のようにしたときに$hogeが空の状態で表示されてしまうのですが
どのようにしたら0と表示するのでしょうか?
おそらくiniの設定かなと思うのですがどこを変更すればいいのかが分かりません
使用しているバージョンはphp4.4.1です
940nobodyさん:2006/05/22(月) 20:58:47 ID:???
941nobodyさん:2006/05/22(月) 21:01:51 ID:???
>>939
printf
942nobodyさん:2006/05/22(月) 21:24:44 ID:???
>>941
ありがとうございます
とりあえず表示は出来ました
しかし以下のような使い方をする時にはどのようにしたらいいのでしょうか?
$array = array("0","1","2");
for($i=0;$i<count($array);$i++){
printf("%d",$array[$i]);
}
$iが0の時の値が表示できません
よろしくお願いします
943nobodyさん:2006/05/22(月) 21:46:29 ID:HMN8IoOb
4.4.3はいつ出るんですか
944nobodyさん:2006/05/22(月) 21:52:44 ID:???
プログラム板から誘導されてきました。

PHPとMySQLでファイルアップロード機能つきの掲示板作ってるんですけど
ファイルをpublic_html内にPHPでアップロードしたら誰でも直接アクセスできますよね?
ログインした人だけアクセスできるようにって可能ですか?
DBに入れようかと思ったんですがMySQLではサポートされてないみたいなので
どうしようか悩んでます。

よろしくお願いします。
945nobodyさん:2006/05/22(月) 21:56:43 ID:???
>>942
その前に、
$a=0;
echo $a;
で何も出ないってのは、ちょっと変じゃないか?
なんか勘違いしてないか?
var_dump($a);
はどうなる?
946sage:2006/05/22(月) 22:00:52 ID:ie3bIX/1
オレ様作成の曲をアップしてあんだけど、スゲェカッコ曲だから
勝手に直リンされてるんだけど、これ拒否る方法ないかねぇー。
WMPで直リンクされてんだけど、リファラー吐かないから、.htaccess
でも拒否れないし。。。クッキーも使いたくない。
なんかいい方法ある?
947nobodyさん:2006/05/22(月) 22:04:25 ID:???
>>944
public_html 外に置けば?
948nobodyさん:2006/05/22(月) 22:07:09 ID:???
>>947
目から鱗です。
ダウンロードする時も外のディレクトリから持ってくればできそうですね。
試してみます。ありがとうございました。
949nobodyさん:2006/05/22(月) 22:24:46 ID:???
俺の借りているレンタル鯖、safe_modeがonなんだが、これを.htaccessでOffにできると言い張っています。

俺の認識だと無理だと思うんだけど、実際どうなんですか?教えて下さいな
950nobodyさん:2006/05/22(月) 22:24:57 ID:RlV2K8v8
超初心者なんですが『ECHO』で表示させたテキストの
色・サイズなどを変更は、どうすれば良いんでしょうか?
951nobodyさん:2006/05/22(月) 22:36:09 ID:???
BIGECHO
952nobodyさん:2006/05/22(月) 22:36:58 ID:???
>>950
HTMLをechoで出力する
953nobodyさん:2006/05/22(月) 22:39:58 ID:???
echoとprintの違いってなんなんでしょうか?
954nobodyさん:2006/05/22(月) 22:41:42 ID:???
955nobodyさん:2006/05/22(月) 22:46:14 ID:???
>>953
echoはキー4回押下
printは5回押下
956932:2006/05/22(月) 22:48:35 ID:???
>>938
すみません、こんなのでいいのでしょうか?

$file  = file ("./text.inc");
$line  = explode ("\n", $file);
$file  = explode ("\n", $line);
$int   = count ($line);
$file  = preg_replace ("/([\*]+)([^\n]+)\n/", "<h" . strlen("\\1") . ">\\2" . "</h" . strlen("\\1") . ">\n", $file);

for ($i=0;$i<$int;$i++) {
        if (strpos($line[$i], "**") === 0) {
                $line[$i] = "<h2>" . substr ($line[$i], 2) . "</h2>";
        } elseif (strpos($line[$i], "*") === 0) {
                $line[$i] = "<h1>" . substr ($line[$i], 1) . "</h1>";
        }
}

echo $line[$i];
957nobodyさん:2006/05/22(月) 22:50:17 ID:???
>>954

無理ってことデスヨネ
958nobodyさん:2006/05/22(月) 23:00:02 ID:???
>>957
safe_mode = PHP_INI_SYSTEM
PHP_INI_SYSTEM = php.ini または httpd.confで設定可能なエントリ

どこのサーバか知らんが、言われたとおりにやってphpinfo()してみたら?
959nobodyさん:2006/05/22(月) 23:53:56 ID:???
>>958
オーケー兄弟。ありがとう

指示通りやってもphpinfoの結果はOnのままだった。
サポートに(*゜Д゜)ゴルァ!してくる
960nobodyさん:2006/05/23(火) 00:27:30 ID:???
>>956
え? file()はファイル内容を一行ずつ配列に格納する関数なので
explodeで分割する必要は無いんじゃないの?
961932:2006/05/23(火) 00:34:51 ID:???
わぉ!

<?php
$lines  = file ("./text.inc");
$int    = count ($lines);
$lines  = preg_replace ("/([\*]+)([^\n]+)\n/", "<h" . strlen("\\1") . ">\\2" . "</h" . strlen("\\1") . ">\n", $lines);

for ($i=0;$i<$int;$i++) {
    if (strpos($lines[$i], "**") === 0) {
        $lines[$i] = "<h2>" . substr ($lines[$i], 2) . "</h2>";
    } elseif (strpos($lines[$i], "*") === 0) {
        $lines[$i] = "<h1>" . substr ($lines[$i], 1) . "</h1>";
    }
echo $lines[$i];
}
?>

出来たです。
あとは見出し要素以外の文書構成節「段落」をpタグで括るようにすればいいのですね。

ありがとうございました(^^
962nobodyさん:2006/05/23(火) 01:59:05 ID:???
>>961
このほうがシンプルじゃないか?
まあ、解決したみたいだから、どうでもいいけどw

$fp = fopen("test.txt","r");
while ($buf = fgets($fp,1024)) {
$buf = trim($buf);
if (substr($buf,0,1) == '*') {
$buf = preg_replace("/^(\*)*(.+)$/e", "'<h'.strlen('\\1').'>\\2</h'.strlen('\\1').'>'", $buf);
} else {
$buf = "<p>{$buf}</p>";
}
echo $buf."\n";
}
fclose($fp);
963nobodyさん:2006/05/23(火) 02:26:43 ID:???
>>962
それ正規表現でマッチングさせて置き換えする必要ってあるのか?
964938 :2006/05/23(火) 07:57:36 ID:???
>>961
はじめ行で分割してやったけど
正規表現で一発で置き換えすればいいかと思った
その方法だとpreg_replaceはいらないよ
配列にreplaceは意味ない希ガス
965nobodyさん:2006/05/23(火) 08:18:34 ID:???
>>929
php.iniの他のセッション関連の設定をうpしる。
966942:2006/05/23(火) 11:08:53 ID:5evz5UIt
>>945
遅くなって申し訳ないです。
教えていただいた方法で書き出した所
int(0)と出ました。
967nobodyさん:2006/05/23(火) 11:47:33 ID:???
>>932

<?php

is_resource($fop = @fopen($log = "./test.txt","r")) or exit("Error: ".$log." を開けませんでした。");

$dat = "";

while(is_string($buf = fgets($fop,1024))){

$dat.= ($len = strspn($buf,"*")) > 0 ? "<h".$len.">".trim(substr($buf,$len))."</h".$len.">\n" : "<p>".trim($buf)."</p>\n";
continue;

}

fclose($fop);
exit($dat);

?>
968nobodyさん:2006/05/23(火) 12:02:16 ID:???
改行ウザイアルネ
969nobodyさん:2006/05/23(火) 13:27:20 ID:???
質問です

PHPでメールとメールの添付ファイルを受信する為には
どのような方法をとれば良いのでしょうか…
970nobodyさん:2006/05/23(火) 13:32:45 ID:???
おk。まずは調べることから始めてみようか。
971nobodyさん:2006/05/23(火) 13:37:39 ID:???
まず、メールを取り込む方法を決める。これは通常はPOPかIMAP、あるいは
MTA(みたいなやつ)からのパイプ起動の三択。
で、次にそのメールのMIME構造を解釈するとメール本文と添付ファイルが得られる。
972軟式PHP:2006/05/23(火) 13:47:20 ID:???
みんな優しいな
973nobodyさん:2006/05/23(火) 14:02:32 ID:???
俺には冷たいのにな
974nobodyさん:2006/05/23(火) 14:23:04 ID:???
.forwordで転送。
975nobodyさん:2006/05/23(火) 14:32:39 ID:z6MA0Zs/
PHPにはJMailみたいなライブラリはないのか?
976nobodyさん:2006/05/23(火) 15:09:10 ID:???
jmail ってwebアプリじゃないの?
977nobodyさん:2006/05/23(火) 15:41:54 ID:???
978nobodyさん:2006/05/23(火) 17:17:20 ID:???
>>959
ヒント:CGIバイナリPHP
979nobodyさん:2006/05/23(火) 18:09:44 ID:???
ファイルロックで

$lockfp = fopen($lockfile,"w");
flock($lockfp, LOCK_EX);
$fp = @fopen($file,"a");
@fputs($fp,$date);
@fclose($fp);
flock($lockfp, LOCK_UN);
fclose($lockfp);

このようにしたが、logファイルに書き込みが出来なくなった。なぜ?
980nobodyさん:2006/05/23(火) 18:30:36 ID:???
short_open_tagってOn/Offどっちにしてます?
981nobodyさん:2006/05/23(火) 18:32:53 ID:???
>>979
>@fputs($fp,$date);

この行にタイプミスがあるのではないかとエスパー的にレスしてみる
982nobodyさん:2006/05/23(火) 18:33:26 ID:???
>>979
logファイルってどっちだよ
error_logのことか?
983nobodyさん:2006/05/23(火) 18:34:44 ID:???
バラ,名詞,一般,*,*,*,*,バラ,バラ,バラ
の,助詞,連体化,*,*,*,*,の,ノ,ノ
つぼみ,名詞,一般,*,*,*,*,つぼみ,ツボミ,ツボミ

みたいなCSVデータが多量にある場合、プログラム的にはどんな処理が軽いんでしょうか?
上記の場合「バラ」って言葉が複数回出る可能性があるので、何回出たかカウントしたかったりします。
配列全部入れて配列を検索が楽そうなんですが、多量になると処理的に厳しいですよね・・。
984nobodyさん:2006/05/23(火) 18:47:45 ID:???
>>983
一番軽いのはexit()かunset()かなあ・・・

そもそも何をしたいのか判らんのだけど。
カウント?検索?データはどこにある?(変数?ファイル?DB?)
情報が小出しすぎて(不足で)どうとでも答えられそうな
985nobodyさん:2006/05/23(火) 18:55:18 ID:???
>>983
いったいなにをしたいんだ?
986938 :2006/05/23(火) 19:03:12 ID:???
>>979
$fp = @fopen($file,"a");
の"a"を"a+"
987nobodyさん:2006/05/23(火) 19:07:52 ID:???
>>984
>>985
日本語の形態素解析エンジンの結果を分析したいんです。

HPの文章全てを日本語の形態素解析エンジンに通して、分割した語句結果をカウントしたいというのが現在のところです。
988nobodyさん:2006/05/23(火) 19:23:35 ID:???
最後の"バラ,バラ,バラ"とか"の,ノ,ノ"ってなに?
989987:2006/05/23(火) 19:28:50 ID:???
表層形,左文脈ID,右文脈ID,コスト,品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用形,活用型,原形,読み,発音
という内訳です
990nobodyさん:2006/05/23(火) 19:42:53 ID:???
>>987
だから分析ってナニをしたいわけよ?
同じ言葉の出る回数をカウントしたいとか
カラムでソートしたいとか色々あんだろ
991987:2006/05/23(火) 19:46:09 ID:???
>>987
>分割した語句結果をカウントしたいというのが現在のところです。

簡単に言うと>>983の「バラ」出現回数をカウントしたいといいう事です。
このリストの数が膨大になりそうなので、負荷的にお勧めを知りたいのですが・・。
992nobodyさん:2006/05/23(火) 19:55:22 ID:???
負荷的にお勧めっていわれてもなー
どういう処理の組み合わせが軽いなんてわからんし
作って時間計らないとなんとも言えん
993nobodyさん:2006/05/23(火) 19:55:27 ID:4QrMyfUT
>>991
全部DBにぶちこんで、適当に処理するじゃいかんのか?
特定の単語のみなら、一行ずつ処理してやればそれでいいと思うけど
994nobodyさん:2006/05/23(火) 20:03:52 ID:???
サイトのページ単位ならそんなメモリも使わんだろうから
全部読み込んでUTF-8変換してpreg_matchでいいんじゃね?
下手にPHPのスクリプトでカウントするより組み込み関数使ったほうが軽いだろ(多分)
995nobodyさん:2006/05/23(火) 20:10:42 ID:???
preg_match_allじゃないと無理じゃなかった?
996nobodyさん:2006/05/23(火) 20:11:06 ID:???
>>980
私はXHTML文書において、XML宣言を記述しているのでshort_open_tagはOffにしている。
まあこんなのでも回避できるが…:

<?php echo '<' . '?xml version="1.0" encoding="EUC-JP"?' . '>' . "\n"; ?>


ところで誰か次スレよろ!
997nobodyさん:2006/05/23(火) 21:41:22 ID:???
htaccessでphpファイルにアクセスできなくして、そのphpファイルをincludeすることは可能?
998nobodyさん:2006/05/23(火) 22:08:21 ID:???
【PHP】下らねぇ質問はここに書き込みやがれ 21
http://pc8.2ch.net/test/read.cgi/php/1148389517/
999nobodyさん:2006/05/23(火) 22:10:26 ID:???

>>1000 あとは頼んだ
1000nobodyさん:2006/05/23(火) 22:18:30 ID:???
                        r-、
                       i" ̄`、
                     ,:=┴ー-=i,,_
                      /        \
                _,,,;-ー"-x,  ,,,;=-+,  ,/~ ̄`ヽ、
               /      `i /"    i /      `i''==ニ''ーx,,,_
           ___,i           ||     ''       i,    `x,  \
    _,,,,x=''''"~ ̄ ̄~|     ,,,,,              ,,==、 i,     \  \
  /",,x-'"           {     /  `i           { ●   i,      i,   ヽ
  ,i /             `i     |● |           ノ  ノ  i,         |    i,
  | i,              }    `=='"    -    `ー"   |       |     i,
  |  i,            `i,         '~    ,、       |         |    |
  |  i,             i,      ,、     /vi,       |       |    |
  .|  ヽ            ヽ,    ノ::i,      ノ>::;ヽ     |        |    |
  .|   i,             {`'ー"i;;;;::::`+-+=''V:;;::::Mヽ、   /        |     |
  |   ヽ            },   ヽ,lr;;:::`"~::;::;i`:;;</ `-イ            |     |
  .|    ヽ           ヽ    `ー==='''"~  /          |     |
   |  |  | |            `i,           /              |     |
    i_,/し'`-'              ` x,     ,,x='"                |  ,  !
                        `ー=''"                  } i |、,/
                                             `" '
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。