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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2006/04/28(金) 04:12:33ID:???
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あたり
0002nobodyさん2006/04/28(金) 04:13:11ID: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/
0003nobodyさん2006/04/28(金) 04:13:42ID: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/
0004nobodyさん2006/04/28(金) 04:14:12ID: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するのは楽だと思いますけど。
0005nobodyさん2006/04/28(金) 04:31:15ID:???
取得したRSSを日付順にソートして出力したいんですが、どんな方法がありますか?

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

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

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

>cronが使える安鯖か自分のPCにあるブツ(cronでもタスクスケジューラでも)から
>wgetでも叩かせれば、定期的にスクリプトが走るよ。
今あるサーバのスクリプトを、自鯖にあるCRONでも命令可能ってことですか!!?
何だか危険な気もしますが、それが出来れば便利ですね!
wgetを叩けば良いのですね!調べてやってみます!!
どうもありがとうございました。。
0015nobodyさん2006/04/28(金) 14:40:01ID:???
>>14
ああ、危険だね、何にも考えないでやると。
がんばってな
0016nobodyさん2006/04/28(金) 14:59:53ID:???
タイムアウト制限もあるからね。
0017nobodyさん2006/04/28(金) 17:56:10ID: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) ) { }
0018nobodyさん2006/04/28(金) 18:25:30ID:bvVZ5vZV
超初心者な質問でごめんなさい。
hoge.php(カレンダー表示のphpです。)
をhtml内に表示させるには
html内で <? include "hoge.php";?>
と説明があったのですが、 html内に埋め込んでも
表示されません。
hoge.phpに直接アクセスすると表示されるのですが…

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

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

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

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

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

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

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

「誤解」じゃなくて、完全に認識を間違っている。
HTMLは「静的に生産される」云々の話ではない。
「すでに生産されている静的なファイル」がHTMLである。
0037312006/04/28(金) 23:52:35ID:???
>>36
日本語が下手な点はすまない。
あと >>34-35 書いたのは漏れではないので念のため。
0038nobodyさん2006/04/28(金) 23:54:24ID:???
>>37
日本語の点だけじゃなくて技術的な点も問題あるけどね。
0039nobodyさん2006/04/29(土) 00:10:25ID:???
>>29,32,36,38
何でそんなにムキになってるの?
0040nobodyさん2006/04/29(土) 01:44:36ID:???
>>39>>34はなんでそんなにムキになってるの? 自分の無教養を指摘されたから?
0041182006/04/29(土) 02:21:28ID:???
>>29さん
有難うございます!
出来ました!!!
感謝です。
0042nobodyさん2006/04/29(土) 03:26:54ID:???
「生産」じゃなくて「生成」が適切だと思う
0043nobodyさん2006/04/29(土) 09:44:01ID:???
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);
}
}
0044nobodyさん2006/04/29(土) 09:44:38ID:???
上の続きです


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

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

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

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



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

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

日本語がおかしくてすいません。
0054nobodyさん2006/04/29(土) 15:57:54ID:???
>>53
その書き方を見るとSmartyを使ってるようなので、sectionを使えばいいのではあるまいか?
0055nobodyさん2006/04/29(土) 16:17:35ID:???
>>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;
でいけるっしょ
0056nobodyさん2006/04/29(土) 16:36:08ID:???
>>54の根拠が知りたい
0057nobodyさん2006/04/29(土) 16:37:01ID:???
>>54の巨根が知りたい
0058nobodyさん2006/04/29(土) 16:38:08ID:???
>>54の巨根が尻に…
0059nobodyさん2006/04/29(土) 17:53:27ID:???
そして掘られました
0060nobodyさん2006/04/29(土) 18:01:12ID:???
\   矢 口 さ ん 誕 生 日 お め で と う  /

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

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

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

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

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

初歩過ぎてすいません。

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

> 皆さん、ホントに>>97さんの方法でやってるんですか?
というか、エンコードの必要なものと必要じゃないものをそれぞれ区別して処理してるから
「出力するすべてのものをUTF-8変換」なんてアホなこと自体やったことないっす
0113nobodyさん2006/04/30(日) 17:59:33ID:???
>>103
ソース自体をUTF-8で書いてるからエンコードなんて要らない
0114nobodyさん2006/04/30(日) 18:00:38ID:???
>>99
特にない
0115nobodyさん2006/04/30(日) 18:05:10ID:???
>>106
どっちでもやる気になればできるがUTF-8のファイル側でやった方が多分楽
0116nobodyさん2006/04/30(日) 18:06:51ID:???
>>102
utf-8をetf-8と書いちゃう人にあまり厳しい突っ込みはしてやるな
0117nobodyさん2006/04/30(日) 18:08:58ID:???
>>105
多分、setcookieで$nameを'〜'で括っちゃってるだけ
0118nobodyさん2006/04/30(日) 18:13:10ID:???
以下のサイトのように、プロパティの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
0119nobodyさん2006/04/30(日) 18:16:30ID:???
PHPと関係ねーじゃん
0120nobodyさん2006/04/30(日) 18:20:20ID:???
IDE使用してるから〜、普段はもっと気を使ってるから〜、とか反論する余地もなく
何気ない書き込みだったとしても、多数の typo をする奴はマには向いてない。
0121nobodyさん2006/04/30(日) 19:00:32ID:???
>>118
HTMLソースくらい見れ
<td background="images/h_photo01.jpg"><img src="http://img.yahoo.co.jp/images/clear.gif"></td>
0122nobodyさん2006/04/30(日) 19:06:43ID:???
>>121 THX!!
0123nobodyさん2006/04/30(日) 19:49:36ID:???
>>111
氏ね。もしくは1万円払え。
0124nobodyさん2006/04/30(日) 23:05:56ID: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")
?>
01251242006/04/30(日) 23:14:11ID:???
それより、hoge1,2,3.phpをクラス化して
入力フォームからリダイレクトされたサーブレットから
それらを呼び出すようにした方がいいっすかね?
0126nobodyさん2006/04/30(日) 23:16:48ID:???
>>124
<?php
require("hoge1.php");
require("hoge2.php");
require("hoge3.php");
header("Location: hoge.html");
?>
でいいと思う
0127nobodyさん2006/04/30(日) 23:18:38ID:???
ブログの更新情報をRDFに落として配信できるようにしようとしています

phpにアクセスしてヘッダー送信→RSSソース表示という手順を踏めばしっかり表示されるのですが、
RSSのソースのファイルをphpに生成してRDFファイルにアクセスすると表示してくれません・・・・
解決方法ありますでしょうか。。。
サーバーはロリポップです。
01281242006/04/30(日) 23:21:25ID:???
おぉ、できました。require()初めて知りました。
本当に本当に有難うございました
0129nobodyさん2006/04/30(日) 23:23:06ID:???
<?xmlとかかいてる予感。
01301272006/04/30(日) 23:28:31ID:???
>>129
書いてます・・・・
まずいんでしょうか・・・
0131nobodyさん2006/05/01(月) 00:13:12ID:???
拡張子php?rdf?どっちで保存してるの?
0132nobodyさん2006/05/01(月) 00:33:09ID:???
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>)が
返されなくて困ってます。。。
0133nobodyさん2006/05/01(月) 00:59:11ID:???
$_SERVER["PHP_SELF"]って偽装できないですよね?
0134nobodyさん2006/05/01(月) 01:04:11ID:???
偽装してどーすんだそんなの
0135nobodyさん2006/05/01(月) 01:10:54ID:???
いや、偽装できるなら、偽装されたときを想定しないといけないのかなと思って。
01361272006/05/01(月) 01:14:33ID:???
拡張子はrdfです
.htaccess入れたら正常に閲覧できるんですが、何かほかの方法ってありますでしょうか?

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

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

