2 :
nobodyさん:04/11/22 17:27:59 ID:HPZgqIhK
2
3 :
3:04/11/22 17:30:21 ID:???
4 :
4:04/11/22 17:31:29 ID:???
重複スレ立てちゃうトコだった(;´Д`)
6 :
nobodyさん:04/11/22 19:04:57 ID:5v0Qpc9v
PHP4で関数ポインタみたいなのってあります?
コールバック関数を引数で指定したいんですけど。
可変関数を使う。
9 :
nobodyさん:04/11/22 19:32:29 ID:sWiZ7QKf
substr_count関数なんですが正規表現を使って
カウントすることは出来ないでしょうか?
>>9 count( mb_split("正規表現") ) で返ってきた数値を少し弄る
たいがいにしなさい
12 :
6:04/11/22 20:06:41 ID:5v0Qpc9v
call_user_func() って、コールバックの関数の引数にリファレンス渡せないのかな?
なんかそんな感じのどうさになっているよう。。。
すんまそん。よろしくです。
例えば"abcdefg.mp3"の文字列から"abcdefg"だけを取り出したいのですが、
どうすれば良いのでしょう。
逆に".mp3"ならばすぐに取り出せるのですが。
echo strstr("abcdefg.mp3",'.')とか・・・
よろしこ
14 :
nobodyさん:04/11/22 20:33:36 ID:HopG55j+
2004年11月1日(例)が何曜日か簡単に得る方法はないでしょうか?
>>14 mixed jddayofweek ( int julianday, int mode)
--enable-calendarを指定して PHPをコンパイルする必要があります。
>>1 乙
>>13 そこまで分かっていながらなぜ応用できない?
$str = 'abcdefg.mp3';
echo substr( $str, 0, strpos( $str, '.mp3' ) );
>>14 echo date( 'l', mktime( 0, 0, 0, 11, 1, 2004 ) );
>>13 >>16 の方法以外にも basename() を使う方法もある。
echo basename('abcdefg.mp3', '.mp3');
>>14 探偵ナイトスクープに出てきた2050年くらいまで
何年何月何日が何曜日か瞬時にわかる少年に尋ねる。
21 :
nobodyさん:04/11/23 01:24:19 ID:HlpT5KHT
クリックされたセルの背景色を変えたいです。
セルにIDを振り、クリックされたら
#cell1{background-color:#000}
と書き足して、URLを例えば「?cell1=yes&cell2=yes...」のようにしたいのですが
セルにIDを振ったところで行き詰ってしまいました。
次々に加えていくにはどうしたらいいでしょうか?
>21
javascriptのが楽チンポ
23 :
21:04/11/23 01:30:14 ID:???
hotmail.co.jpの欲しいアカウント取れてうれしかったから書かせてくれ
この喜び誰かに伝えたかっただけなんだ
スレ違いもわかっている
しかし伝えたかったんだ
げっとーーーーーーー
>21
1クリックごとに、セッション変数に登録していくとか・・・・
変数の数を増やしたくなければ、配列にして入れていけばいいだろうし。
?cell1=yes
でリクエストが行ったとして、
<?php
foreach($_REQUEST as $key=>$val){
if($key が "cell"で始まるなら){
if(eregi("yes",$val)){
$_SESSION['cell'][$key]=true;
}else{
$_SESSION['cell'][$key]=false;
}
}
}
?>
<td id="cell1">の部分を、
<td <?php if($_SESSION['cell']['cell1']){ echo 'id="cell1"'; } ?>>
ってのはどう?
あぁ、久々の二日酔いで、気持ち悪。
26 :
21:04/11/23 10:38:52 ID:HlpT5KHT
>>25 おはようございます。
早速やってみたらうまくできました。ありがとうございました。
あと、もう一度クリックされた時に$keyを削除するにはどうしたら良いでしょうか。
27 :
nobodyさん:04/11/23 10:46:50 ID:dbSyw8j5
以下の連想配列の、rslt1の値をとりたいのですが、$a=$_array[rslt1]
でうまくいかない・・・誰か取り方教えて下さい。お願いします。
print_r($_array);
Array
(
[return] => Array
(
[rslt1] => 1
[rslt2] => 2
[rslt3] =>
)
[url] =>
http://www.foo.com/ )
echo $_array['return']['rslt1'];
29 :
27:04/11/23 11:08:06 ID:???
>>28 取れました!ありがとうございました。
ただ、$_array[return]['rslt1'];
と、''と省略するとダメなんでつね・・・これも試したんですが、
かなりはまりました。おかげさまで助かりました。
30 :
nobodyさん:04/11/23 11:11:46 ID:v88Yo34b
オブジェクトのserializeは、
複雑なオブジェクトでは無理なのでしょうか?
継承を使ったクラスのオブジェクトを
serializeしてechoすると
N;
と表示されました。
単純なクラスを書いてテストすると
ちゃんと中身が表示されました。
いったいどういうことなのでしょうか?
ちなみにPHP5です。
32 :
30:04/11/23 11:39:02 ID:???
どうも基底クラスで
__call関数を定義している場合にこのようになるようです。
これはバグですかね?
php5でも、php4のようにプログラミングしておいた方がいいということでしょうか…orz
33 :
30:04/11/23 14:38:28 ID:???
更に調べていったら
staticなプロパティーのあるオブジェクトも
正常にserialize→unserialize出来ない感じです。
要するにphp5独自の命令はserializeできないと?
このあたり詳しい人いませんか?
>>30 公式に『できないぞ、バグじゃねぇのかゴルァ』と言えばいつか出来る
bugfixをコミットすればさらに早くできる
36 :
nobodyさん:04/11/23 17:59:12 ID:fG+RzSBW
<?php
$connect = mysql_connect("localhost", "***", "***");
phpファイルに上のようなID/PASSWORDを書き込んで使用すると
思うんですが、とある京大卒のシステムエンジニアが以前
「web上のプログラムのphpやcgiのコードなんかすぐ見れるんだよ」と
言っていました。
その人の言うことが正しいと、上記のようなコーディングで
ID/PASSWORDが○見えってことなんですが、
マジですか?イマイチ信じがたいんですが。
みなさんはどうやって対処してるんでしょうか?
>>36 そんなこともわかんないんならphpやめろ。カス。
>37
ごめん、どうやるのか教えてください。
例えばログのテキストファイルを拡張子 cgi にしてれば他人に読まれることはない
と思っていたんだけど、だめなんですか? >36みたいな書き方もしてました。
共有鯖の場合、PHPがCGI版でSuExecが有効なら、パーミッションを適切に設定すれば、
鯖の管理者か、ユーザを乗っ取られなければ見られない。
パーミッションを適切に設定しないと、同じ鯖を使ってる人にファイルの中身を覗かれる
可能性がある。
配列$linesの中から$stの要素を含む特定の配列を削除したいんですが
これでいいでしょうか?もっとスマートにできませんかね。ご意見お願いします。
$lines = file($log);
for ($i=0; $i<count($lines); $i++) {
list($r1[$i], $r2[$i],) = explode("<>", $lines[$i]);
}
$result = array_search($st, $r2, true);
if ($result !== FALSE){
unset($lines[$result]);
}
41 :
25:04/11/23 20:30:17 ID:???
>21,26
もう解決したかな?
?cell1=yes
というパラメータを出力する部分を
$key = cell1;
だとして、
<a href="hoge.php?<php if($_SESSION['cell'][$key]){
echo $key."=no"; <- yes以外を渡す
}else{
echo $key."=yes";
}
?>">hoge.php</a>
みたいにすれば、良いんでない?
htmlは汚くなるけどねぇ。
>>40 初心者の回答で申し訳ないが漏れならばこうかな
$i=0;$lines=array();
foreach ( file($log) as $line ) {
list( $r1, $r2,) = explode("<>", $line);
if ( $r2 != $st ) { $lines[$i] = $line; $i++; }
}
44 :
43:04/11/23 20:45:08 ID:deYy9Umy
ageさせていただきます。
そういうのを一般的に「利用できない」って言うんじゃないの?
逃げ道としてmod_rewriteを使った方法がuser noteに載ってたよ。
>>36 共用鯖等で
「見れる場合もある」という事では?
ちゃんと設定してる専鯖なら侵入しないと見れないでしょ。
48 :
nobodyさん:04/11/24 00:53:44 ID:TtNOWNs7
定数名をコーテーションでくくればいいんじゃないんですか?
>>47 結局見れないってことでおーけー?
漏れもつい最近php始めたばかりだから
passとかそのまま書いてあるファイルをアップするのに
すごく抵抗あった。
>>50 PHPの前に日本語勉強した方がいいと思う。
>>50 いろいろ聞く前にそこらに落ちてるスクリプトダウンロードして参考にしてみろよ
まぁ結論としては
仕組みを理解できないやつは
共有サーバでPHP使うなってことでいいじゃん
>>50 見れないんじゃない
見れる場合もあるし見れない場合もある
絶対に見れないなんてサーバごとの設定で変わる
怖いなら自分でサーバ立てて遊べ
変数の中からURLを抽出してハイパーリンク張るってのをググったら以下のようなモノを見つけました。
$txt = "ほげ
http://www.hogehoge.com/hoge.php?hoge=hogehogeうげ";
$html = mbereg_replace('https?://[a-zA-Z0-9.]{2,}(:[0-9]+)?(/[-_.!~*a-zA-
Z0-9;/?:@&=+$,%#]+)?','<a href="\0">\0</a>',$txt);
コレをWindowsのネットワーク参照の場合でもリンク張るようにしたいです。
(\\testsub\_public\テストフォルダ\ という文字列があった場合<a href="\\testsub\_public\テストフォルダ\">\\testsub\_public\テストフォルダ\</a> って結果が得たい)
正規表現とかよーわからんので誰か教えて頂けませんか。
これがいわゆる丸投げというんだよ
57 :
nobodyさん:04/11/24 14:26:34 ID:uMAYUbw6
GDモジュールを組み込みたくて、
既に稼動しているサーバーのPHP4.1を
4.3にバージョンアップしたいんですが、
動いているDBやプログラムなどに影響なく上書き可能なものでしょうか?
その際、注意する点など教えてください。
>>57 日本PHPユーザ会のウェブページに各バージョンのチェンジログがあるので(日本語)、
それを確認されたし。影響が出るかどうかは今までのコーディングスタイルによる
ところが大きいので一般論としてどうこうは言えない。
59 :
57:04/11/24 14:56:41 ID:???
>>58 ご返答ありがとうございます。
早速、確認してみます。
60 :
◆.jC7ANgFY. :04/11/24 17:44:46 ID:u2c0bqPj
質問させていただきます。カウンターを設置しているのですが、
ロックもちゃんとできているはずなのにカウンターが崩壊して
しまいました。flockでは不完全なことがあるのでしょうか。
環境はFreeBSD 4.10-RELEASE[i386] + Apache/1.3.29 + PHP/4.3.6です。
アクセスログから得られる当時の状況としては
1秒に30回上がる状況でした。
$log = './counter.dat';
$fn = fopen($log, 'r+');
if (flock($fn, LOCK_EX)) {
$cnt = unserialize(fread($fn, filesize($log)));
define('UNIX_DAY', intval((intval(time() / 3600) + 9) / 24));
if ($cnt['day'] == UNIX_DAY) {
$cnt['tdy']++; $cnt['cnt']++;
} else {
$cnt['day'] = UNIX_DAY; $cnt['yes'] = $cnt['tdy'];
$cnt['tdy'] = 1; $cnt['cnt']++;
}
ftruncate($fn, 0); rewind($fn);
fwrite($fn, serialize($cnt));
}
fclose($fn);
61 :
nobodyさん:04/11/24 18:06:10 ID:U8iE6hyF
行き詰まってます。
index.phpに
<?
$hoge="ABCDE";
include("inc.php");
?>
inc.phpに、
<?
echo "$hoge";
?>
index.phpを実行すると
ABCDEと出力されて欲しいんですが、何も出ません。
こういう形でinc.php、に出力処理を書くようなのは、間違った使い方なんでしょうか??
64 :
61:04/11/24 18:46:43 ID:rINoz0G+
>63
include("
http://hoge.com/inc.php")
という形で、絶対パスで指定しています。
ちなみに、
inc.phpに
<?
$hoge="ABCDE";
echo"hoge";
?>
としてやって、index.phpを実行すると、ABCDEと出力されます。
include自体は成功していて、変数の受け渡しが出来ていないのだ、と思うんですが・・。
>>64 もしそれが動いちゃったらどうなるかよーく考えてみれ
>>64 それ絶対パスとは言わないような・・・俺が間違ってるかな
67 :
nobodyさん:04/11/24 19:46:20 ID:T2L7eVOo
質問です
Array([0]=>1[1]=>10[2]=>15[3]=>30[4]=>50)
とformから受け取ったのを、値をカンマ区切りで
$id<>$name<>$mail<>1,10,15,30,50<>
とログに書き出したいのですがどうしたらいいですか?
69 :
67:04/11/24 20:02:06 ID:T2L7eVOo
すいません追加です。
Arrayに入ってくる値の数はまちまちです。
このまちまちなのをどうしたらいいのかが分かりません。
よろしくお願いします。。
71 :
70:04/11/24 20:04:47 ID:???
>>69 配列の値の数を返す関数がある。
それを元に取り出す。
で、基本的に
>>70
72 :
nobodyさん:04/11/24 20:18:06 ID:iZEscFNu
PHPでワンタイムパスワード(時刻とID)を利用しようと思ってるんですが、サーバAでキーを発行、サーバBで認証する時、時刻はどのサーバで検証するべきなんでしょうか。
一台認証サーバを用意するべきですか?
他に方法があれば教えて下さい。
73 :
67:04/11/24 20:25:26 ID:T2L7eVOo
implode!!
ありがとうございました!
それで
$id<>$name<>$mail<>1,10,15,30,50<>
$id<>$name<>$mail<>2,12,16,30,60<>
こんな感じになったログから
何番が何回選ばれているかカウントするにはどうしたらいいですか?
>>73 そこでこれだ。
select number, count(number) from tablename group by number;
>>73 あなたは 趣味でPHPやってるの? それならマニュアルじっくり読むなり、自分でじっくり考えるなり
時間をかけてでも自分でやろうとしろよ。
もし、仕事でやってるなら 転職しろ。
転職ワロタ
78 :
61:04/11/24 22:47:07 ID:rINoz0G+
>>65,66
ヒントありがとうございます。
include($_SERVER['DOCUMENT_ROOT'].'/inc.php');
で、無事動くようになりました。
他のサーバにあるPHPを勝手に動かす事が出来ないように、こう記述しないとダメ、という理解でいいんでしょうか?
#
http://〜って、なんて言ったらいいんでしょうか…
>>60 以前に似たような話で指摘した気がするけど、原因はこの部分。
> ftruncate($fn, 0); rewind($fn);
一時的にでもファイルサイズを 0 にすると、その間に別の httpd のプロセスが
ファイルサイズ 0 のキャッシュを読んでカウンタファイルが壊れる可能性がある。
FreeBSD では試していないけど、Linux でもそれと同じスクリプトを試してみたら、
簡単にカウンタファイルを壊すことができた。flock() は正常でもファイルキャッシュ
とかの関係で壊れることが多い。
とりあえず、Apache 付属の ab でも使って思うので試してみたら?
FreeBSD でも簡単に壊れると思うし、エラーログを見ればエラーが
出力されているはず。コマンドはこんな感じ。
/usr/local/apache/bin/ab -n 1000 -c 5
http://example.com/count.php Linux で確認したカウンタファイルを壊さないようにするための回避方法だけど、
fopen() の行の前に clearstatcache() を入れておくとファイルサイズ 0 の
キャッシュを読み込んでカウンタを壊すことはなくなった。
または、
ftruncate($fn, 0); rewind($fn);
fwrite($fn, serialize($cnt));
の部分を以下のように修正するというのでも回避可能だった。
rewind($fn);
fwrite($fn, serialize($cnt));
ftruncate($fn, ftell($fn));
FreeBSD で壊れない方法を確認してその方法を採用すれば良いと思う。
QuickFormController 試してみたんだけど、確認画面出すの大変じゃね?
海外では確認画面って概念がないのか?
どうも確認画面のことを考えられてないぽ。
>>79 返信ありがとうございます。当方FreeBSDでは崩壊を確認することはできませんでした。
しかしそのような事例があるのであれば今後、気をつけていこうかと思います。
対策については前者の方法(clearstatcache)でいこうかと思います。
後者の場合はたまたま(桁数はなかなか変わらないので)ファイルサイズが一定
だったために壊れなかったものだと思いますので。一応以下にabの出力概略を。
/usr/local/apache/bin/ab -n 1000 -c 1000 [URL]
Concurrency Level: 1000
Time taken for tests: 6.702 seconds
Complete requests: 1000
Requests per second: 149.21 [#/sec] (mean)
Time per request: 6.70 [ms]
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 2 94 333.5 47 3099
Processing: 124 799 210.5 809 1355
Waiting: 49 799 210.8 808 1354
Total: 124 893 394.3 846 4018
>>81 さっき、FreeBSD 5.2-RELEASE Apache 1.3.31 + PHP 4.3.6 を起動して試したら
clearstatcache() を入れない場合、カウンタファイルは壊れたけど。
FreeBSD 4.x は手元に環境がないので試せない。
一応、もう少し調べて分かったのは、ab はローカルホストに対して実行すると
カウンタファイルは壊れにくい。外部から ab を実行すると壊れるかもしれない。
あと、-c はあまり大きい値にしてもあまり意味はなかったような気がする。
まあ、本当にカウントファイルが壊れないかどうかは flock() の後に
usleep() や sleep() を入れてから ab を実行すれば良い訳だけど。
ディスククォータで容量を制限したアカウントの
ディレクトリの空き容量を調べたいと思って
diskfreespace($path_name);
を使いましたが、ドライブ全体の容量が表示されてしまいます。
ディスククォータにて容量を制限したディレクトリの空き容量だけを
表示する方法は無いものでしょうか?
宜しくお願いします。
レコード毎に、カウント用のフィールドを作って
?id=nnnって感じでgetでそれぞれのレコードの詳細ページを読むだけで
そのレコードののアクセス数をカウントアップ、更新をする、っていうのを作ってずっと動かしてるんですが、壊れません。
f5とかを数人でかましてみましたが、大丈夫っぽいです。
こういうのは、方法として気違いっぽいですか?
>>84 DBMS使ってそれがよろしくやってくれてるんだろ。
コンテンツ毎のカウンタが重要で、さほどコンテンツも
参照されないサイトかな。現状で不満がないならそれで良い。
参照頻度が増えるとその設計はきついけどな。
データをテキストで保存しようと思うのですが、各フィールドのセパレーターとして
<>がよく使われますがその他使いやすい物はありますでしょうか?
>>86 確かに<>は良く見かけるけど何で流行ってるんだろう
何かメリットあるのかなぁ・・・
ちなみに自分はタブを使ってます
データに<>っていう文字列が入ってたらそのエスケープがめどいので私もタブです。
>>87 超既出。
掲示板などで投稿データを保存する前に<を<、>を>に変換する場合、
データに<>が含まれる事が無から。
>>86 データによる。
<>が含まれる可能性があるなら<>区切りは止めた方が良いし、タブが含まれるなら
タブ区切りは止めた方が良い。
>>88 セパレータ<>ってstrip_tags後のデータをログに保存する前提なんじゃない?
多分だけど。
という俺もタブ区切り派。
でも、昔 explode("\t", $line); で空カラム(\t\t\tとかなってるところ)が
うまく読まれなかった経験あり。
最近気にしたことなかったんで気付かなかったけど、
今はそのバグらしきものは再現しない。
レスポンスありがとうございます。
テキストをコピペしてタブが入る可能性があるので、<>にして
<>が入力された場合は<>で置換しようと思います。
色々と意見が聞けて安心しました。ありがとうございました。
>>89 保存前にサニタイジングするのって、一般的じゃないよね。
改行やタブは一般的にエスケープするのが普通と思ってるのでいつもタブ区切りぽ
>>92 掲示板などのデータをテキストで保存するなら保存前にサニタイジングが
当たり前。
改行を<br>に変えないと、1行に保存出来ないし、<br>を変換する前に、
<と>は<と>に変えた方が楽。
負荷的にも、読む度に変換するより、保存時に変換する方が良い。
タブをエスケープするってpreg_replace("/\t/","",$string);という風に消してしまうの?
それとも\\tという風にしてしまうんだろうか・・教えてエロイ人
>>94 なるほどね。最近DBに保存ってのしかしてないから、そこら辺疎い。
データとビューは分離するものと思ってるし。
# 負荷はなんとでもなると思う。
>94
でも、それだとHTML以外への利用がしにくくなるよね。
メールで送るとか、エクセルで一覧表示とか。
だからログはできるかぎりそのままで保存しておきたいと思ってるんだけど。
俺はタブと改行を別文字に置換してタブ区切りで保存してるよ。
>>98 別に<>区切りが多い理由を書いただけで、Excelで利用しようってなら
それなりの方法にすればいいと思うけど。
>>89 んー、俺はメリットを聞きたかったんだがそれは理由だよね。。
セパレータだけで2byte食うしExcelで簡単に開けないし
デメリットの方が多いように感じる
タブだとエディタで開いた時スペースと区別がつきにくいから。
設定変更すりゃいいけどさ。
私の場合は \0 セパレータ。
NULL文字は危険じゃないか?
DB使い出してからもうテキストベースでの保存には戻れない体になったので関係ない。
確かにDBは楽だよな。
俺も<>でセパレートしてる。
これが流行ってるとは知らなかった。
107 :
102:04/11/25 15:16:31 ID:???
>103
テキスト保存において、なぜ危険なのでしょう?
後学のためにご教示願えますか?
<>のセパレートはKentwebとかやってたっけ?
perlからPHPに入った人も多いと思うが、kentのソース読んで大雑把に勉強しながらperlやって、
その後PHPにやってきた奴とか結構いるのでは?正に俺がそうなのだが。
今こそkentのソースとか笑い飛ばせるが、当時は大変世話になった。
>>107 いや、ただC言語で文字列内のNULL文字の扱いはどうなのか知ってますか?
私はデータのコンバートとかC++のGUIでちょちょっと作ったりしたりするから、そういうデータだとちょっと気持ち悪いかなぁと思って
110 :
102:04/11/25 18:20:09 ID:???
>>109 >ただC言語で文字列内のNULL文字の扱いはどうなのか知ってますか?
知りません。
\0の入ったデータをそのままローカルで開く事もしませんし。
大体、サーバ内のデータをローカルに持ってくるときには、
そのまま持ってくるようなことはしないので、
私の場合は関係なさそうですね。
ご親切に、ありがとうございました。
>>110 そうですね、それなら関係なさそうな気がします。
ちなみにC言語だとNULL文字は文字列の終端記号として使われるので、NULL文字を発見したところで文字列が終了してしまいます。
>>111 言ってる事は分かるが、NULLで区切られていたとしても、
その文字列を全部取り出す方法を知らない時点で、C言語のレベルもたかが知れてると思われるぞ。
>>112 だな。
>>111の理論だとC言語で作られたエディタなんかはNULL文字が入ってる場合は
そこで文字終端だと判断されてそれ以降の文字列が表示されないエディタになるはずだけど、
実際には世の中に出回ってるエディタはNULL文字が入っててもちゃんと表示できるもんな。
自分のプログラミングの実力の無さを棚に上げて語るのは良くないな。
まぁそういわれるとそうなんだけど、ヘタレな俺は簡単に済ませたいのでNULL文字は入れたくないです。
>その文字列を全部取り出す方法を知らない時点で、C言語のレベルもたかが知れてると思われるぞ。
妄想達者、そこまで書いてない(゚∀゚ )
喧嘩イクナイ( ´-ω-)y-┛~~
PHP も NULL バイトを扱えない関数が結構あるので注意した方がいいと思うけど。
例えば、PHP 4.2.x 以前のバージョンでは、file() とか fgets() は NULL バイトを扱えない。
ファイルを読み込んだときに NULL バイトの前で文字列が切れてしまう。
システム的なコードだからやめた方が良いといってるのでしょうが。
nullが入っている時点でそのファイルはテキストファイルじゃない
という判断をしていいとも言われているぐらいなのだから。
nullは生理的に受け付けないから使わないけど。tabで十分だし。
phpでサボりたければserializeもいいぞうわなにをするやめrくぁwせdrftgyふじこlp;
うわ、カンマ区切り誰もいねえや
>>117 誰がそんなことを言ったの?
UTF-16やUCS-2なテキストファイルは普通にnullが入るけど。
関数の引数を参照渡しするときに、NULLを送ろうとしたら
$null = NULL;
foo($null);
function foo(& $var) {
とか、一回変数に入れてやらないと出来ない?
function foo(& $var = NULL) {
とかもできないよね?
>>122 PHP5 では function foo(& $var = NULL) {} という書き方はできるようになったけど、
PHP4 では無理。一回変数に入れるしかない。
124 :
nobodyさん:04/11/25 22:58:57 ID:EP+9LGfY
文字列の頭から、特定の文字の連続(その文字は固定です)を取り出し、その文字を数えるにはどうすれば良いのでしょうか?
$str='aaaあああ';
この、aaaの部分を取り出したいのですが、今はforで回し、頭の'a'を''に置き換え、その回数で数を数え、文字を取り出しています。
私の頭じゃ、これが限界ですた(TT)
>>124 ちょっとした案
$str='aaaあああ';
echo strlen($str) - strlen(ltrim($str, 'a'));
>>124 $str='aaaあああ';
echo strspn($str, 'a');
こんな関数があったよ
まったくWEB言語には奇妙な関数があるもんですなぁ・・。
ここROMってるだけで勉強になりますね。
φ(。。)メモメモ
最低レベルを割り込んだ釣り
>>124 関数があるってことはなにかの用途があるんだろうけど、
さっぱり思いつかない
さしさわりなければどういった処理に使うのか教えてちょうだい
あ!わかった。例えばほれ、掲示板とかで英文字が連続すると改行されずに
はみ出すじゃない。あれを感知できるわ。
感知だけ・・・。
・・・発想が貧困だ・・・。 orz
質問させてください。
mb_って付いた関数が使えないのですが、php.iniの設定が悪いのでしょうか?
どこを修正したらいいのかわかりません。
よろしくお願いします。
phpinfo()実行して、mbstringが表示されてるか確認汁
>>132 環境とPHPのインストール手順くらい示せよ。
それを聞いてどうするつもりですか?
まさかハッカーですか((((;゚Д゚)))ガクガクブルブル
>>132 Win なら php.ini のDynamic extension のところを修正すればいいよ
もう書き込むな、どっか池
ワロタ
139 :
124:04/11/26 13:27:14 ID:???
う〜ん…
141 :
132:04/11/26 14:35:52 ID:???
linuxでyumでインストールしました
php.iniの設定は
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = EUC-JP
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none;
mbstring.func_overload = 0
です。
よろしくおねがいします。
./configureで指定しているかどうかが問題のような気がしるんだが。
144 :
132:04/11/26 15:14:31 ID:???
>>142 >>phpinfo()実行して、mbstringが表示されてるか確認汁
当然表示されていません。
>>143 yumでインストールしてます
やっぱソースからインストールしないとmb関係は使えない?orz
んだね
>>144 yumのせいにすんじゃねえぇぇぇぇぇ
yumは配布のためのツールでphpのことなど知っちゃこっちゃない
fedoraならmbstringが別パッケージになっとる
whiteboxならそのままで有効になっとる
rhelもたぶん有効だろう。つか知らん。
結局yumのせいってことですねorz
yumとかrpmでインスコすると、phpinfoでconfigureオプション見えないの?
>>148 見えるけど、現在のPHPの状態=configureオプションの表示ではないよ。
それ以外のエクステンションの状態/設定のところでみるのが良い。
環境はlinuxってだけで、アドバイスもらえるもんなの?
151 :
nobodyさん:04/11/26 17:44:19 ID:uHcZWg2k
phpは難しい
152 :
nobodyさん:04/11/26 17:45:13 ID:uHcZWg2k
もうだめぽ
153 :
nobodyさん:04/11/26 17:48:26 ID:t8WPLHEG
phpmyadmin の質問もここで良いでしょうか
http://〜/phpmyadmin/ に置いていたファイルを
http://〜/myadmin/ に移動しました。
config.inc.php 内のURLも変更しました。
で、動くことは動くのですが、
phpmyadmin のTOPページの右フレームだけが
http://〜/phpmyadmin/ を見ようとして、エラーになります。
使う分には、支障は無いのですが、原因が分かれば、教えてもらえませんか
154 :
153:04/11/26 17:53:32 ID:???
すいません。
バージョンは、2.5.4 です
grep -r phpmyadmin <target_dir>
156 :
nobodyさん:04/11/26 18:19:22 ID:vF1Wwcf9
PHPって
ファイルの書き込みは、あらかじめ空のファイルを
作成しておかんとできないの?
PHP自体で、空のファイルを作成することって
できないんでしょうか?入門の本みてもそんな関数が
載ってなかったのです。
|
|
│
/V\ J
/◎;;;,;,,,,ヽ
_ ム::::<,,゚ A゚>::| ジーーッ
ヽツ.(ノ:::::::::.:::::::.:..|)
ヾソ:::::::::::::::::.:ノ
` ー U'"U'
158 :
156:04/11/26 18:21:06 ID:vF1Wwcf9
>>156 すいません、もう一回読み直したら
ちゃんとありました。無視してください。
159 :
153:04/11/26 18:36:18 ID:???
Firefoxだと起きませんでした。
単に、キャッシュされていただけのようです。
キャッシュもCookieもクリアしたんですが、IEは消えないんですね
お騒がせしました。
>>156 漏れもつい最近までしらなかった。
ファイルの読み書き削除はあっても作成がない。
普通にopenで出来るとはorz
そんな漏れはPHP/Perl暦20日
九九も知らないやつが電卓使ってるようなもんだな
大抵の言語で無いよ。openで作成する時のオプションで挙動を変えるのがほとんど。
PHPだとtouch関数てのもあるけど使う人がいるかどうか・・・
今、自作のphpスクリプトをwebサーバーに設置してweb経由でスクリプトを
実行したところ、デバッグモードになっているらしく
Notice: Undefined index: data in /home/hoge/public_html/test.php on line 76
こんな感じの警告がいっぱい出てきました。
変数が未定義といいたいみたいなので
$data = ""; をスクリプトの最初に追加したりしてみましたが、それでも出ます。
デバッグモードの状態でもこの警告を出ないようにするにはどうしたらよいのでしょう?
165 :
nobodyさん:04/11/26 19:39:28 ID:l5jOVoxm
連想配列をキーと値の関係を維持しつつ、値でソートさせることは出来ませんか?
167 :
165:04/11/26 19:56:36 ID:???
>>166 要は arsort() の値でソート版をやりたいのですが、具体的に教えてくださいませ。
168 :
165:04/11/26 19:58:30 ID:???
あ、失礼。なんか俺すごい馬鹿なことを書き込んでるな。
忘れてください。
169 :
163:04/11/26 20:06:40 ID:???
>>164 回答ありがとうございます。
スクリプト見る限りでは他には見当もつかないので
教えていただいたerror_reporting()関数で出力させないようにして
対処していくことにします。。
>>163 indexだから配列のkeyだよ
$_POST['data']とかが定義されてないんじゃないの
>>164 touchはもともとシェルコマンドで例えば複数のソースファイルのタイムスタンプを揃えるときとかに使われる。
>>139は一体何をしようとしてんだ?さっぱり理解できんw
>>171 指定したファイルが存在しなければエラーを返すのではなくて、
作成するという挙動がデフォルトという仕様についてのことと思われ。
174 :
163:04/11/26 20:45:15 ID:???
>>170 なるほど!確かに$data = $_REQUEST['data'];をスクリプトの最初の方で定義してます。
$_REQUEST['data']に何も入ってないのが原因ぽいです。
試しに$REQUEST['data']に値を与えてみたらnotice出なくなりました。
ありがとうございました!
176 :
nobodyさん:04/11/26 22:35:10 ID:yqiGlYlh
FC2に、
ソースからApacheとphpをインストールしたのですが、
php.iniがないことに気づきました。
phpinfo()では、
Configuration File (php.ini) Path=/usr/local/lib
と書かれているのですが、
そこにないんです。
ただ動作自体は正常にしているようです。
何故ないのでしょうか?
177 :
176:04/11/26 22:36:23 ID:???
バージョンはPHP5.02です
178 :
176:04/11/26 22:49:15 ID:???
自己解決しました
解凍したソースのphp.ini-distを
己でコピーしないといけなかったんですねorz
179 :
nobodyさん:04/11/27 02:45:35 ID:4pK/jD6O
>>162 自分はtouchはわりと使うよ。
define("DEBUG_LOG", "./debug.log");
function debug_print($str) {
// ファイルが存在しない場合は作成
if(!file_exists(DEBUG_LOG)) {
if(!@touch(DEBUG_LOG)) {
return false;
}
@umask(002);
@chmod(DEBUG_LOG, 0664);
}
// 常に追記
$fp = @fopen(DEBUG_LOG, "a");
if(!$fp) {
return false;
}
$msg = sprintf("[%s] %s\n", date("Y/m/d H:i:s"), $str);
fputs($fp, $msg);
fclose($fp);
return true;
}
ずいぶん念入りだな
ってかやってないのは俺だけ?
ファイル関係はエラー処理が面倒臭いから俺はクラスでエラー処理するようにして楽してるな
>>179 'a'でfopen()するならファイル無ければ作成してくれるのでtouch()は要らんと思うが。
183 :
ののの:04/11/27 11:20:47 ID:kpiqhbYl
windows2000server
Apache
php4.3.8
の環境で、イントラのMSSQLサーバからデータを引っ張ってきたら、
漢字だけ文字化けしてでてきて困ってます
数字は普通
php.iniで内部文字エンコーディング→auto
MSSQLのエンコーディングASCIIなので、autoで対応しているはずなんですが…
何故でしょう?
対応策ありませんか?
>>183 >php.iniで内部文字エンコーディング→auto
>MSSQLのエンコーディングASCIIなので、autoで対応しているはずなんですが…
この2点が別々にそれぞれ理解が間違ってる。
186 :
ののの:04/11/27 14:28:04 ID:kpiqhbYl
>184
>185
できれば教えていただきたい
現在はini設定を、passにして自動変換を止めて
フィールド値それぞれのエンコーディングを調べて
漢字→SJIS
数字→ASCII
カタカナ→EUC-JP
である事が分かりました
それぞれにconvertしてやらにゃいかんのか?とか思っていたところです
とにかく間違っているなら早めに軌道修正したいので、たのんます!
>>186 MySQLの列の形式をバイナリーにしてみ。
188 :
ののの:04/11/27 16:25:52 ID:kpiqhbYl
>187
答えてくれてありがとうございます
でも、ごめんなさい!自己解決しちゃいました
どうやらSJISが曲者だったみたいで、大概をEUC−JPに変更して
SJISの所だけEUC−JPの変換をしてあげたら文字化け無くなりました
>>164 Linuxの本には
ダミーのファイルを作る時によく使われます。
ってかかれてた
既存のファイルにtouchしたら最終更新日が更新される
191 :
102:04/11/27 17:55:09 ID:???
flockって必要ですか?
質問の仕方を勉強するのが先です。
ionCube PHP Accelerator ってどうよ?
HDDのアクセスが減って早くなりそうなんだが。
使っている人は居ますか?
194 :
父さん:04/11/27 19:44:14 ID:???
mkdirでディレクトリ作っておいて
そのディレクトリの中に
ファイルを保存するときってどうすれば
いいですか?fwriteだと、ファイル名しか指定できなさそう。
>>189 なるほど
0バイトのファイルを作る為ならそのほうが簡単かも
でも逆にそうなると、なんでtouchにその機能を割り当てる?
って気がする・・・
197 :
nobodyさん:04/11/27 21:09:38 ID:iBzhZPzn
ほとんどPHP弄った事ないんですが、
ある7個くらいのPHPで定期的に手動で更新したいところがあるんです
でも7個を一個一個更新してくのめんどいんでtxtにでもして1つに纏めたいんですが・・
そのとき、どうやってそのtxtを読ませればいいのでしょうか
その部分は、こんなかんじなんですが
↓
$example = '定期的に手動で更新したい文字(設定)';
txtの名前をexampleとして
$example = 'example.txt';
こんなんじゃダメですよね・・・?
ちょっとは自分で学習する努力しよーぜ…
199 :
193:04/11/27 21:15:02 ID:???
>>196 どうもサンクス。すいません、根本的に間違ってました。
fwriteじゃなくて、fopenで指定できそう。実験してみます。
200 :
197:04/11/27 21:15:42 ID:iBzhZPzn
>>198 解説サイトなどを見てもどこから見ていいのかわからなくて・・
>>200 解説サイトに やりたいことがそのまま全部 載ってるとは限らないわけで、
徐々にPHPの使い方を学んで行くことが大切かと。
いや できさえすればいい どうせもう触ること無いから、という事であれば
丸投げ依頼スレもありますよ。
202 :
197:04/11/27 21:39:20 ID:iBzhZPzn
>>201 そんな私向けのスレがあるんですか(;´Д`)
貴方のレスを誘導 という形で捉えてもいいでしょうか?
マルチになってはいけませんので・・
>197
include を調べてみれ
204 :
197:04/11/27 22:10:32 ID:iBzhZPzn
>>203 今テストしてみたんですが
なるほど これは凄い・・
いろいろ聞きたい所なんですが、もうあちらに書き込んでしまったのでこちらでのやりとりは無理っぽいです( ´・ω・)
申し訳ありません
入力文字を漢字かどうか判断したいのですが、その方法が思いつきません。
MLでも同じ様な質問がありましたが解決に到っていませんでした。
>>206 ごちゃまぜ(漢字 ひらがな カタカナ アルファベット等)の中から、
漢字だけ判断したいのです。
208 :
197:04/11/27 23:10:20 ID:iBzhZPzn
「ここは質問スレではない」と弾かれてしまいましたヽ(`Д´)ノ
その間に色々試行錯誤してみてたんですが、
txtでなくてもいいか、ということでこんな感じの作ってみたんですが合ってますか・・・?
1.phpの中身
<?php
$bun = 'hello';
?>
更新するphpの中身
<?php
include = '1.php'
$example = '&bun';
?>
ちょっとちがう
211 :
197:04/11/27 23:16:54 ID:iBzhZPzn
>>209 そんな( ´・ω・)
どのへんでしょうか・・・
うごかないでしょ?
213 :
197:04/11/27 23:21:06 ID:iBzhZPzn
>>212 今は訳あって動作チェックできないのです・・
残念、切腹し
>>205 文字列をunpackして文字の範囲を見れば良い。
当然文字コードに依存するからね。
>>205 文字コード表から16進数表記での漢字の範囲しらべてpreg_replace使え
217 :
216:04/11/27 23:34:12 ID:???
かぶったぜチクショー
>>205 真面目にやるのなら、文字コード判別・漢字部分の検出を自前で作成するのがいいだろうね。
文字コードの説明をしているページを参考にしながらでいいので
文字列をbyte単位で評価するロジックを書くことになる。
手抜きというか見た目は簡単だが無駄が多い方法としては、
漢字以外の文字を全て '' に置き換えて行き、最後に残っているもので
判断するなんてのもありだろうね
220 :
197:04/11/28 00:19:00 ID:12Bg8vz0
>>218 1.phpの中身
<?php
$bun = 'hello';
?>
更新するphpの中身
<?php
include '1.php';
$example = '&bun';
?>
こうですか?
>>205 漢字があるかではなくてASCII文字だけかならpreg_match('/$\w*^/', $str);あたりで。
漢字であるかを判別するよりはらくだと思う。
222 :
nobodyさん:04/11/28 04:00:53 ID:TQmE2lKP
-------------------------------------------------------------
ob_start();
phpinfo();
$strHTMLPhpinfo = ob_get_contents();
ob_end_clean();
//print $strHTMLPhpinfo; //←ここコメントはずすとちゃんと表示される
//PREG_PATTERN_ORDERはオプションのデフォルト(なくても同じ)
preg_match_all("|<body>([^<]*)</body>|i",$strHTMLPhpinfo,$aMatch, PREG_PATTERN_ORDER);
print "<pre>";
print_r($aMatch);
print "</pre>";
$strHTMLInsideBody = $aMatch[1][0];
//print $strHTMLInsideBody; //←コメントはずしてphpinfoの出力のうちbodyタグよりも内側」をprintしたい
-------------------------------------------------------------
の結果が、
Array
(
[0] => Array
(
)
[1] => Array
(
)
)
となってしまいます。正規表現が間違っているのでしょうか???
どなたかご指摘願えれば幸いです。
その正規表現の動作を日本語で説明してみろ。
224 :
222:04/11/28 06:14:08 ID:???
>>223 さん
えと、自分の意図としては、
通常phpinfo関数で出力される文字列(<html〜</html>)を、
$strHTMLPhpinfoという変数に格納し(これは格納されてることを確認済み)
$strHTMLPhpinfo は「文字数行<body>文字何十行</body>文字数行」という形式に
なっていることがわかっているので、
(あるいは、いいかえれば、そういう形式であることを前提として)
上に書いた「文字何十行」の部分を、$strHTMLInsideBody という変数に格納したい・・・のです。
で、$strHTMLInsideBody が空文字列なので、あれ?と思い、
preg_match_allを通ったあとに、その結果が入るはずの複合配列
(変数名は$aMatchとしました)
を、print_rで除いたところ、中身が空なので、???な状態です。
ちなみに、「preg_match_all」関数について:
http://jp2.php.net/manual/ja/function.preg-match-all.php よろしくお願いします。
>>222 動作としては合ってるな。ただその正規表現だと
<body><tag></body>
には当然マッチしないことになる。
結論:正規表現は奥が深い
しまった・・・
結論:リロードしる
227 :
222:04/11/28 07:17:34 ID:???
>>225 あう、そうか・・・どもです。
ちょっと頭冷やして考え直してみます。。。
228 :
197:04/11/28 07:19:53 ID:12Bg8vz0
229 :
222:04/11/28 07:35:08 ID:???
うーん、なんかギミックな方法で実装してしまったです。まぁいいか・・・
-------------------------------------------------------------
ob_start();
phpinfo();
$strHTMLPhpinfo = ob_get_contents();
ob_end_clean();
//array(【<body>より前の文字列】,【<body>より後の文字列】)を取得
$TMPaPhpinfo = preg_split ("|<body>|i", $strHTMLPhpinfo);
//【<body>より後の文字列】を取得
$strHTMLPhpinfo = $TMPaPhpinfo[1];
//array(【その文字列中</body>より前の文字列】,【その文字列中</body>より後の文字列】)を取得
$TMPaPhpinfo = preg_split ("|</body>|i", $strHTMLPhpinfo);
//【その文字列中</body>より前の文字列】を取得
$strHTMLPhpinfo = $TMPaPhpinfo[0];
print $strHTMLPhpinfo; //←phpinfoの出力のうちbodyタグよりも内側全てをprint
>>205 俺がやってるのは
mb_ereg('[亜-腕]');
こんなんだけど、これじゃだめかな?
すげー
>>222 preg_match() に s オプションが足りないだけでは?
preg_match('|<body>(.*?)</body>|is', $s, $m);
print_r($m);
-------------------------------------------------------------
あるHTMLページをfile_get_contents関数で変数$hogeに格納したとします。
で、$hogeの中で、<a>タグ内に記述されたリンク先のページの拡張子がhtmlだったら、
その拡張子を全てphpに変換する。
ただし、「http」から始まるリンクは、たとえ拡張子が「html」であっても、変換しない。
-------------------------------------------------------------
ということをやりたいのですが、
どうやって実現できるでしょうか?
正規表現駆使しないとだめでしょうか?
教えていただければ幸いです。
>>233 その文章どおりにロジックを組めばよいのですが・・・。
丸投げなり宿題回答依頼ならスレ違いです。
質問するときは最低限、・・・とやったのですがうまくいかないとか、このようなスクリプト組んだけど遅いとか
そういうのにしろよ。
〜をやりたいので教えて、はやめろ
>>233 俺は正規表現が苦手なので、適当でいいスクリプトの場合は
頭で考えた処理のまんまでスクリプト組む。
良く判らないものを無理して使わなくてもいいでしょ。
勉強のつもりで無理するのも勿論大事だが。
for(;;){
}if(ereg("<a.*html>",$hoge[$i])){
if(!ereg("http",$hoge[$i])){
ereg_replace("","",$hoge[$i]);
}} //と書いてみた。
mb_send_mail って便利ですよね・・・
先ほどから取得したメルアドにメールを送るphpプログラムを書いて試しに動かしていました。
でも、パスワードも何も無しで動作するんですが平気なんでしょうか?
何か気をつけた方が良いようなことは無いでしょうか?
よろしくです m(__;)m
pop before smtp
smtp
241 :
223:04/11/28 19:31:59 ID:???
>>224 なぜ正規表現の意味を説明せず、無関係なことばかり書いたんだ。
>>241 オメーは回りくどいこといってじゃねーよヴォケ。
すっこんでろ。
>>240 ありがとう。でも、面倒みたいですね。
送信するだけなので、何か良い方法は無いでしょうか?
>>239 だからスパムの踏み台にされやすいわけだ。
でそれを回避するためにPOP before SMTP等がある。
他にもSMTP AuthenticationとかSMTP over SSLとかがあるっぽ。
>>239 そんなもん。古き良き時代の名残りと言ってもいい。
webプログラマができる事と言ったら、
送信者・受信者の制限する事くらい。
248 :
nobodyさん:04/11/28 23:32:50 ID:NCxghLlN
すみません、ちょっと用があってphpのlibeay32.dllをwindowsのsystem32にコピーしたのですが
必要なくなってしまいました。削除しても大丈夫でしょうか。
元々system32にあったファイルだったのか調べないでコピーしてしまって。
削除していいのかわからなくなってしまいました。
乞食野郎ご本人だろ
>>239 認証なんかは単純な送受信とは別の仕様定義になってるよ
imap付きでコンパイルするともうすこし細かいことがでける
>>248 php5なら不要。どのアプリからリンクされてるか分からないならほっとけ。
>>250 php-4.3.9-Win32をからlibeay32.dllをコピーしちゃったんですが・・・
ためしにごみ箱に放り込んでみろよ
PHPには不要でも他のアプリが使う可能性はあるがな
つーか厨房は明日学校だろ
池沼は年中春休みですがナニ(を揉みます)か?
もちろんデフォで揉んでますよ。
$linesのうちフォームより送られてきた$s_r3かつ$s_r4かつ$s_r5の値にマッチするものを$resultの配列に入れたいのですが
$s_r3、$s_r4、$s_r5の値がそれぞれallのときはどんな$r3,$r4,$r5の値でもマッチするようにしたいのです。下のようにすると
、(すべてallで実行)$resultには最初の$lines[0]しか出力されずうまくいきません。どこがいけないのでしょうか?
伝わりにくいかもしれませんがご指摘お願いします。
$s_r3 = $_POST['r3'];
$s_r4 = $_POST['r4'];
$s_r5 = $_POST['r5'];
$lines = file($log);
for($i=0; $i<count($lines); $i++) {
list($r1, $r2, $r3, $r4, $r5, $r6, $r7, $r8, $r9, $r10, $r11, $r12,) = explode("<>", $lines[$i]);
if($s_r3 == "all") {
$s_r3 = $r3;
}
if($s_r4 == "all") {
$s_r4 = $r4;
}
if($s_r5 == "all") {
$s_r5 = $r5;
}
if($s_ad == $ad && $s_sex == $sex && $s_age == $age) {
$result[] = $lines[$i];
}
}
print_r($result);
>>252 ごめんなさいやってみます
どうもありがとうございました
>>255 > $s_r3 = $r3;
> $s_r4 = $r4;
> $s_r5 = $r5;
これだとループ2週目以降、$s_*がallからfemaleとか16とかに書き換わるが。
QuickFormを使用しています。
会員登録フォームを作っています。
フォーム入力されたメールアドレスが、
既にDBに登録されているかチェックしたいです。
QuickFormで可能でしょうか?
当然
すいません、どうやってやるんでしょうか。
丸投げに回答する馬鹿があらわれるのを待つか自分で調べて書くか好きなほうを選べ。
264 :
nobodyさん:04/11/29 00:35:10 ID:1OYaqh05
フォームからphpファイルにデータを投げると
phpファイルのダウンロードが始まってしまいます。
調べてみると、サーバーにPHPが入っていなかったりすると
そうなるらしいのですが、私の場合はphpファイルによっては
ダウンロードが始まらなかったりする上、データ自体は
ちゃんとポストされているようです。
これはいったい何が原因なのでしょうか?
265 :
197:04/11/29 00:48:45 ID:X2d0N7Bc
266 :
nobodyさん:04/11/29 01:15:17 ID:MJGTBbUE
多分わかりました。form->addRule
つかいます。
QuickFormのprocess()使用すると
Freezeが効かないです。Freezeは意味があるのでしょうか?
>>264 いじってたら解決しました…
ヘッダの送り方のところをタイプミスしていました。
>>264 私もコンビニにたむろしてる中学生(?)は怖いと思う。
スカートで行くと足とかじろじろ見られるしね
ワラタw
272 :
102:04/11/29 11:48:17 ID:???
>>269 if( $tyubo->Look($you) )
{
$you->Trans(AOKI_SAYAKA);
$you->Say("どこ見てんのよ!!");
}
275 :
nobodyさん:04/11/29 13:04:21 ID:J66upLzi
278 :
275:04/11/29 13:39:38 ID:???
>>276 アドバイスありがとうございました!下の様にして出来ました。
$script_url=$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'];
echo dirname($script_url);
279 :
nobodyさん:04/11/29 14:09:08 ID:N/Ie3LI2
index.php?mode=a
index.php?mode=b
index.php?mode=c
とかやって、表示させる中身を変えるのってどうやるのですか?
if ($_GET['mode']=='a') echo 'a';
if ($_GET['mode']=='b') echo 'b';
if ($_GET['mode']=='c') echo 'c';
>>280 人に教えるなら、まともなもの教えてやれよ…
>281
お前が教えろ
ヽ(冫、)ノズコーッ
286 :
255:04/11/29 16:45:17 ID:???
>>258 遅くなりましたがありがとうございました。
解決しました。
なんか…すごいなこのスレ…
>>287 だろ?
質問者と回答者のレベルの差が、目と鼻の先だもの。
PHPの質問というか、Webプログラムの質問というか
 ̄ ̄ ̄ ̄ ̄ ̄○ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
O 。
, ─ヽ
________ /,/\ヾ\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|__|__|__|_ __((´∀`\ )< というお話だったのサ
|_|__|__|__ /ノへゝ/''' )ヽ \_________
||__| | | \´-`) / 丿/
|_|_| 从.从从 | \__ ̄ ̄⊂|丿/
|__|| 从人人从. | /\__/::::::|||
|_|_|///ヽヾ\ / ::::::::::::ゝ/||
────────(~〜ヽ::::::::::::|/ = 完 =
終わっちゃったよ!
292 :
nobodyさん:04/11/29 18:19:43 ID:lDLqv+x1
あるPHPのページ(METAタグにてEUC設定)に検索処理を記述した別PHPのページ(エンコード指定無し)を読み込んで
検索したいのですが
読み込んだ時には検索処理を書いてある中の日本語エンコードがShift_JISになってしまいます。
ファイル自体はEUCのコードで書いているのですが
明示的に指定しないといけないものなんでしょうか・・?
293 :
nobodyさん:04/11/29 18:32:19 ID:g5RPzkPv
処理に少し時間がかかるスクリプトを実行した際に、
「少々お待ちください…」というメッセージを表示して
終了したら、完了画面に飛ばすというのをやりたいのですが
どのようにすれば良いのでしょうか?
>293
JavaScript
直リンしちゃったorz
>>293 LINK→少々おまちください画面(終了FLAG待ち)→Javascriptで飛ばす
素人なりに考えてみた
他にいい方法あるかも
どのみちJS必要。
スクリプト実行中にメッセージ表示→終了後Location(でいいのか知らんが)で飛ばす
って感じかな
HTTP/1.1 標準ではないが Refresh ヘッダを吐いてやるというのもある
アフォばっかだな
>>301 天才の301氏が降臨してくれたおかげで、このスレはどんぱっぱ!!!
俺はjs使わずにRefreshだけでプログレスバーも付けたよ。
(´-`).。oO(アニメーションGIF・・・)
306 :
nobodyさん:04/11/29 20:04:24 ID:BMdM2SVi
PHPスクリプトをパスの一部として使いたいのですが、なんだか動いたり動かなかったりで挙動が不安定です。
サーバ上に xxx/test.php というスクリプトを置いて、
http://xxxxx/xxx/test.php/test1/test2/abc.csv みたいにアクセスしています。
test.php中で $HTTP_SERVER_VARS['PATH_INFO'] を参照すると、'test1/test2/abc.csv' が取得できます。
この値を元に CSV を生成してダウンロードさせることが目的なのです。
CSVを出力するために、
Header("Content-Type: text/x-comma-separated-values");
Header("Content-Disposition: attachment; filename=$file");
のようなヘッダを出力し、その後で CSV 本体を出力しています。
期待する動作は、ブラウザで普通にCSVを開いたときと同様の動作です。IE だと勝手にExcelが開くアレです。
ところがやってみると、同じスクリプトが場合によって次のようないろんな挙動を示します。
・内容がテキストでブラウザ上に表示される
・「ファイルに保存」「開く」のダイアログが出てくる
・Internet Explorer は xxx をダウンロードできません と言われる
コード自体はシンプルなので、思いつくことはあれこれやってはみたのですが、状況は変わりません。
ここでお聞きしたいところは、
・上記内容をするために確認すべき設定など
・通常のCSVを開いたときと同じような動作にするための Header の与え方
・挙動が不安定なことについて、考えられること
あとついでに、
・パスに .php を含めない方法(
http://xxxxx/xxx/test.php/test1/test2/abc.csv を
http://xxxxx/xxx/test/test1/test2/abc.csv のようにアクセスさせる方法)
です。
お心当たりのある方がいらっしゃいましたら、アドバイスいただけると幸いです。
まずココから解決しないといけないね
>思いつくことはあれこれやってはみたのですが
まずみんなで一つずつあれこれの内容を想像してみよう。
Header("Content-Type: application/octet-stream");
Header("Content-Disposition: attachment; filename=$file");
311 :
306:04/11/29 21:31:03 ID:???
>>307 ありがとうございます。
mod_rewrite について検索してお勉強を始めました。
取り急ぎご報告までに。
ちなみに、実はこの設定が既にされているのか、現在でもパスから .php を外してもスクリプトは起動しています。
ただ、.php を付けた場合と外した場合とでも挙動が違うので、きちんと設定を見直したかったのです。
>>308 これがまた、よくわからないのです。
リンクをクリックしてたどった場合と URL を直打ちした場合で違うことがありますし、
単にリロードしただけで挙動が変わることもあります。
上記に書いたとおり、パスに .php を入れたり入れなかったりでも異なったりします。
>>309 Content-type の指定を text/x-comma-separated-values やその他に変えてみたり、Content-Disposition を
外してみたり attachment にしたりinline にしたりを組み合わせたり、デバッグ情報出力して調査したり、などです。
結局これだという原因を見つけられずにいます。
>>310 octet-stream は、CSVをブラウザ上で展開するのではなく、ダウンロードさせるテクニックじゃないですか?
今回やりたいのは、普通のCSVと同じ挙動をさせることです。
ただし、「いろいろ」の一環で octet-stream も試してみましたが、結局うまくいきません。
今試したら、ブラウザ上にテキストとして表示される状況です。
でもこういうよくわからない時って、すごく単純なポカミスをしてるものなんですよね…
そう思って何べんもソースを見直してはいるものの、元々シンプルでストレートなコードなので、
あやしいニオイを発見できずにいます…
リソースの獲得・初期化・解放に関しても注意して見てはいるのですが…
とにかく、もうちょっと実験してみます。
ありがとうございます。
>>306>>311 >この値を元に CSV を生成してダウンロードさせることが目的なのです。
>期待する動作は、ブラウザで普通にCSVを開いたときと同様の動作です。IE だと勝手にExcelが開くアレです。
ダウンロードさせると言ったり普通に・・・と言ったり。
表示させたいのか?ダウンロードで保存させたいのか?
表示させるとしてもCSVでどうなるかなんてWinなら関連付けで変わるし。
そもそもすべての閲覧者のPCにExcelが入っているのか?
313 :
306:04/11/29 22:11:03 ID:???
>>312 すみません、言葉のアヤで紛らわしい言い方になっていますが、CSVのリンクをクリックしたときと
変わらない動作にしたいです。
必ずしもExcel で開いてほしいわけでもなくて、「CSVを開いてブラウザ中にExcelが開く環境であれば」
それと同じにようにExcelがブラウザ中に展開されて、それで開かれて欲しいのです。
ようするに、普通に置いてあるCSVとPHPにより生成したCSVとを区別できなくしたいのです。
315 :
nobodyさん:04/11/29 23:59:55 ID:lPZXO5Fa
質問
http://www.yamaq.org/php/visiana/forvisiana_sample.php ↑のアクセス解析のPHPで、
1.visiana.phpとvisiview.phpを置く。(visiana.phpはサイトルートに置く)
2.visiana.phpを編集しwwwrootを設定する。
3.アイコン画像が収められたディレクトリ(visiimg)をサイトルートに置く。
4.ディレクトリ(visilog)を作成し、サイトルートに置く。
5.visiip.txtを作成しvisilog内に置く。パーミッションを606または666に変更する。
6.解析対象のページに <?include ("../visiana.php");?> 等と記述してvisiana.phpを呼び出す。
とあるのですが、2つ質問です。
●「wwwrootを設定する」を設定するとは具体的に、どうする事でしょうか?
●サイトルートとはどういう意味の言葉でしょうか?
当方、CGIは多少設置したことがあるくらいのレベルです。
どうか御指導くださいませ。
>>315 ftp鯖とアカウント情報晒したら、その糞質問にも答えてやろうもん。
>>316 httpのurlでも分かるだろ
贅沢言うのはいかん
>>315 配布元に聞け
あとそれ聞くレベルはCGIを設置してないレベルとあまり変わんねーよ
|-`).。oO(「板違い」で済ませればいいのに・・・)
はじめまして。
Linux + PHPからWin + SQLServerに
Unified odbc関数を使って接続を試みています。
odbc_exec()を使用して返ってきたリソースが複数行ある場合のアクセス方法がわからず苦しんでおります。
結果取得にはodbc_result()を使用しますが、次のレコードの取得方法がわかりません。
是非教えていただきたいです。
よろしくお願いします。
>>321 odbc_fetch_rowを利用してクルクルループさせろ
それぐらい検索するか本屋で立ち読みしろ
fopen("filename", "r+")でファイル開いたあと、中身を空にして書き込むにはどうしたらいいですか?
fopen("filename", "w")で開きなおさないと無理?
>>323 //先頭に戻す
fseek($fp, 0, SEEK_SET);
//書き込む
fwrite($fp, $data);
//書き込んだ長さに丸める
ftruncate(ftell($fp));
ftruncate($fp, ftell($fp));
>>326 (゚Д゚)ハァ?
どうせ書き込むんだろ
一緒じゃねーか
ほれ
fseek($fp,0,SEEK_SET);
ftruncate($fp,0);
328 :
323:04/11/30 15:00:09 ID:???
>>324,325,327
ありがと〜。そんな関数あるって知らなかった。助かりました。
329 :
nobodyさん:04/11/30 15:08:50 ID:xhidOTVN
exec 使ってプログラムをフォークするとき、プロセスIDって
どうやったら手に入りますか?
>>314 ありがとう。ようするにIEじゃダメってことか…
リンク先に書いてあった方法をいろいろ組み合わせてみたりもしたけど、結局うまくいかなかったよ。
おとなしく application/octet-stream にしてダウンロードするようにしました。
挙動も安定して確実です。
332 :
331:04/11/30 22:01:43 ID:???
特定のファイルに現在どれだけアクセスされてるか計測する方法はないでしょうか?
100Mくらいのファイルなんですが、DLしてる人の数を取得したいんです。
よろしくお願い致します。
>>333 1.Webサーバのログを解析する。
2.PHPを噛ませてDLさせる。
このスレ的には2だけど、2を採用するに当たってなにがわからないの?
>>334 既にPHPをかませてDLするスクリプトで運営してるんだけど、
どういうコードを組んでいいのかさっぱり思いつかないです。
もしよろしければ簡単な処理内容を教えて頂けないでしょうか?
>>335 100MBぐらいのファイルはreadfileするのじゃなくて
headerでLocationを使って飛ばすのがいいかな。
その過程でカウントすれば出るかと。
詳細は自分で調べてみるべし。
わからなければ再度質問。
337 :
335:04/11/30 23:30:23 ID:???
>>336 今はreadfile使ってます。
Locationにした場合DL開始後すぐに切断されたりしたらおかしくなるような・・・
だいたい構想ができました
readfileの場合は全てDLしてから次の処理が行われるので
クリック後カウントプラス→DL→終了後カウントマイナスって感じでいいですかね?
なんか穴があれば指摘お願い致します。
でもlocationヘッダだとurlもろバレなので直DLされる可能性もある
かといって100MBをreadfileはね・・・
容量で臨機応変に使ってくれたまえ
339 :
nobodyさん:04/11/30 23:39:32 ID:2woxUsco
mysqlのデータをphpで管理する場合なんですが・・・
フォームで、文字を打ったり、チェックボックスやプルダウンを使って
データを入力するじゃないですか。
あるデータを呼び出して修正する場合フォーム上にすでに登録されてる内容を
反映したいです。
input type textやtextareaなら単にフィールドの値をvalueとして読み込めば
いいのですが、チェックボックスやプルダウンは、登録内容に応じて選択肢の
数だけ、フィールドの値と比較して適合するものにcheckedやselectedを付けなければ
なりません。この部分を楽に処理する方法ってないのでしょうか?
$omaeはデータベースから読み出した値
if($omae == "ばか"){$omae_b = "checked";}else{$omae_b = "";}
if($omae == "あほ"){$omae_a = "checked";}else{$omae_a = "";}
if($omae == "まぬけ"){$omae_m = "checked";}else{$omae_m = "";}
<input type="radio" name="omae" value="ばか" $omae_b>ばか
<input type="radio" name="omae" value="あほ" $omae_a>あほ
<input type="radio" name="omae" value="まぬけ" $omae_m>まぬけ
条件分岐を作るのも、変数を埋め込むのもマンドクセ
みんなこんなやり方をしてるんでしょうか?
>>337 Apache管理権限持ってるならIOモジュールを入れればいいと。
readfileでやるとApacheがずっと走ってる状態になって
サーバーにはあまりうれしくないような。
特にgzipモジュールとかlayoutモジュールとかキャッシュ系
があるとかなり遅いから入っているならやめたほうがいいかも。
普通のDLでApacheがずっと走ってるのとはまた違うからねぇ。
結局のところApacheの管理権限があるならログ使うのがベスト。
>>339 配列変数に入れてforかforeachで対応すべし。
それと関係ないけど答える人の気が薄れるので例ぐらいは
もっとベタな物を使ったほうがいいですよ。
>>339 $bakacheck[$omae] = ' checked';
<input type="radio" name="omae" value="ばか"${bakacheck['ばか']}>ばか
<input type="radio" name="omae" value="あほ"${bakacheck['あほ']}>あほ
<input type="radio" name="omae" value="まぬけ"${bakacheck['まぬけ']}>まぬけ
343 :
339:04/12/01 02:36:13 ID:FRvj6jY+
>>341 そうですね、失礼しますた。
なるほど、初心者なもんで、どうも配列がを今ひとつ理解してません。
そこらへんのノウハウというのはどんなサイトで勉強したら
よいのでしょうか?
$sql = "select * from hogeDB where huga='hoo'";
$result = mysql_query($sql);
$row_num = mysql_num_rows($result);
while ($row = mysql_fetch_array($result)) {
mysql_fetch_arrayで取得した$row["omae"]をいったい
どうしたらいいのかわかりません
>>343 すぐ他人のノウハウに頼ろうとせず、マニュアルを見るべし。
使用例も載ってるし、日本語訳もされているんだから。
ネット上の情報は玉石混淆だから半端な知識で鵜呑みにしないこと。
>343
何をどう答えたらいいのかわかりません
>>102 喋喋遅レスだが、\0セパレータ良いと思うよ。
perlの場合だが、cgi-libで\0をセパレータに使ってるし。
348 :
nobodyさん:04/12/01 11:48:17 ID:H7gZ8fBe
2004-12-01という形で入っている
日付データの計算を行いたいのですが
どうするのが一番スマートなのでしょうか?
とりあえず今は上のデータをsplitとかで分けて
date関数にてデータを入れ日付に+1とかしているのですが・・。
cgi-libの%inの話。
フォームからの入力パラメータが複数の値を持つ場合、\0でセパレートされた値でくる。
妥当性チェックをしなくていいならsscanfもいいね。
基本的な質問で申し訳ないのですが・・・5桁ないし6桁の数字がありまして、これを
左から4桁と、残り1桁もしくは2桁に分けたいのですが、どのようにすればよろしいでしょうか?
すいません、書き忘れました。
例えば
$x=12345
$a = substr($x, 0, 4);
$b = substr($x, 4, 2);
というのは考えたのですが、効率悪いような気がしまして・・。
>>352 $x=12345;
preg_match( "/([0-9]{4})([0-9]+)/",$x,$reg);
$a = $reg[1];
$b = $reg[2];
は?
何がどう効率悪いのか書け
sscanfに負けた。・゚・(ノ∀`)・゚・。
>>355 すいません・・・。例えば
list($a,$b)=ほにゃらら
みたいなことできないものだろうかと。
>>359 行数を気にしてんのか?
なら351でいいだろ。下らないが。
質問の前に答えが出てるなんて、ここは便利なインターメッツでつね
351=356=どんな質問も答えはsscanf
馬鹿だなこいつ
$x=12345;
list($a,$b)=sscanf($x,"%4d %d");
こ、これでいいっすか?
ワロタ
エ ロ ス を感じた
>364
$x=12345;
sscanf($x, "%04d%d", $a, $b);
皆様ありがとうございます。
>>367さんの通りでできました。
が…sscanfって何か問題があるのでしょうか…?
私もソースからエロスを感じることができるよう精進致します。
結論からいいますと、見やすい方、使いやすい方使った方がいいよ。
371 :
nobodyさん:04/12/01 21:25:59 ID:J12/qEzf
PHP5を実稼働のサイトで使ってる人いますか?
372 :
371:04/12/01 21:48:24 ID:???
PHP5.0.2で組んでたんですが
何回もリロードしていると時々変なエラーが出る現象が発生しました
こりゃまだ早かったか…アイタタ
PHP4に書き直しか…orz
373 :
nobodyさん:04/12/01 21:49:44 ID:dOCgymci
>>371 使っています。
でも、コンテンツ無いです。
だから、使っているうちに入らないかも。
>>372 鯖を再起動してみ。
俺はそれで直った。
以下のイメージPHP+MySQLのプログラムを考えています
データベースの内容
number int(20)
kokyakumei varchar(15)
juusho varchar(40)
・リストボックスにデータベースからの情報を表示(表示はkokyakumeiの内容)
・検索ボタンを押すと番号で検索する
↑のは書いている途中に誤爆してしまいました。
以下のイメージPHP+MySQLのプログラムを考えています
データベースの内容
number int(20)
kokyakumei varchar(15)
juusho varchar(40)
・リストボックスにデータベースからの情報を表示(表示はkokyakumeiの内容)
・名前を選択する。
・検索ボタンを押すと番号で検索する
・そして番号(number)、名前(kokyakumei)、住所(juusho)をテーブルで表示する。
どなたか検索を行うところのスクリプトのヒントをお願いします。
1345 → 1000
531 → 500
2365 → 2000
41 → 50
上のように数字をきりのいい数字に変えるいい方法おしえてください
>>379 切り上げか切り下げか四捨五入すればいい。
>378
number これ間違ってないか?
suuji または bangou じゃないのか。
>>379 負数を扱わない切捨てでいいなら、
function myCeil($n){
assert($n >= 0);
$m = pow(10, intVal(log10($n)));
return intVal($n / $m) * $m;
}
383 :
K:04/12/02 06:52:41 ID:dgs1a3N+
PHPのechoを使ってテーブルを動的に作成し、その中にデータベースから
読み込んだデータを表示しようとしているのですが、各セルに表示される
データ(文字列)の長さによって列幅が都度変わってしまいます。
なんとか列幅を固定したいのですが、HTMLの<td>タグで幅の属性を
設定したりしても全然反映されません。
何か方法はないでしょうか?
>>383 <TABLE>や<TR>の幅も固定しろ・・・ってスレ違いなんだが。
385 :
nobody:04/12/02 08:05:22 ID:WN1AladV
<tr>にwidth属性ってあったっけ?
386 :
378:04/12/02 08:23:23 ID:???
>>381 たしかに間違えました。
bangouにします
配布しているPHPスクリプトに、たまに拡張子がincのものが含まれているときがあります。
中は普通のPHPスクリプトと変わりが無いように思えるのですが、違いはあるのでしょうか?
>>387 includeファイルであることの目印。
そのincファイルをダイレクトに叩かれた時に、phpとして処理しないためのマジナイ。
(txtとはサーバの行う処理を変えておくと良い。)
きちんと誘導すりゃ、普通の質問者と回答者が戻ってくるかもよ。
そりゃ無理だ
396 :
378:04/12/02 11:29:47 ID:h9KxfVfF
>>396 練習台にはもってこいの課題じゃないの?
どこが分からないか、何が分からないのかも書いてないし答えようがないと思われるよ。
>>396 リストボックスを作るとき、optionタグを
<option value=番号>顧客名
みたいにしておけば、submit されたときに選択された顧客の番号が渡されるから、
それをDBから select すればいいんじゃないかな?
それとももっとややこしいことをしようとしてる?
400 :
378:04/12/02 12:58:55 ID:???
検索ボタンを押して検索するところがわからない。
何をどう検索して、結果をどうして欲しいのか
具体的に書かなきゃ答えられない罠
>>400 判るところ、これまでで出来ているところ。
ソース全部出せや。
話はそれからだ。
ちょっとスレ違いなんですけど、PHPを使っているのでここで質問します。
本来書き込むべきスレもしくは板があればご指示ください。
認証に関してなんですけど、ID(とパスワード)を与えた人以外に使えないように
したいのですが、何かいい方法は無いでしょうか?
不正利用の防止、一つのIDを使い回されないようにしたい。
X.509クライアント認証も考えたのですが、クライアント証明書そのものを他へ
流されたら意味がなさそう。この手の証明書は利用者が複製されたら困ると
いうリスクが無いと意味を成さない気がします。
ICカード型のクライアント証明書のみってやり方もありそうな気がしますが、
よくわからない。
接続IPを監視する方法もありますが、クライアントのIPが再接続などで変わる
可能性もありますし、違ったIPから接続されたという状況証拠を持ち出して
クライアント側に注意をするのも気がひける。
専用のクライアントソフトを作れば、何とかなるような気もしますけど、
どなたかIDの不正利用(コピー)を防いだ認証方法を行った方居ますでしょうか?
それって結構大規模なサイトの場合?
405 :
403:04/12/02 14:03:35 ID:???
>>404 私に対しての問いと受け取っていいのかな?
小規模です。小さな情報販売屋がとある業界向けに紙媒体(製本して)で
売っていたのを、速報性を生かす為に一部をWebサイトで配信したい。
クライアントの数は1000も満たないです。
サーバは社内サーバで思案中ですが、有料のレンタルサーバも考えてます。
CAもプライベートで可能ならそれで、ダメなら大手CAの利用でもいい。
406 :
nobodyさん:04/12/02 14:45:55 ID:wVII0lB6
バナーの管理をやってみようと思うのですが、
header("Location:
http://exsample.jp");
ではリファラが送られないみたいのですが、
リファラを送る方法はないでしょうか?
あと、valuecommerceを使っているのですが
そもそもリファラっていらないのでしょうか?
よろしくお願いいたします
>>405 小規模ならば、金はそんなにかけられない、
という短絡的想定の元に話します。
(金かけられるんだったら、こんなところで訊いてないで、それなりの業者に委託汁)
私だったら、クライアントごとにIDを発行して、
IDと接続元IPを紐付け、申請IP範囲外からの接続は拒否。
申請IP内においても、頻繁に接続元が変更されるようなものを、
定期的に抽出し、クライアントに対して確認、および対処(アク禁)
ぐらいで、お茶を濁しますがね。
運用は管理面倒になりますが。
あとはクライアントの閲覧端末を限定し、
初回のログイン時のみ決められた端末数までCookie発行。
以後は、Cookie認証とその他の認証を併用。
(Cookie消しちゃったら、再申請)
ってな感じかな。
ここまでだと・・・・・スレ違いだな
PHPでの実現方法になったら、またおいで。
>>403 ダウンロード(許可)キーの複製を妨げる程度?
それともダウンロードした媒体の複製も制限したい?
(複製は出来るけど見るのにキーがいる)
あとはハードプリントも妨げるとか
どちらも売り物のソリューションは存在するけど
409 :
nobodyさん:04/12/02 15:57:27 ID:twyhgEEZ
すみませんがフォームから飛んできた内容の一覧を取得する方法って
あるのでしょうか?
410 :
nobodyさん:04/12/02 15:57:50 ID:rLnQPdoN
php の読み方ってペーハーペーでいいんでしょうか?
>>410 ドイツの人ならそれでよろしいです
ドイツの人じゃなくてもドイツ語で読みたければそれでよろしいです。
プープと読んでた
Exeをエグゼじゃなく、エキシーと呼んでた奴を思い出したよ。
414 :
nobodyさん:04/12/02 17:22:00 ID:hlTnreSw
PHP4の場合は、
メソッドの中から自分自身の名前(メソッド名)を知る方法はないのでしょうか?
>>414 __FUNCTION__ 定数で代替できるかも
416 :
403:04/12/02 18:19:13 ID:???
>>407 どうもです。
IPの範囲を狭めるのは考えたんだけど、
ISPによっては218.x.x.xで接続したと思えば61.x.x.xになったりするんで、いまいち不安。
んでも、Cookieの件はなるほどと思いました。コピーされたら同じですけど
PKCS12証明書を発行してDL&インストさせるよりも、素人にはわかり難いかもしれない。
閲覧毎にCookieの内容を変更して過去のものを無効化すれば、一時的にコピー
されても大丈夫か。(目から鱗...)
>>408 今のところはWebでの閲覧のみです。
スレ違いネタにお付き合いいただきましてありがとうございました。
417 :
nobodyさん:04/12/02 20:16:08 ID:L8w8at2o
画像を表示して下にその説明文を載せるというページを大量に作ろうと
思っています。従来のHTMLベースで作っても良いのですがその場合
1000枚の写真を掲示するのに1000個のHTMLファイルをつくる必要があります。
それは大変だということでPHPを使うともっとシンプルにできると教わりました。
なんでも
hoge.php/?file=1
みたいな感じで元となる画像とその説明文の対を記述したPHPファイルを
1つ作れば上記のようにリンクを張ることでそのうち一対を選ぶことが
可能だと聞きます。
具体的にどういうURLで呼び出すべきか、PHPファイルにはどう記述したらいいか
調べてみたのですがPHPに関するwebサイトではそれらに触れられているものは
あまりありませんでした。どこか良いサイトをご存じではないでしょうか?
※サイトで調べるまでもありませんか?
418 :
nobodyさん:04/12/02 20:28:36 ID:WSwo1HWe
違う型の変数を比較する場合の内部でのキャストについてなんですが
以下のコードを実行すると
$a = 1;
$b = "A";
if($a > $b){ print "true<br>\n";}
else{ print "false<br>\n"; }
$a = "1";
$b = "A";
if($a > $b){ print "true<br>\n";}
else{ print "false<br>\n"; }
-------------
[実行結果]
true
false
となるという事は、どちらかが数値の場合は、双方を数値として比較、
両方が文字列の場合のみ、文字列として比較していると考えてよいのでしょうか?
>>417 PHPの知識がまったくないんだろ?
本でも買ってきて一から勉強しろ
>>419 本"でも"じゃなくて、寧ろ積極的に本を買ってきて勉強すべきだな。
Web"なんか"で探してると逆に効率が悪い。
421 :
418:04/12/02 20:38:41 ID:???
すみません、言い忘れてた事が。
例外的に、双方が文字列であった場合でも
数値に変換できる場合は、数値として比較するという認識で宜しいのでしょうか?
$a = "19";
$b = "20";
if($a > $b){ print "true<br>\n";}
else{ print "false<br>\n"; }
-------------
[実行結果]
false
Webのマニュアルで充分。本なんかイラネ。
PerlやC言語経験者はWebマニュアルで十分だろ。
そういう奴は最初の言語は本で勉強しなかったか?
>>422 そんなやつはこんなところで質問なんかしない
>>421 '19'と'20'だと文字列比較でもfalseになるから、その例文からは判断できんけど、
'199'と'20'を比較するとtrueになるから、数値に変換してるね。
数値に変換されるようなものを文字列で比較したいならstrcmpとか使うとヨロシ。
426 :
418:04/12/02 21:21:17 ID:???
>>425 わざわざ訂正して頂きありがとうございます。
"199"を誤って"19"と書いてしまってました…
という事は、PHPの変数比較の際の内部の変換は
>>418と
>>421の認識でよいという事ですね?
>418
その辺はマニュアルに書いてあったはずだが?
読んでないの?
428 :
418:04/12/02 21:44:42 ID:???
>>427 そうでしたか。
申し訳ない、その項はまだ目を通してなかったです。
今からじっくり読みたいと思います。
どうもありがとうございました。
429 :
nobodyさん:04/12/02 22:29:35 ID:hlTnreSw
includeしたファイルの中からincludeした時の、
ディレクトリ階層の基点は、
最初にincludeしたファイルがある位置になるようですが、
includeされたファイルの階層を基点にして
子ファイルを読むにはどうすればいいのでしょうか?
430 :
nobodyさん:04/12/03 00:18:54 ID:uALINIm+
すみません。feof関数について教えてください。
ファイルの最後まで読み込む関数だとの事ですが、
test.txtといったふぁいるがあった場合
test.txt
おはよう
こんにちは
こんばんは
上記の場合、ファイルの全て(おはようこんにちはこんばんは)まで
読み込むと言う解釈で良いのでしょうか。
読んでる本には、feofで1行だけ読んでるような処理があるのですが、
1行のみ(上記の場合、おはよう)読み込むと言ったことも出来るのでしょうか?
おはようちんこはこんばんは
432 :
379:04/12/03 01:21:46 ID:???
>>382 遅くなったけどありがとう。そのファンクション使わせてもらいます。
433 :
417:04/12/03 01:22:26 ID:???
本を買ってくるしかないですか(;´Д`)・・・
>>433 //hoge.php/?file=1とかhoge.php/?file=2で呼び出す
if (1 == $_GET['file']) { 表示の処理 } elseif (2 == $_GET['file']) { 表示の処理 } ・・・
って書いてけば?
436 :
417:04/12/03 02:15:52 ID:???
>>435 どうでも良い事で申し訳ないが、比較の時、不確定な要素を左にしないと気持ち悪くね?
もしかしてそれって俺だけ?
>>438 俺も変数とかを左辺に持ってくるね。
たまに逆のソースを見ると、一瞬「んー?」ってなる。
>417
Webサイト制作初心者用スレで質問してたやつか。
PHPでやればって言ったの俺だけど。
435のような感じでおっけーかと。
これでもマンドクセってんなら、どっかスクリプト探せ。あると思う。
>438-438
俺漏れも
441 :
nobodyさん:04/12/03 03:09:52 ID:Qe3qUgOE
Movable Typeの3.11-jaから3.121にベージョナップしたんですけど
<$MTVersion$>が3.11-jaと表示されたままなんです。
やったことは
1) 3.121をダウンロードして解凍
2) mtのフォルダに全てとmt-upgrade31.cgiをアップロード。
3) mt-upgrade31.cgiを実行。
4) Done upgrading your schema! All went well. というメッセージがでる
5) mt-upgrade31.cgiを削除。
6) ブログの全てを再構築。
何か間違ってますか?よろしくお願いします。
ベージョナップage
で、
if (x = 1) { /* x が 1 ならば実行 */}
ではまると。
>>443 構文チェッカかければwarning出るだろ
>>438 コーディングミス(==比較を=代入)を、
早く発見できるという利点がある。
でも自分は気持ち悪さ優先でやってないけど。
質問です。
自宅サーバーでphp使ってますがファイル生成ができません。
touch関数も使えません。
ディレクトリのパーミッションは755です。
php.iniの設定のどこか間違ってるのでしょうか?
449 :
447:04/12/03 08:35:54 ID:???
いろいろ調べてますが、safe_modeもOffです
>449
環境書け、環境
Winでアクセス権とか言うなよ
451 :
447:04/12/03 09:45:39 ID:???
OS linux
Apache2
php4.3.9です。
よろしくおねがします
>>435 は
>>417 へのレスみたいだけど、
ファイルの数だけ分岐を書くつもりなのか。
ifの条件式よりむしろそっちに違和感が...
453 :
447:04/12/03 10:34:40 ID:???
ディレクトリとファイルのアクセス権をapacheに変更したら一応できました。
これってphpもapacheのsuexecを使わなきゃいけないってこと?
ApacheモジュールなPHPはsuexecなんて使えません。
>>455 ふつうは
echo "<img src='{$_GET['file']}.jpg'>";
みたいにするよね
>>456 おまいはよく読め。
「説明文」も変更したいそうだ。
例として出してるなら、おまいの言うとおり。
説明文もああいう条件文にはせんけどな
459 :
nobodyさん:04/12/03 11:20:57 ID:ty66hqky
mysql_pconnectとmysql_connectについて教えてください
connectは一回ずつ終了しては接続して、
pconnectは既にセッションがあるならそれを使用するということなんですが
データベースへの負荷というのはどっちでも同じなのでしょうか?
>> 417
./img に画像ファイル, ./txt に説明文を書いたテキストを置く。
hoge.phpには普通のHTMLを記述する。画像と説明文の2箇所だけPHPのコードを下記の通りに挿入。
<html>
... 省略 ...
<img src="<?= "./img/$_GET[file].jpg" ?>" /> <-- 画像 -->
<? include "./txt/$_GET[file].txt" ?> /> <!-- 説明文 -->
... 省略 ...
</html>
URLの呼出は hoge.php?file=1 で、$_GET[file] に 1 が設定される。
実際に運用するには値のチェックとかもしないといけないけど、
手短に説明するとこんな感じ。
>>460 画像1枚につきファイル1つ用意するんですか?
ご苦労様でつ
>>461 ぶっちゃけ、この時点で答え出てたんだね…
レスもしてないし、やっぱ本買え。>417
>>463 画像が1000枚あったら別に1000ファイル用意するのかって事だろ
俺だとマンドクセだ
>>459 MySQLはコネクションネゴシエーションによる負荷は
非常に低いので、他のDBMSほど気にすることはないが
mysql_pconnectとmysql_connectを比べた場合、
前者の方が負荷が低い場合がある。断定でないのは
使いまわしされなければ同等だから。
468 :
459:04/12/03 13:01:12 ID:ty66hqky
>>467 わかりやすい説明ありがとうございました。
>465
ファイルかどうかは別にしても、
1000枚の画像それぞれに解説があるんだから、
1000件のデータは作らなきゃならんだろ。
ま、いずれにしてもDB使えって事だな。
mysql_pconnectってマルチスレッドは大丈夫なのかな?
LAST_INSERT_ID()とか問題になったりしないのかな??
また独り言か
>>470 PHP自体はマルチスレッドを言語的にサポートしてないから問題ない(関係ない)。
同じDBユーザでpconnectされた場合、先の接続が終了していなければ
使いまわしではなく全く別の新規の接続として扱われるので
LAST_INSERT_IDには影響しない。影響するとすればpconnectによる
接続同一性を前提として、クエリを発行せずにLAST_INSERT_IDを取得した場合。
しかしこれは、pconnectではそもそも同一性は保証されないのだから、プログラムの作りがマズイ。
473 :
470:04/12/03 14:47:29 ID:???
>>472 おおお。ありがとうございます。
よく理解できました。
# Sybaseでpconnectに問題があってから、
# なんとなくpconnect敬遠してたけど、MySQLなら大丈夫かなぁ。
gzopen()でつくったファイルポインタってflockつかえないけど、おまいら排他制御はどうしてますか?
475 :
nobodyさん:04/12/03 16:51:24 ID:ods0UPS5
引数を可変数にしなければいけない時など、
呼び出し側指定のリファレンス渡しをしなければいけないケースは
出てくると思うのですが
みなさんallow_call_time_pass_referenceをOnにしていますか?
最近XOOPSとか、部品(モジュールを)を後から追加するような
ソリューションが多くなってきましたけど、
あれってどういう設計なんでしょうか?
インターフェース設計とか・・・
参考になる本やWebページなんかあれば教えてください。
ってかソース読むのが手っ取り早いのかなぁ?
>>429 include(dirname(__FILE__)."hogehoge.php");
これで間違いないと思われ
>>477 こうじゃない?
include(dirname(__FILE__)."/hogehoge.php");
>>476 最初にメインの共通クラスライブラリを読んで、
インストールモジュールのリストや設定ファイル
(実際にはリストや設定はDBに入ってる事が多い)
を読んで、それらの処理に従ってコンテンツを生成する。
481 :
nobodyさん:04/12/04 01:20:34 ID:p/Q3rspF
ちょっと調べてもよくわからないことがあるので、質問させてください。
関数の処理を行った後の位置を、指定することはできますか?
具代的にはこんなスクリプトで、foo関数を実行した後、「echo "b";」に行かないで、
処理の続きをしたいのですが、どうすればいいのでしょうか?
foo();
echo "b";
function foo(){
echo "a";
}
(処理の続き...)
よろしくお願いします。
echo "b"を書かなければいいだけでは。。。
foo();
//echo "b";
function foo(){
echo "a";
}
foo();
echo "b";
function foo(){
echo "a";
(処理の続き...)
}
こうすれば?
>>481 正直言って何がやりたいのか、何に困ってるのかが分からん
あぁ、echo "b";の処理もやりたいのか。。。
486 :
481:04/12/04 02:08:08 ID:???
すみません、例がわかりにくかったです。
フォームから受け取ったデータを保存するつもりなのですが、
<?php
if(!$_POST['text']){error();}
(データの整理、書き込み処理)
success();
function success(){
$output= "Success";
}
function error(){
$output= "Error";
} ?>
(HTML部分)
<p><? $output; ?></p>
(HTML部分)
大体こんな感じで作っています。
これだと、error関数を実行した後、$outputにSuccessが代入されてしまうし、
exit;を入れるとHTML部分が表示されません。
何か解決策あったら教えてください。
よろしくお願いします。
if(!$_POST['text']){
error();
}
else{
(データの整理、書き込み処理)
success();
}
以下省略
とでもしておけば?
あ、ごめん。。。それじゃあ
<p><? $output; ?></p>
がからっぽだ。。。
訂正しま
<?php
if(!$_POST['text']){
$output = error();
}
else{
(データの整理、書き込み処理)
$output=success();
}
function success(){
return "Success";
}
function error(){
return "Error";
} ?>
(HTML部分)
<p><? $output; ?></p>
(HTML部分)
490 :
487:04/12/04 02:31:22 ID:???
あぁ、しかもまだ間違ってる。。。
×<p><? $output; ?></p>
○<p><? echo $output; ?></p>
しかし、そんなコードなら
$optoutに直接入れれば済む話なので
本来の要件とは全然違う気がしてきたorz
>>486 例外処理なら、古い手だけど do { ... } while (0); とか。(エラーの時にbreakでループを抜ける)
処理全体を関数内に書いてエラーの時はreturnで後ろの処理をcut。
PHP5なら素直に try/catch 構文を使う。
処理全体を選択構造で括ろうとするから気味の悪い発想ばかりになる。
関数に分割して処理を呼ぶのを前提に缶がえ他方がいいよ。
494 :
とらたぬじゃー:04/12/04 09:46:35 ID:5HVD0ZHR
phpでボーダフォンのページを作っていますが、ボーダフォンの絵文字
を表示するにはどうすれば良いのでしょう??
さらに続くアホたち
↓
497 :
nobodyさん:04/12/04 10:23:53 ID:KceHPVj2
きぼーーんぬ
499 :
nobodyさん:04/12/04 10:33:23 ID:IQsH1Sj9
ifで複数条件設定したいんですが、
if($a==1||$b==1){
hogehoge;
}
上みたいに || 使えばいいんでしょうか?
志村さんうしろー
502 :
499:04/12/04 10:37:02 ID:???
説明不足すまそ。
aが1、またはbが1のときにhogehogeを実行したいといった内容です。
くだらねぇ質問と、ここに書いて良い質問の境界線はどこですか?
>481
これでいいんじゃないの
<?php
function xxx(){
if(!$_POST['text']) return "Error";
(データの整理、書き込み処理)
return "Success";
}
?>
(HTML部分)
<p><?php echo xxx(); ?></p>
(HTML部分)
507 :
499:04/12/04 11:22:05 ID:???
こんな質問ごとき他スレに誘導させなきゃ答えられないのかよ、
世も末だな
くだらない以前に、何一つ読解力がない
こんなのでよく日常暮らしていけるもんだ
誰か以下のスレをたててくれ。
【ちらしの】日記はココに書け【裏】
こんなのが釣りならこのスレ丸ごと釣りだよアッハッハ
512 :
nobodyさん:04/12/04 14:27:06 ID:mdd+eXUz
phpとmysqlでファームから情報の入力、修正、検索、削除、一通りの
ことが出来るシステムを作っています。
今のとこ一つのスクリプトファイルを$modeという変数でcaseで切り替えそれぞれの機能を
切り替えています。(hoge.php?mode=searchみたいな感じで)
これまで値をhiddenで渡したりしてたのですが、面倒くさくなってきたので
セッションを使おうと思っています。
主に情報の入力などはpost検索結果の条件保持と、modeの切り替えにはgetを使っています。
ひとまず、$HTTP_GET_VARSと$HTTP_POST_VARSをまとめて
$HTTP_SESSION_VARSに入れて値を引き継げるようにしたいのですが
このように複数の連想配列を一気に$HTTP_SESSION_VARSに入れてしまう方法が
わかりません。
このあたりについて参考になるサイト、又はアドバイスをいただけたらありがたいです。
>>512 配列を連結する関数があるのでそれを使えば
希望する動作をさせることはできますが、
セッションの仕組みを誤解してませんか?
セッションを使った場合、セッション変数の他に
通常のGET・POST変数を渡すこともできます。
セッション使ってもファームからはねぇ
農場から情報送ってどうすんだろう
牛乳でたーとかかなw
12:23分 1.5L
チーズの作り方を知りたいのですが、ファームから送信していただけないでしょうか。
鬼の首でも取りましたか?
520 :
512:04/12/04 16:16:54 ID:mdd+eXUz
>>513 セッションは初めてでいまいち理解し切れていません。
やりたいことはとにかく、フォームの入力をページ
(実際は同じphpファイルですが)移動後も表示させたいのです。
http://cgi.aaacafe.ne.jp/ こんな感じのってどういう仕組みなのでしょうか?
単純にソースファイルアップロードして、パーミッション変更して、
って感じですかね?
友人に似たようなの作ってくれと頼まれてるんですが、
上記くらいの方法しか思いつかないんです。
結構だるいですよね、該当CGIがバージョンアップしたら
修正する手間も出てきますし。
友人に設置できるぐらいのスキルをつけさせた方がいいんでない?
>>521 tar.gz とかで圧縮されてるものをうぷしたら
派ミッションとか変更しなくていいんでなかった?
524 :
512:04/12/04 17:08:01 ID:mdd+eXUz
postされた値をまとめてセッションに入れちゃう事って出来ないかさっきから考えてる
function insert_session($post_ary){//postされた値をセッション変数に入れる
global $_SESSION['$key'],$_POST['$key'];//←当たり前だけどダメだ
reset($ary);
while(list($key,$val) = each($ary)){
if(isset($POST['$key'])){
$_SESSION['$key'] = $_POST['$key'];
//↑whileで回しながら入れるけど、これはグローバルにならないっぽい
}
}
}
$post_ary = $HTTP_POST_VARS;
insert_session($post_ary);
だめだ、わからんです。
func inss($post_arr) {
$_SESSION['foo'] = serialize($post_arr);
}
$_SESSIONはオートグローバル。
マニュアル読めば分かるネタはくだスレでやってくれ。
'のけたら普通にできるだろ
あとグローバル宣言はいらん
つうか何がしたいンだ、引数の役目は何だ
いいネタスレになってきたな。
↓親方、旬なネタ一つ
530 :
481:04/12/04 19:05:01 ID:???
>>530 ネタレス参考にして馬鹿でかいブロックを作ったりしないように。
>>531 初心者にはmain()エントリ作る必要があるほうが分かりやすいのかもな
最近はJavaやRubyなんかの影響でmainにswitch文書くの嫌いな人もいるらしいけど、
PHPはどっちかっつーと構造化大好きPerl寄りのスクリプトが多いと思フ
$lines = $a<>$b<>$c
で記録してある配列$lines[]の中から、$bが重複した場合その配列を削除したい
(例)
$lines[0] = $a<>$b<>$c
$lines[1] = $a1<>$b3<>$c5
$lines[2] = $a<>$b<>$c5
$lines[3] = $a1<>$b6<>$c
これを$lines[0]と$lines[2]の$bの値が重複するため、後の$lines[2]を削除し
$lines[0] = $a<>$b<>$c
$lines[1] = $a1<>$b3<>$c5
$lines[3] = $a1<>$b6<>$c
としたいのですがどうすればいいでしょうか?
関数array_uniqueなどを使えばいいんでしょうか?
そういうのを考えるのが楽しいんだと思うんだが
usortにてbをソートの後、ループなりmapなりで連続して同じデータをもってたら削除。
ロジックを考えるのに夢中になって数時間つぶすのがプログラムの醍醐味だろ
ちったぁ考えろ
一晩考えて無理なら来い
537 :
533:04/12/04 20:16:29 ID:???
すみませんでした。自分でいろいろと考えて無理なようでしたらまたヒントでも下さい。
>>535 ありがとうございました。参考にさせていただきます。
$fixed_lines = array();
$test = explode("<>", $line[0]);
$b = $test[1];
foreach($lines as $value){
$fixed_value = explode("<>", $value);
if($fixed_value[1] == $b){
}else{
}
}
$lines = $fixed_lines;
あー釣りでしたか、すまそ。
空行は考えてねw
全然だめじゃん、それ
掲示板作ってますが、PHPで簡単に串制限する方法ってありますか?
function is_blacklisted($addr) {
$chklist = array(
'niku.2ch.net',
'list.dsbl.org'
);
$ip = explode(".", $addr);
if ($ip) {
$rev = "{$ip[3]}.{$ip[2]}.{$ip[1]}.{$ip[0]}";
foreach ($chklist as $host) if (checkdnsrr("$rev.$host", 'A')) return TRUE;
return FALSE;
}
}
>>531 言いたい事は分かるが、話の流れにあってないよ。
元の質問は success(), error() 関数を呼ぶのが前提で、
処理全体の制御構造をどうすればいいか、と言うのだったんだから。
関数に分割云々は、また別の話。
>>544 分岐までネタが出た後なんだからそりゃ別の話をしてるんだろ。
>>544-545 関数に分割されていたって処理全体を制御することに変わりはないべ
デカイブロックだろうと関数コールの束だろうと、同じように全体を制御できるのです
余計なこと教えるなってことにも読めるけど、そうなら、むしろ知らず知らず分岐の
局所化ができてしまう構造化コーディングがお勧めでつ
いやいやこれからはポリ・モーフィアスの時代だね。
スキンヘッドが最先端。支配したがりの分岐中枢なんか解体してオブジェクトに隠蔽。
要素が自律的に処理を呼ぶことが出来るようになるんだ!
深夜にナニやってんだよ・・・
ワロス
550 :
nobodyさん:04/12/05 08:52:36 ID:pfTQRacm
ユーザー認証についての質問なのですが
ユーザーが入力したパスワードにハッシュ関数をかけたデータを
サーバーに送信する方法はありますか?
サーバー側にはハッシュ値のみを送りたいんです
>>550 md5()なり好きな関数でハッシュ化すりゃ良いんじゃないの?
>>551 なんでJavascriptなんよ。
511じゃないが、ブラウザからサーバへ送る時点でハッシュ化しているのなら
JavaScriptだろう。PHPLIBの認証はそのような機能もあるよ。
>>552 >サーバー側にはハッシュ値のみを送りたいんです
クラアントサイドのPHPスクリプトとサーバ間の通信の話だとは
>>550からは読めんがな。
555 :
552:04/12/05 11:14:45 ID:???
すみません。ご存知でしたら教えてください。
php で web 上で圧縮・解凍するツールを作ろうとしています。
gzcompress() gzuncompress() という関数が使えることは分かったのですが、
tar() のようなものはあるのでしょうか?探しても見つからなかったので・・・
tarは圧縮じゃなくて書庫化
558 :
556:04/12/05 13:34:22 ID:???
>>557 すみません。用語の使い方があいまいでした。
「書庫」とかのキーワードで探してみても見つからないというか、
普通に php-xxx.xxx.tar.gz みたいなのしか出てこなくて・・・
ん・・・・
複数のファイルをうpしたあとtarしてgzしたいんだろうかとESP
蓮鯖でしようとしてたり…
いや、まさかね。
鯖管もそこまで痛い香具師は居ないか。
562 :
nobodyさん:04/12/05 14:31:16 ID:xr7p6hLu
PHP6で、ついに 宣言なしの変数使用禁止 が実装されるそうです
systemでtarを呼びなよ。
>>563 それは考えたのですが gzcompress や bz2compress 他には圧縮じゃないけど
base64_encode とかのツールは関数化されてるので、たとえば
$compresseddata = gzcompress($inputdata);
だけで済んでしまいます。
tar も関数バージョンがあれば便利そうなので使おうと思って質問しました。
systemでtarを呼びなよ。
探してる間に自分で system で tar 呼ぶ関数書けば
567 :
556:04/12/05 14:47:15 ID:???
>>563 >>565-566 回答ありがとうございます。そうすることにします。
関数が有るか無いかを聞いていたので、
無いのなら無いと言って頂けるだけでよかったのですが・・・
話すたびに一言多いお前みたいな人知ってる。
早く縁をきりたいんだけどしつこいんだよなぁ・・
>>568 縁を切りたいなら、話しかけられたときに「ウザい氏ねバーカ」と言う。
年末だからみんなピリピリしてんのかねぇ。
イライラするんなら、スルーしとけばいいじゃん。
>>570 わざわざピリピリさせるようなことしてるやつが言える台詞じゃないが。
関数の有無なんか聞かれてるのかw
池沼の相手ご苦労様wwwそしてご愁傷様www
wwwだいすきwww
www可愛いよwww
>>571 おまい韓国中国ネタ大好きだろ
。・゚・(ノ∀`)・゚・。アイター
くだ質が適度に流れたところで次の質問どうぞ
575 名前: 軟式PHP [sage] 投稿日:04/12/05 15:49:36 ID:???
。・゚・(ノ∀`)・゚・。アイター
システム関数を使うメリットは一般的なアーカイブをまとめて扱えること。
tarを展開するだけならphpでちょちょいと書けば終了。
関数があるかどうか知りたいときはマニュアル読めバーカ。
579 :
550:04/12/05 17:52:28 ID:???
>>551-555 回答ありがとうございます。日本語が分かりにくくて申し訳ありません。
PHPじゃできないみたいなんで、javascriptとSSLを調べてみます
俺ネカマなのにオフ会逝くことになっちまった
しかも来るのは女だけなんだと
誰か代わりに逝ってくれよ('A`)
581 :
nobodyさん:04/12/05 18:00:06 ID:yPTxmbcn
>580
女装で出かけ、MtoF を最後まで貫き通せ
2chみたいに
>>数字
で、書き込みを表示するのはどうやってできますか?
>>289 私もコンビニにたむろしてる中学生(?)は怖いと思う。
スカートで行くと足とかじろじろ見られるしね
そうだね
585 :
582:04/12/05 20:24:27 ID:???
preg_matchを使ってできるようだけど、よくわかりません。
ご教授よろしくおねがいします。
>585
× ご教授
○ ご教示
日本語覚えてから出直しといで
きょうじゅ けう― 【教授】
(名)スル
(1)0 1 (ア)児童・生徒に知識・技能を与え、そこからさらに知識への興味を呼び起こすこと。
(イ)専門的な学問・技芸を教えること。
「国文学を―する」「書道―」
(2)0 大学などの高等教育機関において、専門の学問・技能を教え、また自らは研究に従事する人の職名。助教授・講師の上位。
>>582 んー、preg_matchとかpreg_replaceで出来ると思う。
まずは正規表現を調べてみると良いよ。
ガンバレ
>>582 $res = preg_replace('/>>([1-9]+[0-9]*)/','<a href="#\1">>>\1</a>',$res);
寒
今日の気温かい?
PHP+MySQLで初心者にもわかりやすい解説乗ってるところ無いでしょうか?
webサイトを取得してhtmlを解析してある部分だけ取り出したいのですが、どういうコードを書けばいいでしょうか?
コードというか処理の手順みたいなのを教えて頂けないでしょうか?
よろしくお願い致します。
クラスを勉強中なのですが、何故かWorld!World!と表示されてしまいます。。
何処がおかしいのでしょうか。。
class test{
var $a;
var $b;
/*コンストラクタ*/
function test(){
$this->$a = "Hello";
$this->$b = "World!";
}
function hello(){
$c = $this->$a.$this->$b;
echo $c;
}
}
$myclass = new test;
$myclass->hello();
>>596 fopen()とかfile()でHTMLとってきて正規表現なり、行番号で判断するなりしたらどうですか。
皆さん、はじめまして
ちょっと分からないところがあるので教えてください。
結構昔にPHPいじっててチャットくらいは作れてたのですが、
最近またやり始めたら結構ド忘れしていることに気づきました。
で、質問なのですが
ifとかwhileの中にヒアドキュメントって書けませんでしたっけ?
初歩的な質問かもしれませんがちょっと悩んでるので
分かる方居ましたらお願いします。
>>600 ヒアドキュメントの最後の文字列はインデントしちゃダメだよ。
if (なんたら) {
print <<<END
なんとかかんとか
END; //インデントせずに行頭から書く。
}
603 :
nobodyさん:04/12/07 12:33:50 ID:Wu91oU+e
PHPでFORMのACTION時に、自作デーモンを再起動するスクリプトを exec している
のですが、それをやると次に session_start() が呼ばれたときにブラウザが固まって
しまいます。(サーバーからのレスポンスが来ない)。
--a.php
session_start();
<FORM ACTION="b.php">..
--b.php
session_start();
exec("daemonrestart.sh");
header("location: a.php");
--daemonrestart.sh
pkill daemon
daemon &
-----------
こんな感じです。#細かい指摘は無用!
daemon の再起動自体は成功していて、exec() は抜けているようなんですが、
a.php に戻ろうとして固まってしまいます。
・a.php のsession_start() を抜くと、ページが開ける。→セッションがロックしている?
・再起動した daemon を殺すと、a.php の読み込みが復帰する。
ので、どうも exec() したプロセスの子プロセス(=daemon)が終了するのを
待っているような気がしています。
どなたか、これを回避する方法を教えてください。よろしくおねがいします。
ttp://jp2.php.net/function.exec > この関数を使用してプログラム実行を開始し、
>バックグラウンドで実行 したままにしたい場合には、
>プログラムの出力をファイルまたは
>他の出 力ストリームにリダイレクトする必要があることにも注意して下さい。
>さもないと、PHPはそのプログラムの実行が終了するまでハングします。
だそうだ
>604
exec("daemonrestart.sh >/dev/null 2>&1");
にしたけどあかん、でした。
ほかに情報ないですか??
exec("daemonrestart.sh >/dev/null 2>&1 &");
これだとどう?
>606
> exec("daemonrestart.sh >/dev/null 2>&1 &");
> これだとどう?
おなじです。。ほかに、.sh の中で setsid で実行してみたりとかしたんですが、
結果は同じでした。。
>608
nohup もNGでした。。
php のBUGか?だんだん腹が立ってきた。。
610 :
nobodyさん:04/12/07 16:36:08 ID:Wu91oU+e
>603
自己解決(?)
セッションがロックしているという前提で、
> --b.php
> session_start();
> exec("daemonrestart.sh");
このあとに
$ss = session_encode();
session_unset();
session_destroy();
session_start();
session_decode($ss);
してから
> header("location: a.php");
とやってみたら、一応望みの動作にはなりました。。
session_unset, session_destroy でセッションが開放されるので子プロセスの
監視も止まったんじゃないかと。。
でもなんだかなぁ。。。
そのネタはマニュアルに投稿あるね
厨房はリアルに書き込まないでほしい
なんか知ったふりして分析してるのとか目障り。
しかも全部憶測の域出てないし、なんか検討はずれくさくてサムイ
音の話もロクにできない低脳ばかり。
とてもPHPらしいw
>611
> そのネタはマニュアルに投稿あるね
すみません。どこだか教えてもらえますか?
ざっと探してみたんだけど見つけられなかったので。。
_______γ
/ \
/ \
/ | │
〃 / ( │
〃 丿 ( ヾ
(ノノノ ノ
>>612 \(人人))))ゞ
( (ノ /⌒\ /⌒\ ヾ(( 丿
(│━( / )━( \ )━ /ノ
6│ \_/ \_/ /9
│ / │ /
│ (○ ○) /
│ /
│ \__ ノ
│ ヽ___/ ノ
│ /
\_____/
>>597のってC++で言うところの共用体になってるってこと?
よく解んねーけど。
function __construct() {
$this->foo = 'world';
}
function hello() {
$hoge = 'foo';
echo $this->$hoge;
}
$$a = 'world!';
echo ${''};
こういうことね。
変数名は空文字でもエラーにならないんだなあ。
質問です。
0〜9の範囲の値を表示する乱数表を作ったんですが、
その乱数表のマス目をクリックすると、マス目に書かれている数字を
パスワードフィールドに入力できるようにするにはどうすればいいでしょうか?
>>620 一マス入力するごとにサーバとやり取りしていいのならPHPも関係してくるだろうけど、
君がやりたいのはJavaScript等のクライアント側の話じゃないかな?
file_get_contents()で読み込んだファイルの中にある変数($var)を、文字列を二重引用符で囲んだ時と
同じようにして展開させたいのですが、{ }で変数をくくっても、上手く展開されません。
どうすれば上手くいくのでしょうか?
>>622 適当なパーサ組んで変数名取り出して名前→変数変換してぶち込む
>>622 そのままはダメだろうけど、
ちょいと変換してeval。
625 :
nobodyさん:04/12/08 17:10:41 ID:+JrrExiN
>>621 クライアント側での話だとPHPじゃ無理なんですか。
おとなしくjavascriptを調べてみます
デバッグで変数の中身を表示させたくて
function debug($var){
print "<pre>" . print_r($str) . "</pre>";
}
としているのですが、どの変数の値を表示しているかわかるように
したいのですが、できますでしょうか?
つまり、
debug($sirabetai_var);
とした時に
<pre>$sirabetai_var ($sirabetai_varの中身の表示) </pre>
と表示させたいということです。
よろしくお願いします。
むり
質問です。
odbc関数を使っているのですが、odbc_fetch_rowで最後までレコードを読んだあと、
VBとかでいうところの、MoveFirstみたいな動作をしたいですが。
それじゃなかったら、odbc_fetch_rowで最後までレコードを読んだあとにでも
また先頭から参照できるような関数があるといいのですが。
よろしくお願いします。
>>626 呼出元の情報を知りたいだけなら debug_backtrace()
変数名を文字列で渡す
function debug($varname) {
global ${$varname};
printf("%s : %s\n", $name, $$name);
}
630 :
nobodyさん:04/12/08 18:08:53 ID:ZKD/ZF9h
初めまして。
PHPでスケジュール帳みないなのを作ろうと思っているのですが、
予定をどのようにDBに格納するのが良いか迷っています。
単に開始日付時間と終了日付時間だけを持たすと間が抜けちゃう
とかありそうで、四苦八苦してます・・・。
例えば 開始 2004-09-10 で 終了 2004-11-10 としたときに
簡単なSQLで10月のスケジュールを確認すると何も予定が無い
状態になってしまいそうなんですよねぇ・・・。
どなたかお助けください!
631 :
nobodyさん:04/12/08 18:11:40 ID:MTXUZSO2
HTML_QuickForm_Controllerのサンプルに
$controller =& new HTML_QuickForm_Controller('tutorial');
という部分があったのですが、 =& ってどういう意味なんでしょうか。
>>630 そんな設計レベルの話は言語には関係ない。
仕様や機能もわからないのに誰が答えられるってんだ。
自分で考えろ。
>>622 PHPをテンプレートとして使う
($var) --> <?= $var ?> にして、file_get_contentsの代わりに include
変数などに取り込む必要がある場合は、ob_* で始まるバッファを制御する関数を使う。
他は、既存のTemplateライブラリ使うか、同様の処理を自分で作る事になる。
単純な置換なら正規表現だけで出来るけど、条件分岐やループ構造を扱うと面倒になるので
そういった拡張性を考えるなら、既存のTemplateライブラリの使い方を覚えるといい。
>
>>626 >
> 呼出元の情報を知りたいだけなら debug_backtrace()
>
> 変数名を文字列で渡す
> function debug($varname) {
> global ${$varname};
> printf("%s : %s\n", $name, $$name);
> }
これ書いてみましたが、でてきません。
$name, $$nameのところを$varnameに書き換えても
$$name の方が表示されません。 ??
>>634 良く考えると、これだとglobal変数のみしか表示できない。
検証不十分でした。
>>629は忘れて
637 :
417:04/12/08 19:11:05 ID:???
みなさんありがとうございました( ´∀`)b
>>630 終了日が10-01以降且つ開始日が10-31以前のものをSELECTした場合どうなりますか?
糞の掃き溜め
>>630 日時をUNIXタイムスタンプなり、連続した数値として扱えば良いだけの気がするが。
642 :
417:04/12/08 20:23:13 ID:???
>>460 > <img src="<?= "./img/$_GET[file].jpg" ?>" /> <-- 画像 -->
> URLの呼出は hoge.php?file=1 で、$_GET[file] に 1 が設定される。
hoge.php?file=・・・
↑
ここに数字以外のアルファベットを持ってきても良いですか( ´∀`)?
643 :
626:04/12/08 20:24:18 ID:???
>>636 結局、表示はできないという結論でよろしいのでしょうか?
そうであれば、調べるのをもうやめようと思います。
"貼"と言う文字含む文字列をファイルで読み書きしようとすると、
\が貼の後ろにどんどん追加されていってしまうのですが、
どう対策すればいいのでしょうか?
645 :
644:04/12/08 20:55:56 ID:IAIwusHo
すいません、ageます。
646 :
644:04/12/08 21:00:49 ID:IAIwusHo
訂正します。
調べたところ、ファイルの読み書きの際ではなく、
フォームで、"貼"の文字を含む文字列を受け渡しする度に、
"貼\"
"貼\\"
"貼\\\"
と¥が増えていってしまいます。
どう対策すればよろしいでしょうか?
648 :
644:04/12/08 21:10:47 ID:???
>>647 ありがとうございました。
この系統の文字コードによるエラーって、
掲示板など入力を検査できない状況ではどのように対策を立てるのでしょうか?
差し支えなければ教えてください。
649 :
nobodyさん:04/12/08 22:14:21 ID:TjUb9dLp
fopen関数にて
ファイルが存在しない場合は新規作成すると書いているのですが
やってみるとfailed to open streamとエラーが表示されます。
どうしてなんでしょうか?
$fp = fopen("test.txt","w");
>>648 意味がわからんが、ini_getでmagic_quotes_gpcがOnかOffか調べて
処理を分岐させたらいいんじゃないの
651 :
651:04/12/08 22:54:25 ID:+AeusHNj
>>643 php書き始めてひと月くらいなんでつっこみどころがいっぱいかと。
同じようなことで悩んで漏れはこんなの書きますた。
意味もなく二つに分かれてるけどこんな発想はどうよ?
引数に変数そのものを与えないで変数名を文字列として与える。
function debug($dmsg){//【デバッグメッセージ】
echo "<div class=¥"debug¥">$dmsg</div>¥n";
}
function hensu($hikisu_str){//【変数の存在と値を調べる】なかで「debug」使用。注意!
$hensu_namae = "¥$"."$hikisu_str";
$str_add_d = "${$hikisu_str}";
$okmsg = "(・∀・)イイ!!!!";
$ngmsg = "(・A・)イクナイ!!";
if($GLOBALS["$hikisu_str"] <> ''){
debug("{$hensu_namae}:<span style=¥"color: blue;¥">{$okmsg}</span>:{$GLOBALS["$hikisu_str"]}");
}else{
debug("{$hensu_namae}:<span style=¥"color: red;¥">{$ngmsg}</span>:{$GLOBALS["$hikisu_str"]}");
}
}
652 :
651:04/12/09 01:07:35 ID:???
>>651 <div class=¥"debug¥">はcssで枠付けて目立つようにするため。
深い意味はないです。
javascriptの中でPHPの変数は使えますか?
>>653 どうやったらそういう発想になるかがわからん
655 :
651:04/12/09 02:59:59 ID:???
>>654 きっとphpでjavascriptもかきだすつもりなんじゃないの?
>655は甘すぎ
ホワイトチョコレート・オレより甘い
クライアントとサーバという概念が抜けてるに違いない!!!
>>649 ディレクトリに書き込み顕現がないんだろ。確認しれ
>>630 簡単なSQL
SELECT * FROM t1 WHERE start_date <= '2004-10-31' AND end_date >= '2004-10-1';
しかしSQLの質問だけなら板違い。
>>650 補足として、magic_quotesならget_magic_quotes_gpc()でもOK。
662 :
649:04/12/09 10:12:52 ID:s0q6JDNt
>>658 ありがとうございました、その通りでした。
初歩的なミスですいません。
そのJavaScriptが表示される直前の変数なら参照可能だよ
ってことだよね?
参照可能ですか?
<script type="text/javascript"><!--
この中でPHPの変数を使いたい
color = "<?= $color ?>"; ←こんな感じで
//--></script>
だけど、使えない。。。
>>664 そんな感じ
俺ンとこじゃあ普通に使えている
>>664 どう「使えない」のか書かないのは釣りでつか
うそ?
使えてる?
>どう使えないのか
変数の部分は空になってます
本当に$colorに値が入っているのかと小一時間(ry
gomen tukaeta...orz
>>656 ホワイトロリータとどっちが甘いですか?
洋炉利
>>643 通常のPHPの範囲では、他の方法は思い浮かばないです。マクロもないしな。。
スタックフレームひっぱってきて呼出元のローカル変数を参照するとか。
>>670で紹介されてるモジュール使えば出来そう。
# 自分も拡張モジュール書く所だった thx > 670
>>674 a();
function a() {
$hello='world';
hensu("hello")
}
再質問です
掲示板作ってて
>>1 このように
1(数字)にリンク張りたいのですが
どのような書き方で可能でしょうか?
文字が入ってる変数は$commentです。
よろしくおねがいします。
>>676 $comment中に
>>1という文字列があったらリンクにすればいいだろ
1とは決まってません
数字で実現したいのです。
1を数字と読み替える程度の知恵もないのか?
>>679 [0-9]
結構難易度高い質問だと思うのですが
ご存知の方いましたらヒントだけでもよろしくおねがいします。
で、できました。。。
初歩的な質問でしたね^^;
では。。。
684 :
673:04/12/09 23:22:57 ID:???
呼出元のstackの情報を得られるかと思ったけど無理でした。> xdebug
得られる情報はdebug_backtraceとたいして代わらないみたい。
てことで、
>>673の発言を訂正します。
>>684 んー、というかローカル変数全部表示してくれるオプションが有ったと思ったが。
あとは、TruStdioとか、PHPEclipsとかかぁ?
686 :
nobodyさん:04/12/10 04:51:13 ID:dLo8c777
PHPとそれ以外の言語(例えばJavaScript)の各プログラムから
共通の基本設定ファイルを読み込ませて値を定義したいのですが、
PHPにそのような関数ってありましたでしょうか?
なにか見掛けたような気がするのですがみつかりません。
もしかしたらあったのは他の言語かもしれません。
共通設定ファイルは
# comment
name = value;
のような感じの書式です。
>>687 これですこれです。ありがとうございました。
しかしJavaScriptのコードと設定ファイルを共用するのは
少々トリッキーかもですね。
689 :
nobodyさん:04/12/10 11:04:56 ID:vrayh+vx
PHPとはあまり関係がないないかもしれないですが・・。
1つのディレクトリにファイルがたくさんあるのとないのとで読み込み速度は変わってくるのでしょうか?
例えば $lines = file("aaa.txt"); などする場合
ディレクトリに100ファイルある中から aaa.txt を読み込むのと
100000ファイルある中から aaa.txt を読み込むのとでは結構速度に差が出ますか?
2000ファイルくらいでやってみたところ差がわかりませんでした。
>688
fopenなりを使って、自前でパーサー(もどき)組んじゃえば?
好きなフォーマットのiniファイルを使えるよ。
>>689 君おもしろい。ブラウザで100000ファイルあるディレクトリ開いたら重いよね。
ん?そういう問題なのか?
aaa.txtにダイレクトにアクセスしてる以上速度に差が出る分けない、って解答が正しいのでは?
>>689 読み出すファイルが確定していての話なら、影響は無し。
対象となるディレクトリの中身の状況によって、読み出すファイルを可変にするとかなら、
ファイル数が多ければ処理件数が増えるから速度は低下。
(OSのファイルシステムによる制限は考慮してないよ。)
ファイルシステムの影響が一番大きいと思う、
ディレクトリ内にファイル数が多過ぎる場合だと
読みだすファイルが確定してる場合でもパフォーマンスに影響して来るよ。
PostgreSQLでテーブルを無闇に作成したりするのと同じ。
早い話がOSによっても違うと
696 :
nobodyさん:04/12/10 19:56:24 ID:sgrN7tSf
ブログやってるんですが最近モーレツなスパムに苦しんでおります
大体似たような投稿内容なんですが、同じ文面でも違ったIP残していくもので
手動で.htaccessに追加するという対応では追いつきません
1分間に同じIPで$s回ロードされたら警告を表示→そのまま続けてもう1回ロードされたら拒否IPとして.htaccessに追加する
というのをphpではどうやればいいんでしょうか
.htaccessには他の処理も書いているので、
order allow,deny
allow from all
という箇所を見つけて、
deny from
deny from
deny from
deny from
↓
と追加していく形で
普段、.htaccessのパーミッションは604なので
chmod ("/somedir/.htaccess", 0606);
として処理を実行。その後に
chmod ("/somedir/.htaccess", 0604);
とかもできれば。
使ってるブログがphpで作られているので、index.phpにincludeして使えるようにしたいのですが・・・
えっと、phpのバージョンは4.3.8でセーフモードです
どうかお助けを
>>696 IP記録して回数調べて条件満たしたら.htaccessに追加したらいいじゃん
>>というのをphpではどうやればいいんでしょうか
まさか一から教えてくれって言っているのか?
それともそのままコピペしたら動くようなのを求めてるのか?
ここはそういう場所じゃないよ、有料サービスでも探してみなさい。
それか本でも買って勉強したあと、どこかでつまづいたら質問したらいいと思うよ。
「・・・・とやってみたけどうまくいきません。助言お願いします。」とかいう感じで。
プログラム自体初心者なんですが、ランキングのスクリプトを作ろうとして、詰まりました。
登録画面→dataディレクトリにユーザーID.csvを生成
CSVは、id,url,メアド,inカウント,outカウント,日付
という感じです。
どうにかカウントの処理まではできました。
dataディレクトリからreaddirで取得した配列をinカウントでソートしたいのですが、色々試しましたが方法が思いつきません。
どなたか教えていただけないでしょうか。
解説サイトのをコピペしてみたのですが、
エラーです。エラーです。エラーです。
うぇっうぇうぇうぇっっうぇっっっうぇw
ファームから送ってみな
>>699 その構成なら、API使って楽することはあきらめて
自分でソートするしかないね
>>696 .htaccessファイルだけでやろうとせずに、IP記録&チェック用ファイルでも用意してさ、
最終的に.htaccessファイルを作成すれば良い
>699
usort()
705 :
nobodyさん:04/12/11 11:31:10 ID:d4nLr2Jv
知ってるんだったら教えてあげりゃーいいじゃん
706 :
nobodyさん:04/12/11 12:06:04 ID:MOGS9JxO
PHP初心者なんですが誰か教えてください。
管理画面で記事を編集する処理をしようとしてるんですが
改行コードを<br>に置き換える処理がうまくいきません。
どこが悪いのでしょうか?
$lock = LockFile( ITEM_LOCK_FILE_PATH );
$ItemList = GetCategoryItemList( $_REQUEST[ "CAT" ] );
for ( $i = 0; $i < sizeof( $ItemList ); $i++ ) {
if ( $ItemList[ $i ][ ITEM_COL_ID ] == $_REQUEST[ "ITEM" ] ) {
$ItemList[ $i ][ ITEM_COL_NAME ]
= $g_FORM["VALUE_NAME"]["VALUE"];
$ItemList[ $i ][ ITEM_COL_DETAIL ] = str_replace( "\n", "<BR>", $g_FORM["VALUE_DETAIL"]["VALUE"]);
break;
}
}
>>706 $ItemList[ $i ][ ITEM_COL_DETAIL ] = preg_replace("/\n\r|\r\n/", '<br>', $g_FORM["VALUE_DETAIL"]["VALUE"]);
708 :
nobodyさん:04/12/11 12:36:43 ID:uBGzFGku
PHP初心者なんですが誰か教えてください。
PHPってなんの略ですか?
>>706 Peaceand Happiness through Prosperity
あれ、Personal Handy Phoneだっけ?
パンツはいてポン
>706
つ【nl2br()】
713 :
nobodyさん:04/12/11 15:01:16 ID:755OaB72
Programmer Heaven, PHPの略じゃないですか?
違うなら違うといってください。
Pantsu H Piropiropi~の略じゃボケ
715 :
nobodyさん:04/12/11 17:20:37 ID:MVGeL0Sh
セッションが切れたらログインページに飛ばすようにしたいのですが
header(Location 〜 でやってたら
フレーム内のページの場合、親フレームに指定できず
フレーム内にログインページがでてきてしまうのですが
何かいい方法はありませんでしょうか?
Panty 履きたい Pantyの略だろハゲ
PHPを自分のPCにインストールしてPHPスクリプトの動作チェックをかけたいんですが
WEBサーバーもインストールしていないと使えないのでしょうか?
ちなみにOSはWin2kです。
>>715 JavaScriptとMETA refreshでいいじゃない
<script type="text/javascript">if(top != self){ top.location.href = self.location.href; }</script>
719 :
nobodyさん:04/12/11 17:31:45 ID:755OaB72
>>717 文脈から、ウェブサーバをインストールした方がいいと感じました。
>>717 phpdevの構文チェックがあった気がする
721 :
717:04/12/11 17:35:04 ID:???
たしかIISサーバーはOSインストール時に入れた記憶はあるんですが・・・
サービスが起動しているかどうかまでは・・・
何もわからんやつはIISなんかやめとけ。
723 :
nobodyさん:04/12/11 18:36:48 ID:MOGS9JxO
>>707 おお、ありがとうございます。
しかし残念ながらまだ正常に処理できないです。
もともと新規記事登録画面や編集画面で改行入ってても改行できないプログラムを
改造してるんですが、まず
新規記事登録画面からcsvへの書き込み時は
$lock = LockFile( ITEM_LOCK_FILE_PATH );
$ItemList = GetCategoryItemList( $_REQUEST[ "CAT" ] );
$NewItemNumber = GetNewItemNumber( $ItemList );
$ItemRecord[ITEM_COL_ID ] = $NewItemNumber;
$ItemRecord[ITEM_COL_NAME ] = $g_FORM["VALUE_NAME"]["VALUE"];
$ItemRecord[ITEM_COL_REGIST] = date("YmdHis");
$ItemRecord[ITEM_COL_DETAIL] = str_replace( "\n", "<BR>", $g_FORM["VALUE_DETAIL"]["VALUE"]);
array_push( $ItemList, $ItemRecord );
$ItemFilePath = ITEM_DATA;
$number = sprintf( "%04d", $_REQUEST[ "CAT" ] );
$ItemFilePath = str_replace( "#NUMBER#", $number, $ItemFilePath );
WriteCsvToFile( $ItemFilePath, $ItemList );
UnLockFile( $lock );
でうまく処理できました
724 :
706,723:04/12/11 18:39:59 ID:MOGS9JxO
で、それを編集画面で開くと<br>がでるので
編集画面で開く時に
ClearFormValue();
$ItemInfo = GetItemRecord( $_REQUEST[ "CAT" ], $_REQUEST[ "ITEM" ] );
$g_FORM[ "VALUE_NAME" ][ "VALUE" ] = $ItemInfo[ ITEM_COL_NAME ];
$g_FORM[ "VALUE_DETAIL" ][ "VALUE" ] = str_replace( "<BR>", "\n", $ItemInfo[ ITEM_COL_DETAIL ]);
としてまた<br>を改行に戻してます。
こんな改造自体がおかしいのでしょうか?
725 :
706,723:04/12/11 18:47:52 ID:MOGS9JxO
編集画面表示部はこんな感じです。
<HTML><HEAD><TITLE>記事管理メニュー</TITLE></HEAD><BODY>
<H2>管理メニュー</H2><H2>記事の編集</H2>
<FORM ACTION="<?php echo( $_SERVER[ "PHP_SELF" ] ) ?>" METHOD="POST">
題名:<INPUT TYPE="TEXT" NAME="VALUE_NAME" SIZE="40" VALUE="<?php
HESC( $g_FORM[ "VALUE_NAME" ][ "VALUE" ] );
?>"><FONT COLOR="RED"><?php
if ( $g_FORM[ "VALUE_NAME" ][ "ERROR" ] == true ) {
HESC( "■ " . $g_FORM[ "VALUE_NAME" ][ "MESSAGE" ] . " ■" );
}
?></FONT><br>
本文:<TEXTAREA NAME="VALUE_DETAIL" COLS="50" ROWS="10"><?php
echo( $g_FORM[ "VALUE_DETAIL" ][ "VALUE" ] );
?></TEXTAREA><FONT COLOR="RED"><?php
if ( $g_FORM[ "VALUE_DETAIL" ][ "ERROR" ] == true ) {
HESC( "■ " . $g_FORM[ "VALUE_DETAIL" ][ "MESSAGE" ] . " ■" );
}
?></FONT><br><BR>
<INPUT TYPE="HIDDEN" NAME="CAT" VALUE="<?php
HESC( $_REQUEST[ "CAT" ] );
?>">
<INPUT TYPE="SUBMIT" NAME="SUBMIT" VALUE=" 追 加 ">
<INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE=" クリア ">
</FORM><BR><BR>
<A HREF="./admin_item_index.php">記事編集のトップへ</A><BR><BR>
<A HREF="./admin_index.php">管理メニューのトップへ</A></BODY></HTML>
726 :
715:04/12/11 20:22:30 ID:MVGeL0Sh
727 :
nobodyさん:04/12/11 21:15:13 ID:jtmXZY//
PHPでデーモンを作りたいのですが、どうすればよいでしょうか?
感じとしては、クライアントがサーバの1000番ポート(例)に接続してきて、
送ってきたクエリに対する結果を返したいのですが……。
>>727 実現したいことを提供する仕組みがPHPにあるかどうか調べる。
この場合だとデーモンを作成できるかどうか調べりゃいいわけだな。
で、その機能が提供されているとしたら、どんな関数を使えばいいか
芋づる式に分かるわな。
729 :
nobodyさん:04/12/11 22:03:54 ID:st9UV/hb
好きなように付けていいと思うけど、parse_url()の場合だと、
"scheme", "host", "port", "user", "pass", "path", "query", "fragment"
ってのがあるから、 path でええんでないの?
さあこのネタ振りに対し730は・・・!?
$hoge だろ
そんなハードルは跳べないだろw
>>735 おれ729じゃないけど、こんなスレあったのな。
よく変数とか関数の名前に迷うことが多いから見てみよう。
737 :
nobodyさん:04/12/12 11:29:49 ID:Wwc4JdWx
MySQL5で作成したストアドプロシージャー(抽出|実行)をphpから
呼ぶ方法を知りたいのですが、知っている方おりますか?
738 :
699:04/12/12 13:41:09 ID:6JzXtPsh
>>704 ファイル名からinカウントを表示する関数を作って、usortで、数えるって感じですか?
そんな感じで色々やってみたんですが、うまくいきませんでした。
739 :
nobodyさん:04/12/12 13:53:30 ID:0qNzuUWM
741 :
nobodyさん:04/12/12 15:17:15 ID:/72kiXrO
失礼します。
db接続をポインタで渡したいのですが、
以下では出来ませんでした。
エラーメッセージでコンフィグが云々〜というのが出たのですが、
鯖の設定で出来たり出来なかったりするんでしょうか?
function f_name($pt_db, $int_id) {
$res_db = pg_query($pt_db, "SELECT name FROM table WHERE id=" . $int_id . ");
$arr_db = pg_fetch_array($res_db);
return $arr_db[name];
}
呼び出し時
echo f_name(&$作成したdb接続, $int_aa);
質問させてください。
a<>b
c<>d
e<>f
と配列$log[]に格納されている配列を
$nlog[b] = a
$nlog[d] = c
$nlog[f] = e
としたいのですが以下のようにすると多次元配列になってしまうんで一次元配列
にしたいんです。どうじたらいいでしょうか。
for($i=0;$i<=count($log);$i++){
list($from, $key) = explode("<>", $lines[$i], 2);
$nlog[] = array("$key"=>"$from");
}
>>741 function f_name(&$pt_db, $int_id) {
...
}
echo f_name($作成したdb接続, $int_aa);
>>742 for($i=0;$i<=count($log);$i++){
list($from, $key) = explode("<>", $lines[$i], 2);
$nlog[$key] = $from;
}
744 :
742:04/12/12 15:33:06 ID:???
>>743 ありがとうございます。初歩的な質問でした。お恥ずかしい。
745 :
699:04/12/12 15:41:31 ID:6JzXtPsh
usortの使い方なんですが
function iicount($x){
$usrid = $x;
$usrfile = "./data/$usrid.dat";
$fp = fopen($usrfile,"r");
$fg = fgets($fp);
$fpp = explode(',',$fg);
list($usrid,$sitename,$siteurl,$comment,$mailad,$passwd,$outcount,$incount) = $fpp;
fclose($fp);
return $incount;
}
をユーザ定義関数として
dataフォルダから取得したファイル名一覧(=usrid名一覧)の配列を
usort($datfile_array,$iicount); //inカウントでdatafile_arrayをソート
という使い方をしてうまく行きませんでした。使い方、全然検討はずれでしょうか。。
ググってもでないので教えてください。
フォームでひらがな以外はエラーとなるようにしたいです。
送られてくる変数が$varとして
if(preg_match("/[^ぁ-ん]/",$var)){exit ("ひらがな以外はダメ");}
ではうまくいかんとです。どうすればよいですか?ページの文字コードはシフトJISです。
>746
マルチバイト関数を使うべし。
748 :
741:04/12/12 16:17:43 ID:???
>699
情報が足りないからよく分からんがこれでいいのかい?
usortの使い方はマニュアル見たの?
function cmp($a, $b){
if ($a[7] == $b[7]) return 0;
return ($a[7] < $b[7]) ? -1 : 1;
}
$dir = opendir('data/');
while (($file = readdir($dir)) !== false) {
if(substr($file, -4) == '.dat'){
$data = file('data/'.$file);
$datfile_array[] = explode(',', $data[0]);
}
}
closedir($dir);
usort($datfile_array, 'cmp');
print_r($datfile_array);
750 :
nobodyさん:04/12/12 17:05:49 ID:yU1MgCLa
変数名を良く間違えるので、宣言した変数以外は使えないようにしたいです。
Cみたいに変数宣言をする方法は無いですか?
クラス変数はvarで宣言できるけど、宣言して無い変数も
いくらでも追加できるみたいなのでバグの温床になりやすいです。
それがphpなんだよ
嫌ならCdeCGIでもやってろ
>>750 宣言しないで変数使ったら普通に警告が出るでしょ?
確かに $error_flag とかでチェックしてて、 if( $erro_flag === true) ・・・ とかタイプミスしてバグになったりはするな。
目を凝らしてコピペ連続だな。
754 :
750:04/12/12 17:53:39 ID:???
>>752 でません。どうしたら出るようになりますか?
正直警告だけでも無いよりマシでありがたいです。
マヌアル嫁
>>754 /etc/php.iniなどで
error_reporting = E_ALL
の設定をするべし
error_reporting = E_ALL & ~E_NOTICE
だとその警告は出ない。
757 :
699:04/12/12 18:58:10 ID:???
>>749 どうもありがとうございます。
usortって好きな関数で出た値で比較とかかと思ってました・・
その他の部分も色々勉強になりました、ありがとうございます。
758 :
750:04/12/12 19:03:46 ID:???
>>756 未宣言変数だけ ってのは無いんですね。
了解しました。
760 :
759:04/12/12 20:30:49 ID:???
あとそういった開発支援機能はツール類が何点か存在する。
>>758 べつにphp.iniを書き換えなくとも
error_reporting();をソースに追加すれば変更できるぞ
例
error_reporting(E_ALL); //All ERROR
error_reporting(E_NOTICE); //NOTICE ERROR
>>753 > if( $erro_flag === true)
エロフラグが勃った(ワラ
テンプレ機能が備わったツール使えば良い
>>747 むほっ、
>>746の式を
if(mb_ereg_match("/[^ぁ-ん]/",$var)){exit ("ひらがな以外はダメ");}
としてもうまくいかないのです。やろうとしていることが無理なのかなぁ。
>>764 mb_ereg_match() はパターンを / で囲むと別の意味になる。
あと、内部エンコーディングに SJIS を指定していない場合は、
mb_regex_encoding('SJIS') を先に実行しておく必要がある。
内部エンコーディングに SJIS を指定するには国際化版 PHP か
--enable-zend-multibyte をオプションに含めてコンパイルする
必要があるけど。
画像アップローダ作ったのですけど
copy使ってもmove_uploaded_file使っても
アップできるjpgファイルとアップできないjpgファイルがあります。
ちょっとサイズが大きめのjpgファイルがあっぷできないようなのです。
解決策はあるのでしょうか?
>>750 コーディングスタイルを見直した方が良いのでは。
>>750 型宣言や、Perl で言うところの use strict; ほしいね。
完全じゃないけど、とりあえず
error_reporting(E_ALL);
とか。
確かに型があやふやなのはうざい時あるな。
以下のようなものってどう作ればいいんでしょうか?
自サイトのPHP⇒他のページクリックさせた後に自分のサイト(とあるコンテンツ)
ググッてみてもわからず。本を見てもわからず。
だれか知識ある人教えてください。。
よく意味が分からんが不可能な気がする
エロサイトの強制広告クリックか
質問の文章が全然わからない。
> 自サイトのPHP⇒他のページクリックさせた後に自分のサイト(とあるコンテンツ)
たった1行だけかよ。
手を抜かずにしっかり書け。
すみません。今から書き直します。。。
いまいち意味が読み込めないけど
PHPは動作してるのは鯖だからブラウザの制御とかむりっぽ
JavaScript、VBScript、Spy-ware
のほうが怪しいと思う
じゃあエロサイト見てくるか
779 :
766:04/12/13 14:08:26 ID:???
>>767 レスありがとうございました。
ファイルサイズが取得できないのが原因でした。。
$_FILES['userfile']['size']これでサイズ取得できないのはなぜでしょうか?
$_FILES['userfile']['name']これでファイル名は取得できてます。
>>777 いやそこ携帯サイトなんすよ
めるらんにそのサイトのアドレス入れときます。
エロサイトで携帯からしかみれません。。orz
782 :
766:04/12/13 14:20:04 ID:???
783 :
766:04/12/13 14:25:36 ID:???
ただし、きみがやりたいことはできないこともないけど
また迷惑なエロサイトが増えると思うと教える気が・・・
>>779 <input type="hidden" name="MAX_FILE_SIZE" value="数字">
の数字以上のファイルをアップロードしようとしてるからじゃないのかね。
785 :
766:04/12/13 14:43:11 ID:???
>>784 ありがとうございます。
まさしくそのとおりでした
それでサイズ取得できなかったorz
人それぞれだな。・・・ん?
788 :
766:04/12/13 15:15:12 ID:???
ただ礼儀をわきまえてるだけです。
教えていただいた人には低姿勢で返答するのが礼儀です。
教えてあげる人に弱気でおしえてどうする
>>780 それはリンク元のサイトとサイトAが知り合いなんじゃね?
怖くないからURL晒してみなさい
と思ったら携帯専用サイトだったか・・・。
まんどくせ
>>780 自サイトがサイトAのページをfileか何かで読んでるんじゃないの?
サイトAのフォームのポスト先が相対指定か、preg_replaceで置き換えてるとかして
自サイトへ返すようにしてるとか
というか、自サイトにサイトAと同じ内容を表示するページを
固定で持っているだけのような気がしてきた・・・
>>789 いやリンク元とサイトAは全く関係ないサイトです。
やはりこれは技術的に難しいということですかね。orz
>>792 とあるコンテンツのURLってどういうURLなの?
決まったスクリプト名を返すんだったらRefererからごにょごにょすればいいだけだけど
794 :
nobodyさん:04/12/13 16:43:46 ID:AgI/S2Z3
デジカメで撮影したJPGファイルをホームページに貼り付けています。
JPGファイルのEXIFには撮影日時の情報などが含まれているんですが
この日時を検出して、写真の下に撮影日時として紹介したいと思っている
のですが、PHPを使って自動処理化することはできるでしょうか?
人様のものを自分のもののようにみせたいとかでは?
>794
イメージ関数にありますよ。マニュアル見てね。
>>766はフィッシング詐欺のサイト作ってるってことか。
800 :
780:04/12/13 20:19:56 ID:???
なんとか自己解決できますた。
お迷惑お掛けしました。。。
もうけた金はちゃんとばらまけよ
802 :
766:04/12/13 22:02:06 ID:???
>>780 どうやって自己解決したのか書けよ
それが礼儀ってもんだ
803 :
780:04/12/13 22:07:51 ID:???
>>802 「書いてください」だろ。
それが人に物を頼む態度かよ。。。
東京・東海は景気良いから駄目
札幌の時計台周辺にばら撒けよ
今なら新潟駅周辺とかお勧めだ
805 :
780:04/12/13 23:11:54 ID:???
偽者いっぱい
マニュアル嫁。
807 :
870:04/12/14 00:24:47 ID:???
モズクいっぱい幸せいっぱい
騙りミスダサッ
桃色頭脳な808にハッピーチアーズ !!
なんかそんなコテいたな
なんかお前センスあるな
プロ誤爆乙
<入力画面>
↓↑
<確認画面>
↓
<完了画面>
という流れで、確認画面から入力画面に戻ったとき、
ラジオボタンなどの入力値を引き継ぐ良い方法は無いでしょうか?
現在は確認画面からsubmitで入力画面に送信し、
↓こんな感じでやっているのですが、いっぱいあると面倒くさくて・・・。
<input type="radio" name="ans" value="はい" <? if($ans == "はい"){ echo "checked";} ?>> はい
<input type="radio" name="ans" value="いいえ" <? if($ans == "いいえ"){ echo "checked";} ?>> いいえ
>>813 文字列比較は出来ないよと言いつつ
そういうやり方しかないよ基本的には
>>813 HTML_QuickFormとかでなんとかなるんじゃない?
使ったことないけど。
ちなみに俺はSmarty側でそんな感じでやってる。
htmlコードの手前で一括処理して、
htmlコードの中には変数の出力のみにしたほうが、
後々の成長を考えたらいいかもじゃありません?
その方が面倒くささも減りませんか?
それとついでに、valueの値は英数にしておいた方が無難かもですね。
>>813 $anschk[$ans] = ' checked';
print <<<_CHK_
<input type="radio" name="ans" value="yes"$anschk['yes']>Yse
<input type="radio" name="ans" value="no"$anschk['no']>No
_CHK_;
818 :
813:04/12/14 13:34:32 ID:???
みなさん有難うございます。
どの案もそれぞれ役に立ちそうです。
大変参考になりました。
>>883 CGI.pmだとこういった処理は楽出来たのだけどな。(デフォルトで以前入力した値)
一応、HTML_QuickFormでもdefault値が設定できるので簡単に出来ます。他には、
$ans_check[$ans] = ' checked="checked"';
<input type="radio" name="ans" value="yes" <?= $ans_check['yes'] ?> /> Yes
<input type="radio" name="ans" value="no" <?= $ans_check['no'] ?> /> No
ユーザーにログインしてもらっていろいろ操作してもらうスクリプト書いてるんですが
パスワードとIDの管理がどうすればいいのかわかりません。
ログイン→クッキーにIDとパスワード格納→ページごとにいちいちクッキーチェックする。
って感じでいいのでしょうか?これでセキュリティー上の問題とか無いですかね?
教えて下さい。お願いします。
>>823 俺もどうやるべきなのかって知りたいんだけど、
クッキーにIDとパスを保存するんじゃなくて、
ログイン中!っていう情報を期限付きでクッキーに保存じゃないかい。
クッキーにIDとPASS送るのはタブーだが、小規模ならええんじゃない?
セッションという項目を調べる。
IDとパスワードでログイン処理してサーバーでユニークかつ時限性のセッションIDを生成(サーバーで対応づけて保持する)、
そのセッションIDをクッキーに入れるなどしてユーザーを特定。
PHPのもつセッション機能も用途によっては使えるけど、
サーバーでDBを使うならセッション機能を実装するのは大した手間ではないです。
あと、hiddenでIDを埋め込み、ページの初めでそれを判定する
全てのページ毎にね。
信用度は下がるけど、手軽に判定したいならOK
>>822 えーと、どこが?
クライアントからサーバへ情報を送るところは、入力->確認の部分だけで
あとは全てサーバ側だけで処理できると思うが?
具体的には、
入力:GETなりPUTなりで、サーバにフォーム情報を送信
確認:入力から送られるREQUEST情報を取得、$_SESSIONに格納
入力(既存の入力情報あり):$_SESSIONをみて入力情報があれば、初期値として表示
完了:$_SESSIONの情報を表示
で、OKだと思うけど。
829 :
828:04/12/14 15:09:52 ID:???
おっと足りない
完了:$_SESSIONの情報を表示、$_SESSIONの情報をクリア
830 :
822:04/12/14 15:27:56 ID:???
>>828 それは値の引渡し方法のことでしょ。
813は、値をラジオボックスの値と比較してチェックするかしないかの箇所を
簡単に出来ないかって聞いてるんだよ。
>>825 セキュアでかつ
セッションクッキーでもだめ?
パスワードはmd5とかして。
セッションハイジャックのことを考えたら
IDパスをクッキーに書いたほうが
むしろ安全な気もするんだけど
Win2K+Apache2.0.52+PHP4.3.9+ImageMagick6.1.6でBMPのサムネイルを作ろうとしています。
$com = "convert -sample $w" . "x" . "$h $path $dir\\thumbnail\\$bn.jpg"
exec($com);
と、こう書くと、Apacheのエラーログに3番目の引数が「無効なパラメータ」と書き出される。
他のコマンド実行関数を使ってもだめ。$comの内容をcmdで打ってやるとうまくいく。
要は、PHPからこのコマンドを実行しようとするとダメというところまで分かったものの、解決方法が見つかりません。
お助けください〜っ!!
>>830 あらま、それは失敬。”など”ってんで、TEXTAREAとかも考えてしまった。
すみませんね、”馬鹿”で。
じゃ、別のアプローチを…
JavaScriptでクライアントにやらせる、XSLTで楽する。
>>831 セッションハイジャックって、どういうタイプのものを意図してます?
パケット覗くとか?
最終アクセスから一定の時間で無効になるセッションIDなら、
パケット覗かれる以外は大丈夫だと思いますけど。
さらに慎重を期すなら、(申し込みなどの)重要なアクションの前に
あらためてパスワード入力を求めるようにすればいいはず。できればSSLで。
Yahoo!オークションとかAmazonとかのような感じで。
クッキーだとクライアント側が覗けて、それを元にして他の人になりすます
ことが出来る危うさがあるだけ。
いづれにしても、規模に夜。
一般に金が絡まないのなら、そんなに気合入れなくてもいいと思うけど。
836 :
822:04/12/14 16:05:50 ID:???
>>833 まぁ、そうムキになりなさんな。
文面から言って馬鹿じゃなさそうだし、こちらも軽率だったよ。スマソ。
SSL限定だがクッキーにsecureフラグ持たせるってのもセキュリティ上昇に役立つよ。
ふたりはセキュア
ふたりはプリクマっていうFlashあったの思い出した
840 :
832:04/12/14 16:37:50 ID:???
自己レス。
convert って、フルパスでやんないとだめってことが分かりました。
FS変換のDOSコマンドにもconvertがあったからでした。
お騒がせしました。
>>835 セキュアなセッションクッキーが覗かれるなら
セッションIDも覗かれるわけで・・・
ふたなりセキュア?
843 :
nobodyさん:04/12/14 19:23:30 ID:xGw6uJyx
証明書が必要なSSLサイトの情報をPHPで引っ張ってくることは可能?
マニュアル見ろ
メールを送信するのにmb_send_mailを使ってるんだけど
これって簡単にはファイル添付できないよね。
みんなどうやってる?
もしかして自分で本文にマルチパート書いてる?
846 :
nobodyさん:04/12/15 00:17:55 ID:ZhQlQC75
>>831>>834 漏れは、認証終了したら、
分、秒、ipアドレス、ポート、をcryptでごにょごにょして
それを、tempDBに格納。
以後はTEMP DBで照合し、OKなら、消して、またごにょごにょ、
tempDBに格納。照合のくりかえし。
とか、大げさなことをしてた。ワンタイムパスワードみたいな感じだな。
実際のとこセッションハイジャックなんて、理屈では出来ても
そうそう上手くいくもんでもないし。
入力値のチェックと、get渡しで、ヤバいクエリーにならない
設計ってのはいつも気をつけてる。
>>845 mb関連は自分で処理(結構端折ってるが)して、
送るのは添付が出来るクラスライブラリを利用させてもらってる。
>>846 tempDBにとこの処理がボトルネックになりそうだな・・・
ワンタイムパスワード?を
アクセスのたびに生成ってことですよね?
それだとIEのShift+クリックで新しいウィンドウで開いたときとか
おかしくなる?
それは使用想定外だからNG?
849 :
nobodyさん:04/12/15 15:39:46 ID:O6FIBI2+
preg_match の [array matches] ように引数が指定されたときだけ
値を入れて返すということをしたいのですが、リファレンス引数を
省略できるように関数を定義するには、どう記述すればいいのでしょうか?
>>849 function hoge($arg = "default") {
if ($arg == "default") return;
else {
処理
return (値);
}
851 :
849:04/12/15 16:40:03 ID:???
} 足りないし
無理にdefault入れる必要もないか
function hoge($arg = "") {
if ($arg == "") return;
else {
処理
return (値);
}
}
852 :
nobodyさん:04/12/15 17:17:23 ID:nSzivOJN
cronでPHPのスクリプトを実行したいのですが上手くいきません。
以下のように記述しています。
0 * * * * /usr/bin/php -f /home/httpd/html/ファイル名.php
MAILTOで記述したアドレスに届くメールには
Could not open input file: /home/httpd/html/ファイル名.php.
と表示されます。
コマンドで
/usr/bin/php -f /home/httpd/html/ファイル名.php
を実行すると動作します。
メールがくるということはcronは動作しているようですし
直接コマンドを打つと動作するので不思議なのですが
何が原因だかわかりません。
php5.0.2です。宜しくお願いします。
PHP5.0.2+Mysql4.17の環境でmysqliを利用して接続しているのですが
Mysql4.0xでのmysql_result()の様に、クエリから返ってくる
結果を多重配列(行x列)で取得するにはmysqliではどうしたらよいのでしょうか?
$sql = "SELCT * FROM Hoge";
$result = mysql_query($sql,$con);
$Temp[0][0] = mysql_result($result,0,0);
もう2週間程悩んでますorz
宜しくお願いします。
ヘッダとフッタを別ページに分けて、PHPで読み出して、
全ページのヘッダとフッタを統一する事にしました。
とは言っても、PHPでどうしたら良いか分かりません。
そう言うやり方が書いてあれば教えて下さい。
855 :
849:04/12/15 17:40:36 ID:O6FIBI2+
>>850さん
上に書いたように、知りたいのはコピー渡しではなく参照渡しのケースです。
参照だとデフォルト値の設定はできませんよね。
>>852 cron に /home/httpd のパーミッションの権限がないからだよ。
cron の権限ってすごく低いからね。
# 852, 853 は 5.0.2 利用者か。PHP5 ユーザ、もっと増えると嬉しい
857 :
853:04/12/15 17:52:54 ID:???
>>857 ありがとうございます。
<?php require("なんたら.php"); ?>
これで良いんですか?includeとの違いがよく分からなくて…
1ページに2箇所これを埋め込む事も出来るんですよね?
>>853 $rows = array();
while( mysqli_more_results() ){
array_push($rows, mysqli_fetch_array(MYSQLI_NUM) );
}
これで$rows[行][列] にデータが入るわけだが。それともこれは目的と違うのか?
証明書(PFX形式)が必要なSSLサイト情報を
PHPで読み込みたいですが、OpenSSL関数だけで対応できますか?
PFX形式のままでできるものなのでしょか?
863 :
nobodyさん:04/12/15 23:12:53 ID:ZhQlQC75
>>848 おそらく、別のIDを生成するからそのような問題は
おこってないですね。
速度も特に気にならないです。
まず、同時にアクセスがあるようなシステムではないんで。
>>848 さんはページ中にセッションID埋めこむ場合をイメージしてますかね?
その場合は別ウィンドウ開いてから古いページでクリックすると問題ですが、
cookieにセッションIDを入れる場合は問題ないですよ。
windows2000SP4 にapache_2.0.45 をインストールしています。
ここにphp4.3.9をインストールしようとしています。インストーラー版は使っていません。
ファイルのリネームと移動は済んだのですが、php.ini と apacheのhttpd.confの設定ファイルをどのように変更すれば良いのか分かりません。
本や他のサイトを調べてみるとhttpd.confに
LoadModule php4_module c:/php/sapi/php4apache.dll
を追加するように書いてありますが、この文を他のLoadModuleが並んでいる一番下に追加すると、apacheが起動しなくなってしまいます。
できることなら、php.ini と httpd.conf に必要な変更箇所を教えてもらえませんでしょうか?
ファイルのディレクトリは
■apache
C:\Apache2\
■php
C:\php\extensions ←エクステンションのフォルダ
C:\php\sapi
867 :
853:04/12/16 08:42:40 ID:???
868 :
865:04/12/16 09:04:37 ID:???
>>867 すいません、そこはphp4apache2.dllにしていました。
869 :
848:04/12/16 09:32:00 ID:???
>>864 毎回生成するワンタイムパスワード?
もクッキーに書いてるんじゃなかったでしたっけ?
あー、クッキーだからだいじょうぶだ。ごめん
もっとアクセスあるようなサイトだと
ここまでやるのはちょっと気が引けるなー
そろそろスレ違いなのでこのへんで
871 :
nobodyさん:04/12/16 10:50:11 ID:HJhiNztM
レン鯖のphp4.2.4でセッションを使ったスクリプトを実行しているんですが
unset($_SESSION['xxx'])にてセッション変数を削除しても削除されません。
unset直後にvar_dumpすると削除されているんですが、スクリプト終了後
別スクリプトの頭でvar_dumpさせてみると削除したはずの$_SESSION['xxx']が残っています。
自宅の鯖(php4.3.9)では上記現象が発生しないので4.2.4固有の挙動なのかとも思ったのですが
ご存じの方いたら教えて下さい、お願いします。
4.3.10は「アップグレードを強く推奨」だね。
納品したところからまた問い合わせ来るんだろうな……('A`)マンドクセ
873 :
nobodyさん:04/12/16 13:37:02 ID:bb6Ck4vI
Apacheの設定で、拡張子がphpのものしかphpとして実行しないという設定になっている場合、つまり…
AddType application/x-httpd-php .php
としか書いてない場合には、htmlからphpを読み込んで使うっていう事は出来ないですよね?
JavaScriptの感覚で
<script language="JavaScript" src="sample.js"></script>
っていうカンジのは無いのかな。
拡張子htmlでphp動かしたい…。(Apacheの設定は触れないレンタルサーバなのです。)
>>873 javascriptタグで読み込めばいいじゃん。
PHP側はdocument.write吐けばいいじゃん。
876 :
849:04/12/16 14:07:00 ID:???
参照引数の省略ですが、結局
>>849 で書いたことはできないということでしょうか?
どなたかご教授お願いします。
877 :
873:04/12/16 14:11:26 ID:???
>>874 あついです!やってみます!ありがとう!
>>875 置けるんですけど、せいぜいIndexと認証位なんですよね…。
878 :
873:04/12/16 14:21:50 ID:???
>>874 ぬぅ…結局読み込まれたPHPスクリプト部分が実行できないですね(当たり前か…)
どうにかいい方法ないかなぁ…。
>876
できないよってマニュアルには書いてある。
>>878 何ができないのだ?
俺は以下で普通にPHP動かしてるYO!
<script language="JavaScript" src="sample.php?param=xxx"></script>
881 :
nobodyさん:04/12/16 14:42:44 ID:0eREgUDJ
ページを読込時にブラウザのクッキーが有効になっているか確認する方法はありませんでしょうか?
それかクッキーがセットできないかどうか値を返してくれる関数とかありますでしょうか?
882 :
873:04/12/16 15:07:34 ID:???
俺なんてバカなんだ;できないっす;
HTML側
<script language="JavaScript" src="aaa.php"></script>
PHP側
echo $bbb;
で、$bbbをHTML側に表示させたいんだけど、上の書き方じゃだめですか?
>>881 一度クッキーを食わせてみて、食ってなかったら無効と判断。
884 :
nobodyさん:04/12/16 15:39:04 ID:Vcis26Yu
セッションについてなんですが、「分かってるけど理解していない」みたいな
中途半端な状態です。セッションについて分かりやすく説明してあるサイトを
教えていただけませんか?
>882
>874 の言うとおりdocument.write使え。
JavaScriptとして読み込んでるんだからただのテキスト書いたってだめだろう。
886 :
849:04/12/16 15:48:17 ID:???
>>879 さん
そうですか。
つまり、preg_match とまったく同じ関数を自前で実装するのは
不可能ということですよね?
(PHP標準関数だけにゆるされているインターフェイスと)
参照省略は使い勝手が良さそうな構文だけに残念。
887 :
873:04/12/16 16:00:20 ID:???
ぬぐぉ…。 HTML側「a.html」
<script language="JavaScript" src="aaa.php"></script>
PHP側「aaa.php」
document.write('$bbb\;');
これだとhtmlに$bbbとはでてくるけど、やっぱphpとして実行されないから、ダメじゃないですか?
同様に<?$bbb?>,'echo $bbb\;',<?echo $bbb\;?>とかでもダメでしょうし…
888 :
873:04/12/16 16:06:19 ID:???
マジごめんなさい。よく考えたら分かりました(笑)。サーバ側で読まれる時に<?〜?>が実行されるんでしたね。
<?$aaa='1234';?>
document.write('<? echo $aaa; ?>');
迷惑おかけしました。ありがとう!
一歩遅かった件について
891 :
873:04/12/16 16:12:59 ID:???
>>873 改行とか、エスケープしないといけない文字とか気をつけろよ。
>>886 可変長引数リストでfunc_get_arg ()とかはどうなんでしょうか
使ったことないんで参照わたしが可能かどうかはわかりませんが
>>886 PHP 5.0.3だけど
<?php
function hoge($arg1, &$arg2 = "") {
$arg1 = "hage";
if ($arg2) $arg2 = "huga";
}
$aaa = "aaa";
$bbb = "bbb";
hoge($aaa, $bbb);
echo $aaa;
echo $bbb;
hoge($aaa);
echo $aaa;
?>
で動作します
895 :
849:04/12/16 17:57:35 ID:???
どもです。
>>893 この質問をするまえにそれを使おうとしたんですが
引数宣言がない状態で受けた変数をどうやって参照かコピーか区別
しているのかよくわからなかったので途中で組むのを止めてしまいました。
>>894 手元の環境 PHP 4.3.6 で実行したところ、
Parse error: parse error, unexpected '=', expecting ')'
とエラーがでます。エラー行は function 宣言部です。
どうやらバージョン依存みたいですね。
<?php
function hoge($arg1, $arg2 = "") {
$arg1 = "hage";
if ($arg2) $arg2 = "huga";
}
$aaa = "aaa";
$bbb = "bbb";
hoge($aaa, & $bbb);
echo $aaa;
echo $bbb;
hoge($aaa);
echo $aaa;
?>
897 :
873:04/12/16 18:13:40 ID:???
>>892 はいです!ありがとうございます!この板あちーっす!
>>896 一応コメント
Call time pass by reference は非推奨になってるのでphp.iniの設定によってはエラーになります
899 :
nobodyさん:04/12/16 19:17:53 ID:ODdTQvik
個別のデータをテキストファイルに書いておいて、
それを、要素に分割して取り出したいのですが、
00 00 00 00 00 00
と、2バイト空白2バイトと並んでいるので、StrCutでも空白でexplodeでも
どちらでも取り出せるのですが、どっちが早いでしょうか?
>>899 StrCutとexplodeの処理を1万回Whileで回した結果を後学のためにここに書いておいてくれ
ついでにsscanf()も。
それでは更についでにpreg_matchとeregも
split
904 :
nobodyさん:04/12/17 04:03:01 ID:SNntwEz2
どっちが速いか、という質問はたまにあるが、自分の環境で試しはしないのな。
まあ試す人はここで質問しないだけだけど
ちょと質問です。
# Perl
open OUT, $file;
select OUT;
print 'ファイルへ';
select STDOUT;
print '標準出力へ';
これと同じことを PHP でやりたいんですが
どう書けばよいのでしょうか?
ウチのレン鯖のPHP、safe_modeがoffなんだけど、
これって、共有している人から覗かれたりしないかな…。
データベースの情報も、書いてるんだけど大丈夫かなぁ??
Apacheモジュールならまずいかもね
>>910 CGIじゃないです(><)
別のサーバー検討ですかね…。
PHPのsafeモードって穴だらけだし、もともとそんなにセキュアだと思わない方が。
スピードと負荷でApacheモジュール、セキュアでCGIときちんと使い分けた方が良いよ。
CGIじゃないから駄目と単純に言えない。
穴なんて無いよ
915 :
909:04/12/17 15:06:07 ID:???
$hoge = `more /(ウチのフォルダ)/(パスワードを書いてるファイル)`;
echo $hoge;
ってしたときに、safe_modeがoffだったら見れますよね…。
916 :
849:04/12/17 17:35:23 ID:???
>>896 さん
無事動きました。頭に & 指定が必要なところが玉に瑕ですが
参照省略への道が開けた気がします。ありがとうございました。
4.3.10にしたらWarning: Illegal offset type in〜がでるようになってしまった
他にもこういう状況のスクリプトありますか?
↓が動かなくなってしまった
4images
http://www.4homepages.de/
チャンクコーディングはどうすればいいのでしょうか?
知ってる方がいましたらよろしくお願いします。
/.jpにもあったけど
4.3.10に更新するときextensionに未対応の物が入ってると動作しない場合があるらしい
家の環境でApache2+PHP4.3.10+ZendOptimizer2.5.5だとforeach()が正常に動かなくなった
ZendOptimizerをコメントアウトして再起動したら正常に動いたがな
phpMyAdminが動かなくてちょっと困ってたぜ
>>919 オプティマイザとかデバッガとかのextensionは
バージョン上げる際には先ずは外してやるものだと思われ。
ZendものはPHPのバージョンに直ぐに追従するものが多いが、
サードパーティのはなかなか追従しなくて、本体のバージョンを
上げるのを躊躇してしまうことはありがち。
>>918 HTTPでとってこようとしてるなら、PEARのHTTPが勝手にやってくれるぞ。
そうじゃないならしらない(´・ω・`)ショボーン (,,゚Д゚) ガンガレ!
922 :
918:04/12/18 07:26:10 ID:???
>>921 レスthx
もうちょっと頑張ってみます
>>919 PHP 4.3.10 が公開されてから ZendOptimizer 2.5.7 が出ているので一度試してみれば?
/.J の投稿は ZendOptimizer 2.5.7 でも正常に動作しないという問題みたいなので、
他にも何か問題があるのかもしれないけど。
>>923 情報どうも
とりあえず2.5.7は落としておくとします
それでも自宅でPHPの動作テストしてるくらいだからあまりOptimizerは必要ないけどな
以下のようなスクリプトを書いて表示させてみたら、
$a = 'an apple';
$hoge = include('foo.txt');
/* [foo.txt]
I am <?= $a ?>.
*/
echo 'Eg:\r\n'
echo $hoge;
最後のechoで1が出力されてしまったうえに、最初のechoの前に$hogeで読み込まれたテキストが
表示されてしまって、どうも思い通りの結果になりません。
どうしたらいいのでしょうか?
>>925 includeじゃなくてfile_get_contents使えば?
>>927 いや、それだとfoo.txt内の$aが展開されないじゃないですか。
だからincludeを使おうと思ったのですが……もちろんincludeの挙動は解っているつもりでしたが、
まさか返り値が1だとは知らなくて。他の手段が思いつかなかったので、ここで質問させていただきました。
この手の質問は何度か出てるな
結論は「テンプレート使え」だっけ?
eval使えってのもあったなぁ。
この場合だと echo $hogeの代わりに include('foo.txt');でもいい気がするが。
出力を変数に取り込みたいって事だから ob_start, ob_get_contents 辺りでは?
>>928 includeの返り値は1と決まっているわけじゃなくて、returnで指定することもできる。
ここでやりたいことは>931の言ったとおり出力制御関数を使うべき。
ob_start(); include('foo.txt');
$hoge = ob_get_contents(); ob_end_clean();
>>899 sscanf('a b c d', '%c %c %c %c', &$a, &$b, &$c, &$d) // 24
$ret = explode(' ', 'a b c d') // 27
$ret = preg_split('/ /', 'a b c d') // 38
$ret = split(' ', 'a b c d') // 49
$ret = spliti(' ', 'a b c d') // 51
(数値の単位は1+1を処理する時間を1としたもの。)
eval()使わんでもバッファリングせんでも
echo 'Eg:\r\n'
$a = 'an apple';
include('foo.txt');
でいけるやん。