とするか
fopenの第二引数にr+を指定するといいと思います
0139nobodyさん2006/05/01(月) 01:44:44ID:???
>>132
アマゾンの売上情報は取得できない(らしい)。
01401372006/05/01(月) 02:09:05ID:???
>>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"という出力結果が欲しいです。
0141nobodyさん2006/05/01(月) 02:27:22ID:???
>>140
file()をfile_get_contents()にするといいよ。
基本的にファイルに対して「途中に内容を増やす」というのは無くて、
元ある内容に上書きするか末尾に追加するしかないっす。
(元々のデータの位置はどうやっても変わらない)
なので挿入しようと思ったら、1度読み込んだ上で
ファイル全体を出力しなおす、という手段が必要になる。
01421372006/05/01(月) 02:41:17ID:???
>>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()で大丈夫ですかね?
0143nobodyさん2006/05/01(月) 02:54:05ID:???
>>142
file()は1行ごとに分解した配列で取得。
file_get_contents()は全部まとめて1個の文字列として取得。
01441372006/05/01(月) 02:56:01ID:???
>>143
なるほど。
じゃあ、file_get_contents()使います。
有難うございました
0145nobodyさん2006/05/01(月) 15:46:56ID:???
セッションのini設定を、
session.save_handler files
session.save_path no value
の状態で、セッションを利用できているのですが、
この場合、セッションファイルはどこに保存されていますか?
0146nobodyさん2006/05/01(月) 16:07:35ID:???
UNIX系なんですが、PHP-namazuモジュール(2.3.1)
インストール出来ないのは私だけ?
0147nobodyさん2006/05/01(月) 16:09:44ID:???
>>145
多分 /tmp
0148nobodyさん2006/05/01(月) 16:11:38ID:???
>>146
きっと君だけじゃないよ
0149nobodyさん2006/05/01(月) 16:16:10ID:???
PHP-namazuってあのPEARにunstableな感じで入ってる奴?
まだ生きてたんだ。namazuがバージョンアップしてから使えるかわからずほったらかし。
でも、前(PHP4.1?とnamazu2.0.12?あたり)は素直にインスコできたよ。
0150nobodyさん2006/05/01(月) 16:32:43ID:???
2.3.1のインストールがうまくいかない→解決、の事例なら
去年の11月にphp-usersに投稿にあったよ。
ttp://ns1.php.gr.jp/pipermail/php-users/2005-November/028127.html
0151nobodyさん2006/05/01(月) 22:10:25ID:???
>>150
ありがとうございます。
事例と同じでautoconf(2.13,2.53,2.59)がインストールされています。
同様にすると解決出来るかもしれませんね。

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


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

return $return_array;

ありがとうございました。
0168nobodyさん2006/05/02(火) 19:56:21ID:???
はるだなぁヽ(´ー`)ノ
0169nobodyさん2006/05/02(火) 23:39:23ID:rocsvmuH
>>163
うざいよ
0170nobodyさん2006/05/02(火) 23:45:46ID:???
はるだなぁヽ(´ー`)ノ
0171nobodyさん2006/05/02(火) 23:48:27ID:???
よるだなぁヽ(´ー`)ノ
0172nobodyさん2006/05/03(水) 01:18:16ID:???
自作関数って意味あるの?
0173nobodyさん2006/05/03(水) 01:27:38ID:???
おまえにとっては意味内と思うよ。
それより、死んで。
0174nobodyさん2006/05/03(水) 02:20:40ID:Zf4m7aAt
はるだなぁヽ(´ー`)ノ
0175nobodyさん2006/05/03(水) 03:52:15ID:???
データベースから、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の前にラジオボタンを表示するタグをくっつけてループさせるしかないんでしょうか?

説明下手ですいません;;
0176nobodyさん2006/05/03(水) 03:55:33ID:???
春だなぁ
0177nobodyさん2006/05/03(水) 03:59:34ID:???
>>175
普通にまとめて取り出して、表示するときにラジオボタンのタグをくっつけて表示するだけ。
ぶっちゃけ「めちゃめちゃ当たり前」のことでしかないので、話だけ聞いてると
どこで困ってるのか想像もできない。何故そんなので困る??
まず、今はどういうプログラムで取り出しと表示をやってるのか具体的に書け。話はそれからだ。
01781752006/05/03(水) 04:15:58ID:???
>>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;
}
01791752006/05/03(水) 04:16:56ID:???
>>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;
}
01801752006/05/03(水) 04:18:21ID:???
----------------------------------------------------------------------------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";


続きます
01811752006/05/03(水) 04:18:52ID:???
// 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;
} }
?>
01821752006/05/03(水) 04:22:07ID:???
長くなってすいません;;
とりあえず今こんな感じです。
授業中にもらったサンプルスクリプトを元に作ってみました。
2カラム目から4カラム目(ans1,ans2,ans3)までだけにラジオボタンのタグをくっつけるというのがよく分からないです。
0183nobodyさん2006/05/03(水) 04:29:05ID:???
最近の学校はまともにロジックも読めないやつにいきなりクラス書かせてんのかよ
0184nobodyさん2006/05/03(水) 04:39:25ID:???
>>182
function render()を改造するかextendして、ラジオボタンつきのrender()を作ればいいだけかと。
個人的にはデザインをメソッドで組み立てるこの設計は気に入らないけどな >class DataDetailView
デザインの出力が分かりにくいしいじりにくいしデザイナーと分業できねーし。
01851752006/05/03(水) 04:50:53ID:???
>>183
私がちゃんと理解できてないだけだと思います。
最初から勉強し直してきます。
スレ汚しすいませんでした。

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

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

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

教えて下さい。
01921912006/05/03(水) 05:57:56ID:???
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/
0193nobodyさん2006/05/03(水) 07:11:27ID:???
>>191
> コマンドラインで 「php -i」とやると情報が表示されるということは、OSのシステムにも関連付けられているんですよね?
意味が分からん。PHPを消せばそんなの表示されなくなるだろう。
01941912006/05/03(水) 07:32:07ID:???
>>193
ありがとうございます。
php を消してから、php -i を実際にやったわけではありません。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

よろしくお願いします。
0242nobodyさん2006/05/04(木) 15:08:11ID:???
>>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)をクラス外から参照することは出来るのでしょうか?

 継承に当たらないので、設問自体が不適切。
0243nobodyさん2006/05/04(木) 17:43:52ID:???
BASIC認証のかかったページ(パスはわかっている)を読み込むにはどうしたらよいでしょう
0244nobodyさん2006/05/04(木) 18:11:04ID:???
>>243
Basic認証のIDとパスをURLに埋め込みできなかったっけ
0245nobodyさん2006/05/04(木) 18:21:58ID:HFt+K4sb
>>244
できました。ありがとうございます。
0246nobodyさん2006/05/04(木) 19:40:38ID:???
<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="(?)"の値を変数の中にいれるにはどういう記述をすればいいでしょうか?
0247nobodyさん2006/05/04(木) 19:46:42ID:???
$value = '( > < )';
0248nobodyさん2006/05/04(木) 19:47:52ID:???
'/value="(.*)"/'
0249nobodyさん2006/05/04(木) 21:05:31ID: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フォームのボタンを押した時などに
呼び出したい関数です。
0250nobodyさん2006/05/04(木) 21:15:39ID:???
鯖の中でPHPが処理した結果をHTMLの形でブラウザに渡す。
ブラウザは受け取ったHTMLの中にJavaScriptが書かれているのを見つけるとその処理をする。
OK?
02512492006/05/04(木) 21:22:30ID:???
>>250
一度画面をリロードしないと無理なの?
0252nobodyさん2006/05/04(木) 22:17:14ID:zmM8hBMe
phpってエラー表示するときは自分でページ生成した方がいいんでしょうか?
それとも、exitでエラー出力すれば良いのでしょうか?
0253nobodyさん2006/05/04(木) 22:38:00ID:???
>>249
お前がやろうしている事はphpではできねーよ、ボケ。
phpはサーバ、jsはクライアントで動くんだから
ちょっと考えてみればわかることだろ。
確かJSPなら出来たと思ったけど・・・すれ違いの事
言わすな、カス。

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

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

0254nobodyさん2006/05/04(木) 23:11:36ID:???
>>252
まず日本語の勉強か、exitの勉強(マニュアル)をしましょう。
02552492006/05/05(金) 00:09:00ID:???
>>253
カスはテメーだ
首つって償え
02562532006/05/05(金) 00:55:23ID:???
>>255
スマソ。許してくれ
0257nobodyさん2006/05/05(金) 01:29:30ID:???
>>255-256
そんなことやっておもしろい?
0258nobodyさん2006/05/05(金) 01:58:16ID:???
>>252
ページ生成=HTML形式で表示って意味?
だったらまー、どっちでも(text/htmlでもtext/plainでも)問題はないけど、
システムの致命的エラーならともかく、俺はちゃんとHTMLでデザインするかな。
あと、携帯だとHTML形式にしとかないと表示してくれないのがあったりするし。
0259nobodyさん2006/05/05(金) 02:03:35ID:???
>>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が生成されることになる…と思う。
02602592006/05/05(金) 02:05:58ID:???
ああ、間違った。.= はPHPの文字連結じゃん。
temp .= '<?=str_replace("'", "\\'", rtrim($line))?>';

temp += '<?=str_replace("'", "\\'", rtrim($line))?>';
に差し替えで。(で、合ってたよな??)
0261nobodyさん2006/05/05(金) 13:15:41ID: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で保存しています。
0262nobodyさん2006/05/05(金) 13:17:00ID:???
>>291
基礎を勉強しなおせ
0263nobodyさん2006/05/05(金) 13:21:28ID:???
>>261
それは文字化けじゃなくて、エスケープされてるの。
せっかくmbstringを見るところまでわかってるんだから、どこでエスケープされていて、
表示のときはどこでエスケープを外すか、>>291を見習って基礎から勉強しては?
0264nobodyさん2006/05/05(金) 13:22:41ID:40gAgq8p
>>262
基礎で躓いてるんです。。。orz
0265nobodyさん2006/05/05(金) 13:48:06ID:???
スクリプトs-jisで書くのはやめよう。
吐くときだけs-jisにすればいいよ。
0266nobodyさん2006/05/05(金) 14:06:59ID: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
0267nobodyさん2006/05/05(金) 14:21:20ID:???
EUC-JP EUC_JP
SJIS ShiftJIS
混在しててワケワカメヽ(゚ヮ。)ノ

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

define (SELF_DIR, "bbs.php");

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

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

そうなんですかorz
全部定数で統一したかったのに(;つД`)w
0272nobodyさん2006/05/05(金) 16:09:00ID:???
PHPってCの流儀とPerlの流儀がごちゃ混ぜで一部のポリシーが噛み合ってないよな
0273nobodyさん2006/05/05(金) 16:21:49ID:???
>>272
全て適当でおkがポリシーじゃない?
0274nobodyさん2006/05/05(金) 16:37:22ID:???
4.4.0のデフォでNoticeエラーONがまたその辺を微妙にした気はするな
0275nobodyさん2006/05/05(金) 16:41:11ID:???
>>269
俺はヒア文字使わないから文字連結使って定数表示させてる
0276nobodyさん2006/05/05(金) 17:28:54ID:???
スクリプトの中にドキュメント書いたりしないしな
0277nobodyさん2006/05/05(金) 20:01:26ID:???
エラーメッセージとかは?
0278nobodyさん2006/05/05(金) 21:13:09ID:???
システムエラーは全部error_logに吐き出すようにしてる。
ユーザに表示しないといけないエラーはエラー一覧のテンプレート作って
セッション>クッキー>GETでエラーIDを引き渡して表示するようにしてる。
ちゃんとMVCになるように分担させてるよ。
0279nobodyさん2006/05/06(土) 00:40:00ID: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って呼び出す感じで..
何書いてるのか解かんねくなってき;
解かってくれた方お願いします。
0280nobodyさん2006/05/06(土) 00:45:29ID:0AyY+NP8
phpより日本語を覚えろ
0281nobodyさん2006/05/06(土) 00:50:27ID:???
>>279
何を持って「成り立たない可能性があるのか」を心配してるのか、お前の頭の方が意味わからん。
0282nobodyさん2006/05/06(土) 00:58:42ID:FhNuLJWk
思い付きで質問してすんませんでした。
0283nobodyさん2006/05/06(土) 01:35:12ID: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);
0284nobodyさん2006/05/06(土) 04:56:45ID: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初心者です _| ̄|○
02852842006/05/06(土) 05:30:30ID:eGRayY93
OSを最新バージョンにアップデートしても駄目でした。
言語の設定が問題なのでしょうか・・・
0286nobodyさん2006/05/06(土) 06:39:03ID:???
>OSはWinMX
>OSはWinMX
>OSはWinMX
>OSはWinMX
>OSはWinMX
0287nobodyさん2006/05/06(土) 07:51:32ID:???
>>284
どこがPHPの質問?
どこがWebprogの質問?
0288nobodyさん2006/05/06(土) 07:55:08ID:???
>>287
Web制作板の住民がこっちに誘導していたが…
02892842006/05/06(土) 08:08:29ID:8bhnTskp
思いっきり板違いですね_| ̄|  ○
PC初心者板往ってきます・・・・
0290nobodyさん2006/05/06(土) 08:28:23ID:???
>>285
WinMXがだめならWinnyにしたらいいよ
0291nobodyさん2006/05/06(土) 10:44:05ID:???
>>284
>OSはWinMX
>OSはWinMX
>OSはWinMX
>OSはWinMX
>OSはWinMX
0292nobodyさん2006/05/06(土) 13:45:34ID:???
ちょw
0293nobodyさん2006/05/06(土) 14:51:23ID:???
交換しかできないOSってwww
0294nobodyさん2006/05/06(土) 15:27:44ID:JnZkkTKP
>>284
すげぇww
0295nobodyさん2006/05/06(土) 15:33:10ID:???
P2P専用OSがついに出たのかwwwww
しかし、そんなエラー見たことないな。原因が分かったらフィードバックしてもらいたいな
0296nobodyさん2006/05/06(土) 16:02:00ID:0AyY+NP8
WinMX
0297nobodyさん2006/05/06(土) 16:06:26ID:???
もしかしたらApacheのディレクトリが邪魔してるのかも?
C:の直下とかProgramFilesの下とかにApacheGroupとかそれっぽいのがあるなら
一回それを消してから再チャレンジしてみて
MySQLはそうだった
0298nobodyさん2006/05/06(土) 20:20:01ID:???
前に1度インストールしたことがあってしかもそれがサービスで動いてたら
そりゃ上書きでインストールはできないんじゃないか?
停止させてアンインストールしてからインストール、が常道かと。
0299nobodyさん2006/05/06(土) 20:36:05ID:???
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 など
0300nobodyさん2006/05/06(土) 20:44:42ID:???
次スレのテンプレに追加しようぜ
03012992006/05/06(土) 20:57:07ID:???
解凍が抜けてた

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

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

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













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

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

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

初歩的な質問で申し訳ありませんが、
知ってる方がいらっしゃれば、よろしくお願いいたします。
0309nobodyさん2006/05/06(土) 21:55:22ID:???
マルチ市ね
0310nobodyさん2006/05/06(土) 22:03:33ID:???
>>308
んなもん、ここで聞くより実際に試してみた方が早い
0311nobodyさん2006/05/06(土) 22:26:09ID:???
>>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などの記録)は、
どの程度の期間残るのでしょうか?

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


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

現に PHP 5.14 色々問題でてるじゃん
0313nobodyさん2006/05/06(土) 22:41:48ID:???
5.1.4の問題ってどこで話題が出てる?
0314nobodyさん2006/05/06(土) 23:04:51ID:???
>>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が推奨される。


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

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

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

これだけでいいんですかね。
これだけでいいのだとするとSQLインジェクション起こしてるサイトってこんな事もやってなかったって事なんでしょうか。。
ちょっと信じられなかったので質問してみました。
改めてレスありがとうございました!
0330nobodyさん2006/05/07(日) 11:04:33ID:???
ここを見ているとよく「レッツ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();
}
0331nobodyさん2006/05/07(日) 11:48:55ID:???
>>330
普通は$mon,$dy,$yrそれぞれをクエリで渡す
0332nobodyさん2006/05/07(日) 12:33:58ID:???
eregはすでに非推奨
0333nobodyさん2006/05/07(日) 12:42:19ID:???
あーごめん嘘。
0334nobodyさん2006/05/07(日) 12:43:23ID:???
// *.php?2006-05-07
list($y, $m, $d) = explode('-', $_SERVER['QUERY_STRING']);

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

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

みたいな事をしたいんだけど、うまくいかない。
%%ってどういう扱いになるの教えて
0336nobodyさん2006/05/07(日) 14:46:29ID:???
WHERE name LIKE '%:name%'";
シングルコーテ????
0337nobodyさん2006/05/07(日) 15:35:02ID:???
>>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]));
}
とか書いちゃいそうだけど。
0338nobodyさん2006/05/07(日) 15:46:21ID:???
>>335
%はファイル名のワイルドカード「*」とほぼ同じ。
それより、文字列データはちゃんと '〜' で括らないと動くわけがない。
0339nobodyさん2006/05/07(日) 16:53:03ID:???
330じゃないけど、速度的にもsubstrで取り出すより337の正規表現のがいいかな?
0340nobodyさん2006/05/07(日) 16:57:44ID:???
時と場合によるでしょ
0341nobodyさん2006/05/07(日) 17:12:12ID:???
>>339
先にeregでチェックしてる時点でレッツのも速度的にはあんまり速くないし。
それが無ければsubstrの方がやっぱ速いと思うよ。
ただ、ereg+substr版は桁と配置の情報が何箇所にも分散してるから
うっかりミスでバグを出しやすいのがイヤだな〜と思う。
0342nobodyさん2006/05/07(日) 17:30:51ID:???
速度!速度!ってドンだけシビアなサイト作ってんだ?ってェのw
0343nobodyさん2006/05/07(日) 17:42:18ID:???
入り口のパラメータチェックくらいなら気にするようなものじゃないよね。
これが50万回ループの中に入ってる処理とかならさすがに神経質になるけど。
ま、そういうボトルネックになる場所でタココード書かないために
普段から意識しておくのは悪いことじゃないと思う。
0344nobodyさん2006/05/07(日) 18:14:39ID:???
やっぱ同じ結果が得られても、ロジック的に変な処理方法で遅かったら嫌じゃん
さっきのクエリチェックくらいなら、(phpMyAdmin風)0.0001も変わらんかもしれんけどね。


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

んで処理側が遅いと、同時接続とかあった場合に一瞬でも待たせることになり
相手がナローバンドで尚且つ移動端末な「携帯」だと、お客を逃す場合もあるかもしれない
0345nobodyさん2006/05/07(日) 18:27:44ID:???
>>344
まぁ、言いたいことは判らなくもないし、異論は無いけど、
うちでやっているサイトはどれも、ここ最近は全てパケとか一切無視でやってるよ
まぁau公式サイトがほとんどだけどw
0346nobodyさん2006/05/07(日) 18:29:15ID:???
>>345
ユーザの声を聞く気のないサイトならそれでも別にいいんじゃね?
どんだけ遅かろうとパケ代かかろうと。
大手なんてどこも評判良くないしね。
0347nobodyさん2006/05/07(日) 19:00:15ID:???
通信速度3M+定額の時代なのに
0348nobodyさん2006/05/07(日) 19:11:19ID:???
au は 第3世代(win)が2.4Mbpsだよね?
docomo は第2世代(mova)がまだ多いからなあ
voda はウンコということしか分からん
0349nobodyさん2006/05/07(日) 19:15:35ID:???
「ユーザーの声を聞く」とか言っている時点で、
利益の出る様なコンシューマサービスの提供者側にはなれない罠
勝手サイトで好き勝手にやってろって幹事
0350nobodyさん2006/05/07(日) 19:24:02ID:???
憎まれっ子世に憚ると言ってだな
0351nobodyさん2006/05/07(日) 19:31:31ID:???
>>349
うちはまぁたかだか会員20万人程度の小規模携帯サイトなので
お客さんのクレームの声は結構切実なんすよ
0352nobodyさん2006/05/07(日) 20:41:55ID: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
 ]になってしまいます。
ですがエラーは出ていません。
どうしたらよろしいのでしょうか?
0353nobodyさん2006/05/07(日) 20:53:14ID:???
>>352
スクリプトの更新日なのであれば
filemtime($_SERVER['SCRIPT_FILENAME'])
のほうが確実じゃまいか。
03543522006/05/07(日) 21:00:01ID:IxA6YfPN
>>353
現在のスクリプトの最終更新時刻を取得するのに、getlastmod() と filemtime() って区別する必要はあるのでしょうか?
わざわざ $_SERVER["SCRIPT_FILENAME"] までしても filemtime()の方が確実な理由ってを教えて頂けませんでしょうか。
03553522006/05/07(日) 21:04:08ID:IxA6YfPN
あ、でも確かにできましたね。
同じUnixタイムを吐くはずなのになんでだろ??
0356nobodyさん2006/05/07(日) 21:26:41ID:???
>>352
http://jp.php.net/manual/ja/function.getlastmod.php
のUser Contributed Notes嫁や
03573522006/05/07(日) 21:48:15ID:IxA6YfPN
>>356
ありがとうございました。
0358nobodyさん2006/05/07(日) 23:26:35ID:???
死ぬほどすれ違いだけど、お前ら自宅でどんなOAデスク使ってる?
俺、8000円ぐらいで小さな奴使ってるんだけど、ノートと本を広げたらもう
何も置けないぐらい小さいんだよ。
何かお勧めある?抽象的だけど、ディスプレイが二つぐらい置けるような大きさキボンヌ
0359nobodyさん2006/05/07(日) 23:35:30ID:???
アホか。
0360nobodyさん2006/05/07(日) 23:43:57ID:???
>>358
SOHOのスレにでも行って聞いてみれば?
0361nobodyさん2006/05/07(日) 23:51:05ID:???
ディスプレイ二つって・・・w
モニターを並べたいのか?
両袖机でも使えば?黒壇使ってたらベストかもな

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

ファイルの最後の方から一定のサイズづつ読み出して、
そこに改行コードが含まれているかをチェックし、それが見つかるまで繰り返す。
見つけたらそれまでに読み出したものを返す、というのが具体的な手法になります。
ファイルサイズが小さければ、先頭から調べる(一行だけ読み込む関数をファイル終端まで繰り返す)というのもありでしょう。
0365nobodyさん2006/05/08(月) 02:45:41ID:???
>>363
そこそこなサイズなら
$a = file("file");
echo $a[count($a) - 1];
とか
03663632006/05/08(月) 03:20:12ID:???
>>364,365
出来ました!(TдT)アリガトウございました!
いろいろサイトを回ってみたんですがずっと分からなくて困ってました
ほんとにありがとうございました
0367nobodyさん2006/05/08(月) 04:43:58ID:???
exec()でimagemagickを使ってます。
時々、リターンコードが成功を返しているのに、
画像ファイルが生成されていないことがあります。
これはimagemagickが不安定なのでしょうか?
同じような現象に会った人、いますでしょうか?
0368nobodyさん2006/05/08(月) 05:39:53ID:???
>>367
exec使っての問題なら、環境書かないと。OS、PHPおよびImageMagickのバージョンなど。
0369nobodyさん2006/05/08(月) 11:56:11ID:???
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";
}
0370nobodyさん2006/05/08(月) 12:06:07ID:???
>>369
log_errors_max_lenじゃない?
03713702006/05/08(月) 12:09:33ID:???
いけね。そこは0にしたって書いてあった…
03723692006/05/08(月) 12:25:42ID:???
その辺くらいしか思いつかないんだけど、
うまくできた人いたら、報告してもらえるとうれしいす
0373nobodyさん2006/05/08(月) 15:05:08ID:wZI7Xo6A
phpのコードを書いてて気づいたのですが、
utf-8と書くときと、utf8と書くときがあります。
文字コード系の関数を使うときはutf8(ハイフン無し)で
htmlのヘッダのcharsetはハイフン無いと読まなかったり。
このへんの正確な定義はなんですか?
0374nobodyさん2006/05/08(月) 15:21:47ID:w88YtdTU
ブラウザ側にheaderを送信して、
その後に時間のかかる処理をしたいのですが、どうしたらよいでしょうか?

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

hogehoge

ABC;

なら問題ないのですが、

(タブ)$var = <<<ABC

(タブ)hoge

(タブ)ABC;

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

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

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

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

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

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

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

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

わざわざ、ソースから技術盗もうなんてする人そんないないと思うんだけど
あとあと細かなことで文句つけられて修正しろ修正しろ、って言われる方が面倒じゃない?
0444nobodyさん2006/05/11(木) 21:46:59ID:???
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 &は本当に有効なんでしょか?
0445nobodyさん2006/05/11(木) 21:53:24ID:???
>>444
以前試して、有効なサーバと有効でないサーバがあった記憶がある。
(xreaで無理で、自宅サーバでOK)
何の設定が影響してたかはしらん・・・
0446nobodyさん2006/05/11(木) 21:55:41ID:???
UNIX勉強すればいいよ
>は標準出力をファイルに
/dev/nullを指定するとデータ破棄
&はバックグラウンドで実行
0447nobodyさん2006/05/11(木) 22:06:30ID:???
配列 改行
配列 改行
配列 改行
   ・
   ・
   ・
ファイル内容がこのような内容になっている場合に
「3行目の配列だけ読み込む」ことは可能ですか?
0448nobodyさん2006/05/11(木) 22:17:58ID:???
>>447
どこに改行があるのか分からんので最初から読んでいくしかない。
まぁ、一行のサイズが固定されているなら、ファイルポインタを移動させることもできるが。。
>>364を参照。
0449nobodyさん2006/05/11(木) 22:20:49ID:???
DBならいろいろできるよ?
0450nobodyさん2006/05/11(木) 22:25:02ID:???
>>443
ちゃんとサイトライセンス組んで契約どおりに使ってくれる客ばっかりじゃないよ。
スクリプト売り(但し再販は不可)とか、サイトライセンス作ってどっちにします?
と提示して、安いのが良いから特定サイトにのみに限定したライセンスにしてくれ
と言われて納品したらコピーしまくり、スクリプト転用しまくりのたちの悪い客も結構多い。
それでこっちから苦情を申し入れても平然としたもんだったり...

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

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

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

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

アクセスして時間を取得して実行させるしかないのでしょうか。
0457nobodyさん2006/05/12(金) 09:51:27ID: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(同様に続く)

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

登録する時などは日本語名で登録するので、そのような場合に
ディレクトリ名に変換する方法はないでしょうか?出来るだけソースが短くて。
0461nobodyさん2006/05/12(金) 11:57:57ID:???
>>459
タスクマネージャってCtrl+Alt+Deleteで出てくるやつ?
0462nobodyさん2006/05/12(金) 12:12:20ID:???
>>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" />
0463nobodyさん2006/05/12(金) 12:22:25ID:???
>>461
タスクマネージャーじゃなくてタスクスケジューラーの間違いだ
コントロールパネルにある「タスク」のことだ
04644572006/05/12(金) 13:05:31ID:???
>>462
上手くできました!大変勉強になりました。ありがとうございました。
0465nobodyさん2006/05/12(金) 15:45:10ID:tJvRMikH
僕が買った技術評論社のphp入門本には、
register globalsをonにしろと書いてあるのですが、
使っているレンタルサーバはoffになっています。
こういうときはどうすればいいのでしょうか?

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

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

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

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

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

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

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

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

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

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

どうでもいいけどそろそろW3Cみたいにブラウザ間の取り決めをちゃんとして欲しい。
何がIEオリジナルタグだ。ばっかじゃないの。少しはおりこうなFxも見習えての。
0489nobodyさん2006/05/13(土) 09:27:11ID:???
>>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コンポーネントから削除済み
0490nobodyさん2006/05/13(土) 21:15:37ID:???
他人のソースを見ていたら

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

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

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


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


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

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

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

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

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

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


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

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

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

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

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

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

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

そっか、そうだよな、頭悪いな俺
0526nobodyさん2006/05/14(日) 19:02:16ID:5bNipnnQ
>>525
まずは落ち着け。落ち着いたらレスアンカーに注目。
0527nobodyさん2006/05/14(日) 21:37:55ID:???
こういうシンタックスエラーって意外と気付き難いのな
Cとかならコンパイル時に教えてくれるけどPHPは実行時にしかチェックしないし
そもそも融通が利きすぎるから文法チェッカーとかも作るのが難しそうだ
0528nobodyさん2006/05/14(日) 21:59:59ID:???
>>527
いや、文法的には合ってるし
0529nobodyさん2006/05/14(日) 23:05:50ID:/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を入れて出来ると思ったのですが、無理でした。
どうすればいいのでしょうか?
0530nobodyさん2006/05/14(日) 23:21:59ID:???
>>529
whileの中は「データがある場合」しか実行されないんだから出るわけねーし。
whileの前にmysql_num_rows()で件数出して、0件ならエラーメッセージ。
0531nobodyさん2006/05/14(日) 23:28:11ID:???
>>529
質問の文章もスクリプトも適当すぎるなぁ。。
やりたい事は、PHPの変数$idとMySQLのフィールドidの値が同じになるレコードが1つも無かった場合に
「登録されていません」って出力したいんだよね。
mysql_num_rows()を使うと結果セットの行数を取得できるから、whileより前でチェックすればよい。
05325292006/05/14(日) 23:33:43ID:???
>>530-531
できました!大変勉強になりました。ありがとうございました。
0533nobodyさん2006/05/15(月) 00:00:22ID:ZEWPSNXY
htmlでincludeとかrequireみたいに別のファイルを読み込むことは可能でしょうか?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

[Windowsキー]押す [U]を二回押す。
0581nobodyさん2006/05/16(火) 11:40:52ID:???
htmlentitiesとhtmlspecialcharsの違いを教えてください。
0582nobodyさん2006/05/16(火) 11:56:22ID:???
>>580
Windowsキーがありませんw
0583nobodyさん2006/05/16(火) 12:08:16ID:???
Linuxですが(笑い)
0584nobodyさん2006/05/16(火) 12:37:33ID:???
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以下のファイルが見えてしまうからです。
0585nobodyさん2006/05/16(火) 13:30:51ID:???
ディレクトリ内のファイル一覧を取得する方法を教えてください
0586nobodyさん2006/05/16(火) 13:36:04ID:???
>>569
はじめてのPHPといった感じのタイトルの書籍買え。
Hello worldからやってくしかない。
0587nobodyさん2006/05/16(火) 13:44:05ID:???
>>585
>>584
0588nobodyさん2006/05/16(火) 14:35:39ID:???
>>584
どんなエラーが出力されたの?

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

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

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

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

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

まあ一回のクエリではなく何回もクエリ発行すれば難しい問題ではない
0605nobodyさん2006/05/16(火) 20:58:37ID:???
>>601-603
すいません、説明不足でした。
レコードの上下関係を入れ替えたいのです。Bレコードより上にあるAレコードをBレコードの下にもっていきたいのです。
0606nobodyさん2006/05/16(火) 21:07:45ID:???
DB内の各レコードに上下関係(順序)は無い。
取り出す時になんらかの条件で順序を指定してやることで順番が生まれる(order by)。
とは言っても、順序を指定しない場合でもなんらかの順番でデータを取り出していく必要があるので、
それがたまたまABの順番に並んでいただけ。
0607nobodyさん2006/05/16(火) 21:08:27ID:???
さらに補足
元のAレコードは削除したいです。移動後のAレコード1つ、ということです。
0608nobodyさん2006/05/16(火) 23:25:13ID:???
zend5誰かnyに流してください><
0609nobodyさん2006/05/17(水) 00:44:18ID: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に飛ぶのですけど
変数を受け渡しできません。なぜでしょうか?
0610nobodyさん2006/05/17(水) 00:55:36ID:???
>>609
試しに、

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

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

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

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

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

それから、ファイルに書き込んでるところがバグっぽいね。
0617nobodyさん2006/05/17(水) 01:42:55ID:???
ごめん
×$POST
○$_POST
0618nobodyさん2006/05/17(水) 02:11:53ID: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
どういう意味でしょうか?
0619nobodyさん2006/05/17(水) 02:20:59ID:???
>>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度書き直せ。
0620nobodyさん2006/05/17(水) 02:29:43ID: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'];
//時間の取得


これでいいのですか?
0621nobodyさん2006/05/17(水) 02:30:47ID:???
>>620
違う。$f_nameとか書いてる場所を$_POST['f_name']に差し替えろ。
今のPHPでは$f_nameなどの変数は自動的には生成されなくなってる。
0622nobodyさん2006/05/17(水) 02:34:00ID:???
>>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から勝手にまとめますた
0623nobodyさん2006/05/17(水) 02:34:35ID:???
$_POSTは関数じゃねええええぇぇぇぇ!!
いくら下質でもここまで下らないと涙が出てくるな
0624nobodyさん2006/05/17(水) 02:38:25ID:2nYaOrw7
ということは、すべてにおいて変数は
$〜の形じゃなく$_POST['〜']になるんですか!?
0625nobodyさん2006/05/17(水) 02:39:58ID:???
>>624
変数は、じゃなく「POSTで送信される変数は」。
0626nobodyさん2006/05/17(水) 02:46:22ID:???
(´-`).。oO(なんで質問者がくってかかるような調子なんだろう…)
0627nobodyさん2006/05/17(水) 02:47:33ID:???
PHPは簡単だって聞いてたのに騙された!と思ってるカラ
0628nobodyさん2006/05/17(水) 02:54:41ID: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']

にすればいいのですよね!
0629nobodyさん2006/05/17(水) 07:46:11ID:???
御意
06306072006/05/17(水) 09:35:40ID:???
>>606
亀レスすいません。よくみてませんでした。
そうですか、了解しました。ありがとうございましたm(__)m
06315842006/05/17(水) 10:04:49ID:???
>>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などが実行できなくて支障がでています。

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

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

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

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

.htaccess?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

//抹消
unregister_tick_function("hoge");

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

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

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

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

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

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

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

まぁとりあえず正規表現でググれ
0702nobodyさん2006/05/18(木) 23:35:09ID:???
>>699
スレ名の【】の中にある3文字のアルファベットでググればわかるよ
0703nobodyさん2006/05/18(木) 23:36:11ID:???
ああ、Perlにクダ質スレって無いんだな…
>>699
君は、まず2ch初心者板へいったほうが良いよ
0704nobodyさん2006/05/18(木) 23:40:38ID:???
>>694はPerl関係から来たマルチだからほうって置け。
0705nobodyさん2006/05/18(木) 23:47:44ID:???
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" />
0706nobodyさん2006/05/18(木) 23:48:31ID:???
>>701
12って入ってきたら、16って返したいんだ。
引数とログファイルの2行目を比較して、マッチすれば、その列の6行目を返す…
0707nobodyさん2006/05/18(木) 23:59:35ID:???
>>706
file() -- ファイルの中身全部を1行ずつ配列に格納する関数
explode() -- 区切り文字で文字列を分割する関数
foraezh() -- 配列を1つずつ取り出せるループ構文
if() -- 条件構文

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

マニュアルにもちゃんと書いてあっからまずマニュアル読んで来い
0721nobodyさん2006/05/19(金) 03:59:15ID:???
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」 ←このような感じにしていんです

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

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

どっちにしろPHPとは関係ない。
CGIの本でも読みなさい。
0723nobodyさん2006/05/19(金) 07:40:11ID:???
>>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;
}
?>

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

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

でもたしかにセッションによるログインはうまく行ってる・・・だから混乱してます。
0725nobodyさん2006/05/19(金) 08:23:27ID:???
本当に正しいフォルダを見ているのか、setcookie()で明示的にcookieを発行して
ファイルが生成されるかどうか確かめて見ればいいんじゃないかな。
おいらは面倒くさがりなのでproxomitronとかのプロキシソフトを使って直接HTTPヘッダを覗いてるけど。
0726nobodyさん2006/05/19(金) 08:39:57ID:???
質問スレってなくなったの?
0727nobodyさん2006/05/19(金) 09:20:32ID:???
>>726
1000近くなった頃、ここと質問レベルが大差なくなってきたので、次を立てる人がいなかったんだと思います。
0728nobodyさん2006/05/19(金) 11:08:16ID:???
>>724
>>725の言うようにヘッダをダンプしろ。
0729nobodyさん2006/05/19(金) 11:28:09ID:???
前から使用しない意味不明な引数を付けたリクエストがあって
 例)
 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の方がいいでしょうか?
0730nobodyさん2006/05/19(金) 11:33:10ID:???
>>727
992で質問したんだけどDAT落ちしちゃったから回答が返ってきたのかすらわからない・・・・・
0731nobodyさん2006/05/19(金) 12:11:12ID:???
>>724
お前
セッション限り(期限の設定なし)のクッキーの場合クッキーファイルは作成されないんだよ
0732nobodyさん2006/05/19(金) 12:43:44ID:???
>>730
過去ログ見たけど、回答はなかったよ。まだ解決してなければ、ここで再質問どうぞ。
0733nobodyさん2006/05/19(金) 12:59:46ID:b+EKMyUQ
フォームから受け取るメールアドレスの値はエスケープする必要はありますか?
0734nobodyさん2006/05/19(金) 13:26:50ID:???
>>733
目的による
0735nobodyさん2006/05/19(金) 13:34:44ID:???
>>733
何のためにどこでエスケープすべきか、
もっと基本から勉強した方がいい。
0736nobodyさん2006/05/19(金) 13:52:56ID:b+EKMyUQ
733です。エスケープしました。
ありがとうございます。
0737nobodyさん2006/05/19(金) 14:46:50ID:???
>>729
$_SERVER['PATH_INFO']あたりで判定できないかな?
phpinfoを呼び出すプログラムを書いて
そのURIにいろいろくっつけて使えそうな引数探してみるといいかも。
404はheaderで飛ばせるはず。
0738nobodyさん2006/05/19(金) 15:33:15ID:???
データベース板って住人が少ないのか、質問への回答が得られない場合があって寂しい
0739nobodyさん2006/05/19(金) 15:33:27ID:???
ログイン判定して、ログイン済の人に内容表示、未ログインの人は飛ばす時って、

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

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

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

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

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文をブラウザに表示させないようにする方法が
ありましたら教えていただきたいです。

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

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

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

1件ずつデータを追加するのはわかるのですが、どうやって複数の期間を
判別するのかがわかりません。配列に入れてcountで計算?とか思ったのですが、
なんか違うみたいだし・・。登録処理はforでその期間分を回すと思うのですが・・。
0761nobodyさん2006/05/19(金) 22:07:23ID:???
>>760
よくわからん
例キボンヌ
0762nobodyさん2006/05/19(金) 22:10:34ID:???
それのどこがアドレス帳かと。。。
07637602006/05/19(金) 22:13:09ID:???
>>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のように表示出来ないでしょうか?
0764nobodyさん2006/05/19(金) 22:16:16ID:???
>>760
それはスケジュール帳の間違いじゃないのか
07657602006/05/19(金) 22:19:35ID:???
>>764
スケジュール帳の間違いです。。
0766nobodyさん2006/05/19(金) 22:19:53ID:???
>>763
それ、月や年超えたらすごい数値にならないか?
0767nobodyさん2006/05/19(金) 22:21:29ID:???
>>763
substrとかで切ったら?

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

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

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


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

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

$a[] = 1;

とかをしてみたら

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

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

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

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

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

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

Virtual Earth
http://local.live.com/
0795nobodyさん2006/05/20(土) 14:02:30ID:???
>>794
PHPと関係ないってわかってんならココに書くな
0796nobodyさん2006/05/20(土) 14:40:18ID:???
まあ大分類だと UI=HTML だからね
0797nobodyさん2006/05/20(土) 14:58:45ID:???
>>793
解決しました
0798nobodyさん2006/05/20(土) 15:13:58ID:???
<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 〜と出るんですが
何がおかしいですかね
うんこな質問だったらごめんなさい
0799nobodyさん2006/05/20(土) 15:27:38ID:???
エラーの行数も表示されるはずだが、なんで隠すのかねぇ。
とりあえず、この書き方がキモく感じるから、これが間違ってるんでね?
if (3 <= $hour < 10) {
0800nobodyさん2006/05/20(土) 15:40:19ID:???
if (3 <= $hour and $hour < 10) {
0801nobodyさん2006/05/20(土) 16:30:53ID:???
phpに直接関係ないかもしれないけど、phpで作るつもりなので質問させてください。
ある会社が提供してるサービスを再販するために、システム開発のためのAPI提供してくれてるんですが、
その使用形式ってのが
http://その会社のアドレス/api.php?id=$id&pass=$pass&action=$action
というアドレスへシステム(php等)からアクセスするっていう方式なんです。
ここでかなり不安になったのが、
URLにID/PASSを含んでることです。
まずSSL使用しなければ危険性盛りだくさんな気がしますし、
このシステムはクライアントに対して利用してもらうことになるので
他にもなんかかなり不安です。
(たとえば、php.iniでエラー表示させる設定にしてて
何かエラーが発生したら簡単にID/PASSを漏らしちゃいそうな・・・
これの場合はその設定をoffにすればいいだけですが)


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

お二人ともありがとうございました
0805nobodyさん2006/05/20(土) 17:09:46ID:???
いっつも 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])が苦手です。

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

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

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

フォーム内容を変更して

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

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

<?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
0843nobodyさん2006/05/21(日) 23:38:10ID:???
>>842
ファイル名見せてみ?
08448422006/05/21(日) 23:39:51ID:???
>>843
ファイル名は(というかファイルの場所は)
http://(ドメイン名)/admin/logout/index.php

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

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

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

>>842のソース
</html>

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

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

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

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

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

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

$cmd  =  $_GET["cmd"];
if (file_exists($cmd . ".inc.php") {
    include ($cmd . ".inc.php");
} else {
    $error  =  "Not Found...";
}
0866nobodyさん2006/05/22(月) 02:12:27ID:???
>>865
そのままだとXSSの危険性があるので preg_match() で正規表現による
マッチングを行ったほうがいいと思う。念のため。
0867nobodyさん2006/05/22(月) 03:10:50ID:???
>>865
http://>>865サーバ/test.php?cmd=http://オレのサーバ/悪意のあるコードを含んだinc.phpのあるディレクトリパス
08688612006/05/22(月) 03:37:18ID: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";
     }
  }
}
0869nobodyさん2006/05/22(月) 04:34:06ID:???
Cでよくやる
#define DEBUG
#ifdef DEBUG
デバグ用コード
#endif
に近いことを php でやるにはどうしたらいいでしょう?

デバグ用のコードに簡単に切り替えられればなんでもいいですが。
0870nobodyさん2006/05/22(月) 04:47:43ID:???
define('DEBUG', true);
if (defined('DEBUG')):
デバグ用コード
endif;
0871nobodyさん2006/05/22(月) 04:49:09ID: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が実行されるのでしょうか?
(同時に実行してしまうことはないでしょうか?)
0872nobodyさん2006/05/22(月) 04:57:54ID:???
>>870
endifなんてPHPにあったっけ?
0873nobodyさん2006/05/22(月) 04:58:54ID:???
>>871
systemで実行するコマンドがバックグラウンド動作指定されてなければ大丈夫
0874nobodyさん2006/05/22(月) 05:05:07ID:???
>>867
それはfile_exists()の段階で弾かれそう
0875nobodyさん2006/05/22(月) 05:08:04ID:???
>>870
あれ、PHP って
if() {
function hoge() {
}
}
とかできるん?
0876nobodyさん2006/05/22(月) 05:18:08ID:???
>>872
http://www.php.net/manual/ja/control-structures.alternative-syntax.php
俺も余り使わんが
0877nobodyさん2006/05/22(月) 05:22:40ID:???
>>875
できるよ
0878nobodyさん2006/05/22(月) 05:38:25ID:???
>>874
ぐは
file_existsはリモートファイルでは使えないって書いてあったorz
みんな、マニュアルはよく読もうね(´・ω・`)
0879nobodyさん2006/05/22(月) 06:28:30ID:???
>>877
できんかった。
class 内ではできないのか?こまっちんぐ。
0880nobodyさん2006/05/22(月) 06:30:14ID:???
>>879
それは普通、extendでメソッドオーバーライトする場面じゃないのか?
0881nobodyさん2006/05/22(月) 06:35:44ID:???
>>880
php で関数上書きなんてできんでしょ?
0882nobodyさん2006/05/22(月) 06:39:29ID:???
>>881
あれ、ごめん勘違い。
オーバーロードができないだった。
0883nobodyさん2006/05/22(月) 06:42:45ID:???
あれ、でも、class 内関数でない関数をオーバーライドはできないよね?
そのときは例の if を使わざるをえない?
0884nobodyさん2006/05/22(月) 08:41:41ID:???
>>868
その正規表現だと「0-9A-Za-z」しかマッチしないんじゃないか?
正しく書かれていても、0-9a-zA-Zが1文字も含まれない場合しかスルーしない
if (preg_match ("!^\w+$!", $cmd, $m_cmd) ) {
とすべきか(_も含まれちゃうけど)

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

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

みたいにやってるんですが、こんな感じの関数とかってありませんか?
0886nobodyさん2006/05/22(月) 09:12:27ID:QKaBTlkn
データの中から、χ行目だけ読み込んで、
上書きまたは削除というのはできませんか?
そういう関数はありませんか?
0887nobodyさん2006/05/22(月) 09:16:37ID:???
>>886
出来るけどそういう関数は無い。
DBが使うのが手っ取り早い
0888nobodyさん2006/05/22(月) 09:20:46ID:QKaBTlkn
>>887
やっぱり、ループで一行ずつ読み込まないといけないですよね。
DBを使わずに作成したいのですが、データが大量になるとつらいです?
0889nobodyさん2006/05/22(月) 10:13:56ID:???
>>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);

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

$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);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

という具合にすればOKって事ですよね?
0908nobodyさん2006/05/22(月) 14:35:52ID:???
>>904
あたりまえ
マニュアル嫁
09098902006/05/22(月) 14:39:20ID:???
>>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の処理が逆になると、どうなるか分かりますよね?問題が起こってるのはそういう理由だと思います。

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

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

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

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

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

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

fclose($lock);

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

$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() はいらないんだっけな
0915nobodyさん2006/05/22(月) 16:14:51ID:???
素人です。

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

sql_closeを入れても同じです。

どうやったら、解決するでしょうか?
09169152006/05/22(月) 16:17:16ID:???
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);
0917nobodyさん2006/05/22(月) 16:32:47ID:???
>>915
フォームからの入力値をチェックして不適切(空)ならエラー処理
0918nobodyさん2006/05/22(月) 16:34:36ID:???
>917
やっぱ、それしか無いんですかね・・・
もっと簡単に出来るかなと思ったのですが。

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

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

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

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

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

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

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

という値が代入されているとします。
先頭が「*」で始まる文字列を見出しタグで括りたいのですが、これを実現するための関数はありますでしょうか?
0933nobodyさん2006/05/22(月) 20:41:29ID:???
$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]).'>';
//}

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

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

今気づいた・・
$test = preg_replace("/([\*]+)([^\n]+)\n/", "<h".strlen("\\1").">\\2"."</h".strlen("\\1").">\n", $test);
0939nobodyさん2006/05/22(月) 20:58:08ID:???
$hoge =0; もしくは $hoge ="0";
echo $hoge;
上記のようにしたときに$hogeが空の状態で表示されてしまうのですが
どのようにしたら0と表示するのでしょうか?
おそらくiniの設定かなと思うのですがどこを変更すればいいのかが分かりません
使用しているバージョンはphp4.4.1です
0940nobodyさん2006/05/22(月) 20:58:47ID:???
>>932
面白いから読んどけ
ttp://www.kt.rim.or.jp/~kbk/regex/regex.html
ttp://www.din.or.jp/~ohzaki/regex.htm

スレ違いごめん
0941nobodyさん2006/05/22(月) 21:01:51ID:???
>>939
printf
0942nobodyさん2006/05/22(月) 21:24:44ID:???
>>941
ありがとうございます
とりあえず表示は出来ました
しかし以下のような使い方をする時にはどのようにしたらいいのでしょうか?
$array = array("0","1","2");
for($i=0;$i<count($array);$i++){
printf("%d",$array[$i]);
}
$iが0の時の値が表示できません
よろしくお願いします
0943nobodyさん2006/05/22(月) 21:46:29ID:HMN8IoOb
4.4.3はいつ出るんですか
0944nobodyさん2006/05/22(月) 21:52:44ID:???
プログラム板から誘導されてきました。

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

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

俺の認識だと無理だと思うんだけど、実際どうなんですか?教えて下さいな
0950nobodyさん2006/05/22(月) 22:24:57ID:RlV2K8v8
超初心者なんですが『ECHO』で表示させたテキストの
色・サイズなどを変更は、どうすれば良いんでしょうか?
0951nobodyさん2006/05/22(月) 22:36:09ID:???
BIGECHO
0952nobodyさん2006/05/22(月) 22:36:58ID:???
>>950
HTMLをechoで出力する
0953nobodyさん2006/05/22(月) 22:39:58ID:???
echoとprintの違いってなんなんでしょうか?
0954nobodyさん2006/05/22(月) 22:41:42ID:???
>>949
ttp://www.php.net/manual/ja/ini.php
0955nobodyさん2006/05/22(月) 22:46:14ID:???
>>953
echoはキー4回押下
printは5回押下
09569322006/05/22(月) 22:48:35ID:???
>>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];
0957nobodyさん2006/05/22(月) 22:50:17ID:???
>>954

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

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

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

<?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タグで括るようにすればいいのですね。

ありがとうございました(^^
0962nobodyさん2006/05/23(火) 01:59:05ID:???
>>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);
0963nobodyさん2006/05/23(火) 02:26:43ID:???
>>962
それ正規表現でマッチングさせて置き換えする必要ってあるのか?
0964938 2006/05/23(火) 07:57:36ID:???
>>961
はじめ行で分割してやったけど
正規表現で一発で置き換えすればいいかと思った
その方法だとpreg_replaceはいらないよ
配列にreplaceは意味ない希ガス
0965nobodyさん2006/05/23(火) 08:18:34ID:???
>>929
php.iniの他のセッション関連の設定をうpしる。
09669422006/05/23(火) 11:08:53ID:5evz5UIt
>>945
遅くなって申し訳ないです。
教えていただいた方法で書き出した所
int(0)と出ました。
0967nobodyさん2006/05/23(火) 11:47:33ID:???
>>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);

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

PHPでメールとメールの添付ファイルを受信する為には
どのような方法をとれば良いのでしょうか…
0970nobodyさん2006/05/23(火) 13:32:45ID:???
おk。まずは調べることから始めてみようか。
0971nobodyさん2006/05/23(火) 13:37:39ID:???
まず、メールを取り込む方法を決める。これは通常はPOPかIMAP、あるいは
MTA(みたいなやつ)からのパイプ起動の三択。
で、次にそのメールのMIME構造を解釈するとメール本文と添付ファイルが得られる。
0972軟式PHP2006/05/23(火) 13:47:20ID:???
みんな優しいな
0973nobodyさん2006/05/23(火) 14:02:32ID:???
俺には冷たいのにな
0974nobodyさん2006/05/23(火) 14:23:04ID:???
.forwordで転送。
0975nobodyさん2006/05/23(火) 14:32:39ID:z6MA0Zs/
PHPにはJMailみたいなライブラリはないのか?
0976nobodyさん2006/05/23(火) 15:09:10ID:???
jmail ってwebアプリじゃないの?
0977nobodyさん2006/05/23(火) 15:41:54ID:???
http://repu.nttrd.com/repu.html?sk=PHP&u1=0&u4=0&d1=&d2=&d3=&df1=1&df2=1&df3=1&bf=0
0978nobodyさん2006/05/23(火) 17:17:20ID:???
>>959
ヒント:CGIバイナリPHP
0979nobodyさん2006/05/23(火) 18:09:44ID:???
ファイルロックで

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

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

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

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

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

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

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

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


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

>>1000 あとは頼んだ
1000nobodyさん2006/05/23(火) 22:18:30ID:???
                        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 |、,/
                                             `" '
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。