【PHP】下らねぇ質問はここに書き込みやがれpart10
1 :
nobodyさん :
2005/09/25(日) 02:03:45 ID:nLUfPXhD
2 :
nobodyさん :2005/09/25(日) 02:15:35 ID:nLUfPXhD
過疎板で2ゲットずざー´ー`)
$numbarに入っている数字によって、読み込まれるファイルを出したい問い思います。 includeで下記のように書いています。 include('tmp/tmp$numbar.php'); これだとエラーが出るようです。正しい書き方を教えていただけないでしょうか?
4 :
nobodyさん :2005/09/25(日) 03:31:36 ID:/sWHtMR5
下ったのか
>>3 include('tmp/tmp'.$number.'.php');
質問は詳しく 1.何で事でつまづいているのか、どうしたいのかを明確に書くこと 2.できるだけ、コードをさらして質問すること
何で事でって何ですか?
さぁ?コピペしただけだし
>>5 ありがとうございます。ばっちり勉強になりました。
>>9 include('tmp/tmp{$numbar}.php');
でもいけるかも。
それはそうと、ナンバーは
$numberか、$nanbarだと思うぞ。
(後者はそれでも恥ずかしいが)
11 :
nobodyさん :2005/09/25(日) 07:23:56 ID:2/zVxBc/
>>10 えぇぇぇ
それはマズイよ
ダブルクォートでしょ?
ファイルを開いて一行づつ読み込み、ある文字列にマッチした行だけ消す(改行も)ことはできますか? 一部を消す方法が見つからなかったのでこちらに来ました。似たようなないようのサイトでもヒントだけでも教えてください。
15 :
14 :2005/09/25(日) 09:32:20 ID:???
あ、すいません。ファイルはwやw+以外の開き方でお願いします。
書き込めないファイルは、消すことも修正することもできないと思うけど???
17 :
16 :2005/09/25(日) 09:59:47 ID:???
対象のファイルXは読み出し専用で開き、それとは別に一時的なファイルYを書き込み用に つくり、Xから一行ずつ読み込んで、消したい条件に一致しないときだけ、Yに書き出す。 Xの全部の行を読み終わったら、Xを消去するなりリネームするなりし、一時ファイルYの 名前を、Xにする。
>>13 スクリプトの先頭に ini_set('max_execution_time', 2);と書いておく、
forkするかシェルスクリプト書いてexecする、
あるいはexec timeを指定したRunkitのSandbox内で実行する、
declare()で実行時間を監視する
などの方法が考えられる
>>13 max_execution_timeを2秒に設定したfile_get_contentsするだけの
プログラムをforeachの中で実行させればいいような。
呼び出してsleep(2)して結果読み出し。
呼び出すプログラムの方でファイルに書き出すもよし、proc_openで
url渡せば結果を返すプログラムにするもよし。
あるドメインのサイトで与えたクッキーを 他のドメインのサイトで取り出して使うことは出来ますか?
22 :
14 :2005/09/25(日) 17:37:22 ID:???
>>17 おぉ、すごいっす。頑張ってやってみます。ありがとうございますm(__)m
indexページ以外からアクセスしてきた場合はindexページへ飛ばす
というような機能をつけたいと思い、自分なりに書いてみたのですがうまくいきません。
どのようにすればできるのでしょうか?
よろしくお願いします。
<?php
$ref = $_SERVER['HTTP_REFERER'];
$url = "
http://***.index.htm ";
if ($ref != "
http://***.index.htm "){
header( "Location: $url" );
}
?>
>>21 まあ可能
>>23 大枠のコードは間違ってない
>うまくいきません
何が?
htmlにphpを埋め込みたいのですが htmlの拡張子をphpに変えて、その中で <? include('message.php'); ?> と書いて、メッセージを表示しています。 ここまでは、上手くいってるのですが、今度はmessage.phpを呼ぶときに 引数も一緒に渡したいのです。 例えばあるページから、message.phpを呼ぶ時は <? include('message.php?mode=1'); ?> あるときは <? include('message.php?mode=2'); ?> みたいな感じで呼びたいのですがエラーになってしまいます。 きっとmessage.php?mode=2というファイルを探しに行ってエラーになってしまってると 思うんですが、 こういう処理は実現可能なのでしょうか? 呼び元は全てhtmlです。includeする為に拡張子をphpに変えています。
>>24 それが、実際にテストしてみてもなにも変化しません・・
>>25 - bar.php -
$hoge = 'hello, world';
include 'foo.php';
- foo.php -
echo $hoge;
HTTPクエリにする必要なし
Include()文とインクルードしたファイルが置き換わると思えばOKだ
http://jp2.php.net/include
>>26 リダイレクトできないという意味?
とりあえずLocationヘッダが送信できてるかどうか確認してみなよ
エラー抑止してるならスクリプトの頭にerror_reporting(E_ALL)も追加
>>28 解決しました。
ソースが間違っていたのではなく、記述する場所が間違っていたようです(一番最初に記述したらリダイレクトできました。)
<html>
<head><title></title></head>
<body>
(中略)
ココに記述>
</body>
</html>
ありがとうございました。
30 :
29 :2005/09/25(日) 19:30:38 ID:???
すいません。間違えました 誤 <html> <head><title></title></head> <body> (中略) <?php ココに記述 ?> </body> </html> 正 <?php ココに記述 ?> <html> <head><title></title></head> <body> (中略) </body> </html>
>>29 HTTPのスペックではヘッダーフィールドの後にコンテンツがくることになっているので、
コンテンツを送信した後でヘッダーを送信することはできない。ヘッダー送信までコンテンツの
出力を遅延させたい場合は、アウトプットバッファリングを使用すると言うのがハウツー
コンテンツの送信後にヘッダーを変更しようとすると、本来Warningが出るよ
デバッグ時にWarningを抑止する真っ白画面に陥りやすいので要注意
×抑止する真っ白 ○抑止すると真っ白
>>31 そうだったんですか。
勉強になりました。
ご説明ありがとうございますm(_ _)m
>>25 message.phpの先頭に
$mode=1;
でいいのでは?
message.phpを呼び出す側にの間違いでは
どっちでもいいだろ
良くないね。
すんません、前スレの
>>970 は、あたしでした…m(__)m
次スレ、立てなくてすんません。
date('w', strtotime(now))で、1が返ってきました。
なので、曜日の配列を作っておけば月曜日が返ってくるので、成功です!
でも、元々のDBに入っているデータを"now"部分にいれると、やっぱりおかしいのです。
>>972 さんの言うとおり、MySQLのバージョンはMySQL 4.0.24-standard-logでした。
データの取得がおかしい?
でも、nowで取得した値のはずなんだけど…
セキュリティの関係上、エラーを画面に表示させずログに保存したいのですが、 display_errorsをoffにし、log_errorsをonに設定するところまではやりました。 ところでこのlogはどこに保存されていて、どうやったら見れるのでしょうか…??
設定次第
41 :
nobodyさん :2005/09/26(月) 05:02:26 ID:ngVBM4RI
SSIのことで質問です。 <!--#echo var="DOCUMENT_URI" --> とやると/hoge/hoge.shtml と結果が返りますが、/hoge/のフォルダ名で終わる形にはできないでしょうか? 教えてください。
42 :
nobodyさん :2005/09/26(月) 05:03:27 ID:ngVBM4RI
すいません誤爆しました
43 :
nobodyさん :2005/09/26(月) 08:14:36 ID:9OUzr1cB
セキュリティに関しての質問です。 例えば、PHPのログインフォームからIDとパスワードを使ってログインする方法と .htaccessでBASIC認証してログインする方法は、どちらがセキュリティ的に 高いと言えるでしょうか? 前者であれば各PHPファイルにログイン設定をしなければいけませんが、 後者なら.htaccessで制御するだけなので、非常に簡単です。 しかし、それだけで良いのかどうか迷っています。
>>43 どちらにせよセキュリティ重視ならSSLにするのは当然として、
どちらか選ぶなら前者。なぜなら誰がログインしたかが分かるから。
仮にパスワードが漏洩とか盗まれたりとかして不正アクセスがあっても、
同じログインIDで毎回リモホが変わってたらすぐ見つけられる。
>各PHPファイルにログイン設定をしなければいけません
こんなの簡単でしょ。ログイン時にセッション変数にログイン判定フラッグを格納しといて、
その有無を判別するif文を各スクリプトの先頭に書いとけばいいだけ。
>>43 BASIC認証もお手製認証も対して変わらないから、しっかりした認証の仕組みを作れるのなら、
付加的なメリットを組み込みやすいお手製でもいいんじゃないかな。
auto_prepend_fileを設定すれば、自動的にファイルを読み込んでくれるよ。
.htaccessで設定できるから、読み込み対象ファイルも指定できるし。
46 :
おれおれお :2005/09/26(月) 11:39:10 ID:???
>>46 スレ違いだという事に気づくぐらい知識をつけたら使えるよ。
48 :
おれおれお :2005/09/26(月) 11:47:44 ID:???
・・・ごめん、俺が間違ってた。
おまいやさしいな。
すいません、フォームから問い合わせがあったら自動返信メールを送るような スクリプトを作ったんですが、メールヘッダーの「差出人(from)」の 日本語が文字化けしたりしなかったりします。 まったく同じ条件でフォームからPOSTしてメールを送信してるのに、 文字化けするときもあればしないときもあります。 ということは、(自動)エンコードの際に判定を誤ってるのかとも思いますが、 自分の書いたソースを見直してもどこがマズイのかわかりません。
52 :
51 :2005/09/26(月) 12:39:31 ID:???
ソースは以下のような感じです。
$to_addr = $_POST['mail'];; //フォームからPOSTされたメアド
$title = "テスト件名";
$body = "テスト本文";
$headers = "";
$headers .= "Content-Type: text/plain; charset=ISO-2022-JP\n";
$headers .= "Content-Transfer-Encoding: 7bit\n";
$headers .= "From: ".mb_encode_mimeheader("テスト送信者",'ISO-2022-JP')." <
[email protected] >\n";
$headers .= "Bcc: <
[email protected] >\n";
$headers .= "X-Mailer: Test_Mailer\n";
$headers .= "Return-Path: <
[email protected] >\n"; // エラー時の返信先
mb_language("Japanese");
mb_internal_encoding("EUC-JP");
if ( mb_send_mail ($to_addr, $title, $body, $headers) ){
}else{
echo "<BR>送信失敗<BR><BR>";
exit;
}
53 :
51 :2005/09/26(月) 12:42:52 ID:???
>>52 すみません、1行目に「;」が2つありますが、これはここにコピペした際に
補足として行末のコメントを書いたときにミスって付けてしまいました。
実際のソースでは「;」はもちろん1つです。
54 :
nobodyさん :2005/09/26(月) 12:48:05 ID:l8/RJqBH
PHP Version 4.3.9です。
<?php
if($u) {
echo $u;
header("Location:
http://www.yahoo.co.jp ");
exit;
}
?>
index.phpで以上のコードを作成したのですが
echoで$uの値は表示されるのに
ロケーションでヤフーに飛びません。
PHPのバージョンなどが問題なのでしょうか?
宜しくお願いします。
57 :
54 :2005/09/26(月) 13:07:09 ID:???
>>58 インターネットでは7bitの文字コードでやりとりするのが標準なので、日本語の場合は7bitの「JIS(ISO-2022-JP)」という文字コードを使うよう定められている。Shift-JISやEUCは8bitの文字コードなので、送信の際、メールソフトがこれをJISに変換するのが普通だ。
つーか、文字化けするならコード変えるぐらい思いつけよ。
60 :
nobodyさん :2005/09/26(月) 13:47:34 ID:2nx2CLo8
エラーが出ずに真っ白画面が出ちゃうのは、何処を変えればエラーがきちんと表示されますか?
php.ini。Error handling and loggingのとこ
PHPのグラフ作成で日本語対応ライブラリはありますか? 誰か教えてください。
64 :
pc6.nucba-unet.ocn.ne.jprlo :2005/09/26(月) 14:06:36 ID:+wttJfxy
Anime Land-2004 otzoi
>>63 UTF-8で文字データを渡してやれば大抵のもので問題無く動作する筈なんだが...
具体的に使おうと思ってたライブラリの名前を出して解決策を聞いた方がいいんでないの?
ものによってできる内容が全然違うし。
>>59 の言ってることは間違い。
なぜなら、
>>52 のソースにはmb_language("Japanese") とmb_send_mailがあるので
「メールソフトがこれをJISに変換する」という動作は組み込まれている。
だから
>>59 の言ってることは的外れ。
というか、
>>59 はマルチバイト関数の動作内容を知らないのかね?
そのあとでEUCになってるようだが
視力検査みたいなミスだと思うが、興奮してるとわからんもんかねw
>>68 mb_internal_encodingはスクリプトのエンコーディングを決めるものだから
メール送信(mb_send_mailの動作)には関係ないよ。
いや、エラー状況を考えてコードをよく見ろって
73 :
67 :2005/09/26(月) 14:49:02 ID:???
>>68 「そのあとで」って、何の後で??
「JISに変換する」はmb_send_mail関数の動作だぜ。
mb_send_mailの「後」に何がある?
>>51 っていうか、本文や件名も文字化けしてんの?
書き込みを見る限り本文とかは文字化けしてないようだが、
もしヘッダの送信者の部分"だけ"が化けてんなら、原因は謎だな。
mimeエンコードもちゃんとやってるみたいだし。。。
76 :
nobodyさん :2005/09/26(月) 15:00:36 ID:eL6BgYRt
何度もすみません。 PHP+MySQLでの日付についてなのですが、 SQLで直接日付部分をNow()でインサートすると、date関数で正常な曜日が返ってきました。 と言う事は、PHP側で生成している日付がおかしいのだと思うのですが、 date('YmdHis', time())で得たモノを、一端、年・月・日…にmb_strcutで分けて、 DBに登録時に結合してるのがいけないのでしょうか…。 みなさん、PHP+MySQLで日付を登録させる時はどのようにしているのですか? (特に、好きな日付を登録したい時)
>>52 mb_send_mail使うんならContent-typeもContent-transfer-encodingも自動でつけてくれるので不要
mb_detect_orderの最初にメールの文字コードを書いておく
後はmb_languageをJapaneseかjaにしておけば自動的にメールの文字コードを判別してJISに変換してくれる
79 :
51 :2005/09/26(月) 16:01:09 ID:???
>>74 本文や件名は化けません。ヘッダーの差出人のところだけが、たまに化けます。
また、まったく同じ条件でも化けるときと化けないときがあり、再現性が分かりません。
>>78 >mb_detect_orderの最初にメールの文字コードを書いておく
これはつまり、メールの本文がスクリプト内に書かれている(=スクリプトのエンコードで書かれている)なら、
mb_detect_order(EUC-JP,・・・)と書けばいいわけですよね?
mb_detect_orderは今のところ記述してませんが、
それでも文字化けせずに送信できることもあるのは何故なのでしょうか。
(というか、文字化けすることのほうが少ない)
EUCにこだわる理由は?
>>76 オレの場合。
DB鯖側での時間(=SQL文による時間取得/挿入)の場合はdatetime型。
Web鯖側での時間(=PHPのdate()やtime()による時間制御)の場合はint(10)型。
全ての時間をどちらでとるかは1つのシステムで一意にしといたほうがいい。
NOW()を多用するのが楽ではあるんだが、システムを作る上で業務として
よく用いるのは後者だったりする。他にデータを持っていっても柔軟に扱えるため。
テストなんかもしやすいしね。
当たり前だけど、相互変換可能な範囲のデータであれば表現形式はどれでも同じだよ 入力をdate()でやるのはロケールが欠落するから完全ではない場合もあるが
83 :
76 :2005/09/26(月) 16:59:56 ID:???
DBの型を、TIMESTMPからDATETIMEに変更したところ、
うまく行きました。
問題は型だった?
PHP側での処理は、time()だったので、
>>82 さんの言うのは当てはまらない??
んんんんー、謎です。
何が悪かったのでしょうか。
allow_url_fopen がonだとかなり危険ですか? それともphpスクリプト自体が問題なければ、心配する必要は なしでしょうか?
あんたうざいから俺にはレスしなくていいよ
>>76 に回答したわけじゃないし
>>85 誰もお前にレスしてないが?
ていうか、お前誰だ?
>>84 まあ他人に使われないならないんじゃない
悪用の仕方はリモートファイルを読み込んでeval()で実行させるとか
串代わりにするとかだろうから
あるページ(同一ドメイン)にPOSTでデータを渡して表示したく、 cURLライブラリを使って実装しました。 ですが、セッションIDが全く別のものとなっていて、実装したいことができなく悩んでいます。 $header = "Set-Cookie: PHPSESSID=" . session_id(); curl_setopt($ch, CURLOPT_HTTPHEADER, array($header)); のようにして、セッションを渡してみたのですが、うまく行きません。 どうにかして、同じセッションIDで実装したいのですが、解決策はないですか。 環境:PHP5.1b3, apache1.3.3, windows
よくわかんないけど、session_id()コール時のが正しいのに 実際送ったら上書きされるようなかんじ?
91 :
89 :2005/09/26(月) 17:57:49 ID:???
>>90 そうです。
送信側と受信側でsession idが全く別のものとなってるんです。
受信側はアクセスごとにsession idが違うものになってます。
92 :
nobodyさん :2005/09/26(月) 18:12:25 ID:tV04tbjf
93 :
51 :2005/09/26(月) 18:15:23 ID:???
>>80 スクリプトをEUCで書いてるからです。
というか、こだわるも何も、mb_send_mailで結局JISになりますよね?
>>91 CURLをクライアントに使ってるなら、リクエストで“Set-”Cookie:ておかしくないですか
CURL的なクッキの送り方は判らないけど、Cookie: PHPSESSID=〜
まぁ、そのなんだ、 // ケース1 set // mb_language("Japanese"); mb_internal_encoding("EUC-JP"); $header = mb_encode_mimeheader("テスト送信者",'ISO-2022-JP'); // ケース1 out print($header); // ケース2 mb_language("Japanese"); mb_internal_encoding("EUC-JP"); // ケース2 out print($header);
まだやってんのか
>>84 自分で書くスクリプトで問題が出るような作りをする香具師は
全体的に悔い改めるべきだと思う。ポカミスじゃなくて
理解不足の致命的なミスで危険な問題だから。
よく共有サーバでOffにした方が...という話も聞くが
そんならもっとPHPの動作環境を根本的に見直せと。
PHPを実行することで、でサーバのコマンドを打ったり出来るのでしょうか? mkdirとかuseraddとか。出来るなら、その書き方がわかるサイトなどを 教えてもらえますか?ぐぐっても参考とするところが見つからなくて・・
>>97 そう熱くなるな。
関数の良し悪しじゃなく使う方のロジックの問題なのは誰も分かってるのに
どっかにサンプルコードあったからーとか安易に考えてるのが問題。
例えばinclude $_SERVER[REMOTE_ADDR'];は無問題だが
それをロジックで示せる人間は割と少ない希ガス。
>>98 おまいは示せそうにないな。
glob()関数は、'*'はサポートしてますが '**' はサポートしてないようです。 ('**' は、ディレクトリ階層を再帰的にたどってくれるパターンです。) これをサポートした関数ってありますか。 Rubyならできるとかいわれたんですけど、PHPでやりたいです。
<li>を一行ずつ分割したいのですが、うまく出来ません。 正規表現が間違ってますか? <?php $date = "<li>aaaaaaaa</li><li>bbbbbbbb</li><li>cccccccc</li>"; $ary = split('<li>.*</li>', $date); print_r($ary); ?>
>>103 具体的にどう書くか教えていただけませんか?
105 :
軟式PHP :2005/09/26(月) 23:11:52 ID:???
>>104 <?php
$date = "<li>aaaaaaaa</li><li>bbbbbbbb</li><li>cccccccc</li>";
preg_match_all("/<li>.*?<\/li>/",$date,$reg);
print_r($reg);
?>
簡単にだけど。
>>105 勉強になりました。ありがとうございます。
108 :
nobodyさん :2005/09/27(火) 06:17:35 ID:CN65Gin9
phpでMySQLを利用したいので、php.iniのextension=php_mysql.dll を有効にして、php.iniを保存しました。 Apacheを再起動して、<?php phpinfo() ?>をブラウザからアクセス するとMySQLの項目が表示される、と思うのですが 私の場合、Apacheを再起動すると、「php_mysql.dllがありません。」 のようなことをPCが叫びます。 どうしてでしょう?原因がさっぱりわかりません。ご教授くださいませ。
109 :
nobodyさん :2005/09/27(火) 06:50:18 ID:NWOBxAVj
php_myspl.dll 無いと言われる
110 :
nobodyさん :2005/09/27(火) 06:52:18 ID:NWOBxAVj
php_mysql.dll 無いと言われる
>>108 dllということはWindowsのようですからPHPを解凍したディレクトリにあるlibmysql.dllというファイルをシステムディレクトリ(例:C:\WINDOWS\system32\)にコピーすると幸せになれるかもです。
更新日時を表示するコード <?php echo date('m/d', filemtime('../xxx/zzz.log') ) ?> なんですが、 色々なディレクトリに存在する複数のファイルを参照して、 いずれかが更新されていればその日時を表示させる、 というようなコードはないでしょうか? ../xxx/zzz.log 2005/09/25更新 ../../yyy/yyy.dat 2005/01/01更新 ./www.log 2005/09/26更新 ↓ ./www.log の更新日時を表示
「いずれかが更新されていればその日時を表示させる」と書いているが 何をもってして「更新されている」と判断するのかが分からない。
114 :
nobodyさん :2005/09/27(火) 10:50:45 ID:B3+8rfdN
stripslashes と stripcslashesの違いって何ですか? stripslashes バックスラッシュが取り除かれた文字列を返します。(\' が ' になるなど) 2つ並んだバックスラッシュは1つのバックスラッシュになります。 stripcslashes バックスラッシュを取り除いた文字列を返します。C言語と同様に \n, \r ..., 8進表現, 16進表 現を認識します。 という説明があったのですが、よくわからないです。
>>112 >色々なディレクトリに存在する複数のファイルを参照して
ループ処理 + readdir 関数で1ファイルづつ舐めながら、
>いずれかが更新されていれば
基準となる UNIX 時間か何かと if 比較して
>その日時を表示させる、
date('m/d', filemtime('../xxx/zzz.log')
ってのは、そんなに難しい事なの?
>>114 addslashesとaddcslashesの違いから見れば分かりやすいかも。
>>114 >stripcslashes
手元の教科書には addcslashes 関数でクォートされた文字列をアンクォートする
って書いてある。用途別って事かと。
>>112 >>115 でも書いてる通りの方法だけど。
$files = array('../xxx/zzz.log','../../yyy/yyy.dat','./www.log');
forerach($filelist as $value) $filemtimes[] = filemtime($value);
sort($filemtimes,SORT_NUMERIC);
echo $filemtimes[0];
120 :
119 :2005/09/27(火) 11:03:36 ID:???
ゴメン、変数名がテキトーになりすぎた。。。 $files = array('../xxx/zzz.log','../../yyy/yyy.dat','./www.log'); forerach($files as $value) $filemtimes[] = filemtime($value); sort($filemtimes,SORT_NUMERIC); echo $filemtimes[0];
htmlのinputタグのname属性がxhtmlだとid属性になっちゃうんだけど php/4.3.11にPOSTしたときの連想配列ってid属性じゃ受け取れないみたいで、将来的にどうしたらいいの?
nameもidも同じもの振っとくとか?
xhtmlは触ったこともないんでよく知らないけど
XTML1.1のDTDから
ttp://www.w3.org/TR/xhtml-modularization/DTD/xhtml-form-1.mod をDLしてくると、
<!ENTITY % InputType.class
"( text | password | checkbox | radio | submit
| reset | file | hidden | image | button )"
>
<!-- attribute 'name' required for all but submit & reset
-->
とあるから、nameを使ってええんでないの?
>>115 >>120 ありがとうございます。(--ゝ
参照するファイル数が増えると、多少読み込み時間は長くなりますかね?
>>120 氏のコードは.phpとして保存して、別のphpのhtml部からincludeさせるというような方法でいいんですよね?
>>113 スミマセン。 「複数のファイルを参照して、更新日時の一番新しい物を表示」
の間違いでした。(汗
>>120 そんなとこでsortしないほうがよか
foreach($files as $value) $mtime = max($mtime, filemtime($value));
>>125 うむ。
PHPってのはアルゴリズムなんてそっちのけでも書けてしまうんだな、と実感させる一件だな。
127 :
115 :2005/09/27(火) 17:36:05 ID:???
>>125 うおー。max 関数を使って、そういう事ができるのか。
趣味でチマチマと PHP やってる程度の自分にとっては、目から鱗です。
また少し、書くスクリプトに幅を出せそう。
一番古い時はINT_MAX無いからどれか1つ初期値に入れるしかないのかな。
>>128 filemtimeがfalse返したとき0に評価されるからそこも注意
>>125 foreachでこの一行構文もいけるのか・・・。
ifでは使ってたけど。
あとwhileもいけるぞ。
>>128 つ[ define('INT_MAX', ~0 >> 1); ]
ってやろうとしたらならねーー on_
file()やcopy()などを使う時もロック用ファイルを用意して。ロックした方がよいの?
>>134 ぶっちゃけ、処理内容によるが
それだけだとロックしなくても良いんでない?
>>137 たとえば、DBから情報を取得してから、そのあとに長い処理が続く場合とか。
ほら、気持ち的に切っといたほうがいいだろ。
難しい話はしても分からんと思う。
139 :
nobodyさん :2005/09/28(水) 11:32:02 ID:dxIsb4Ke
phpで動的に作成したページを個人データごとに印刷したいと思ってますが 1枚ずつというのは手間がかかるのでまとめて処理する方法があれば 教えてください。
140 :
nobodyさん :2005/09/28(水) 12:08:28 ID:oH6eqvtc
pearを使いメールを送信しようとしています。 Mail_mimePartを使いメールのエンコードをやってみました。 使ってみると、setTxtBodyで指定したメール本文が反映されずbodyの 値が入っていませんでした。 どなたかMail_mimePart::encode()の使い方、または参考になりそうなページを ご存知の方いませんか?
141 :
nobodyさん :2005/09/28(水) 12:22:48 ID:b9i0UmwQ
クラスファイル名はHoge.class、Hoge.php、Hoge.class.phpではどれが普通なんですか? 自分はHoge.classなんですが。
どれが普通ってことはないんじゃない? エディタが拡張子で色分けとか判別する場合、.classだとJavaのソースとごっちゃになるから漏れは.class.phpにしてるけど。 まあフレームワークとか配布されてるコードでは.class.phpが一番よく見かける罠。
サーバーの設定によっては、.php以外だと、直接叩かれると、 テキストとしてソース垂れ流しちゃう危険性もあるから、.phpで終わらせるのが普通。 *.inc.php *.class.php *.conf.php とかかな。
簡単なグループウェア作成するにはどの言語がいいですか?
>>144 ここに来たということはPHPと言ってほしいのか?
146 :
134 :2005/09/28(水) 13:54:11 ID:???
>>135 そーなんだー、勉強になったよ、レスありがとう。
147 :
nobodyさん :2005/09/28(水) 13:54:56 ID:oiijkcif
HTMLを出力する際には以下の方法だとどれが一番 サーバーに負荷をかけなくてすむのでしょうか? 1、 echo"こん"; echo"にちわ"; 2、 echo"こん". "にちわ"; 3、 $html .="こん"; $html .="にちわ"; echo $html; 4、 echo <<<EOD こん にちわ EOD;
?> こんにちは <?php
149 :
nobodyさん :2005/09/28(水) 14:57:24 ID:oiijkcif
>>148 ありがとうございます
そちらの方向で行きます
151 :
150 :2005/09/28(水) 17:13:12 ID:???
は。 普通じゃんね。 あほだな俺。 スルーしてください(鬱
便乗だけどそれがたくさん出てきても同じなの? ?> あほ <?php 処理 ?> あほ <?php 処理 ?> あほ <?php 処理 ?> あほ <?php みたいな。
ブラウザからソースを見た時にhiddenの値がわかるのが嫌なので、下記のように書きました。 <? echo"<input name='test' type='hidden' value='テスト'>"; ?> でも、echoなので書き出され、表示されます。 何か良い方法、書き方はありませんでしょうか?
結局何がしたい?
>>154 hiddenの値をソース上では隠したいです。
>>155 セッション変数あたりを勉強すればいいと思う
157 :
nobodyさん :2005/09/28(水) 20:01:23 ID:qeEepy5X
他のphpをincludeして出力された結果を、 変数に格納したいのですがどうすればいいでしょうか?
うーん・・・
includeして出力された結果、って意味が分からんもんなあ・・・。 これだけ書いとけばヒントになるかな? ---included.php--- <?php $string = 'テラワロス'; ?> --show.php-- <?php include 'included.php'; echo $string; // “テラワロス”が出力される ?>
取得したIPアドレスを許可IPリストと照合して マッチしたらスクリプトを終了。しなかったらURLにリダイレクト。 というような機能のスクリプトを書いたのですが、「211.102.103.65」の 最後の二桁の数字(65)が変動するので変わるたびに新しくリストに 登録しなければいけません・・・ 後ろ二桁の「65」がマッチしていなくても「211.102.103」の部分がマッチすれば TRUEを返すようにしたいのですが、どのようにすればいいのでしょうか? よろしくお願いします。 ソースは次にかきます↓
<?php
//許可IPリスト
$ip_list = array("211.102.103.65",
"216.102.103.65",
"208.102.103.65",
"201.102.103.65");
$url = "
http://hoge.org "; //リダイレクトするURLを変数に代入
$get_ip = $_SERVER['REMOTE_ADDR']; //取得したIPアドレスを変数に代入
//IPアドレスのチェック
foreach ( $ip_list as $value ) {
if (ereg ($get_ip, $value) ) {
exit;
}
else {
header ( "Location: $url" );
}
}
?>
正規表現
163 :
157 :2005/09/28(水) 21:53:48 ID:???
説明不足ですいませんでした。 phpファイルにはスクリプト以外にhtmlソースも混ざっていて、 それの出力結果を変数に入れるということです。
>>160 後方一致なんかでよければ、正規表現使うよりもstrstr。
>>161 なんでeregを使ってるのにわざわざそれを無視するような使い方してんだ?
っ ip2long IPv6は扱えないけど
PerlでNet::CIDR::Liteモジュール。
>>163 ob_start();
include('includefile.php');
$data = ob_get_contents();
ob_end_clean();
170 :
157 :2005/09/29(木) 06:03:27 ID:FSfI9Iaf
>>169 さんのレスにより、無事解決しました。
ありがとうございました。
171 :
nobodyさん :2005/09/29(木) 10:06:58 ID:M2gqALef
エラーハンドラ関数(set_error_handler で指定された関数) の内部でエラーを発生させても 無限ループしないのは何故ですか? 上の例では foo で発生したエラーに対してエラーハンドラ関数が適用"されない"のに対し、 下の例では var で発生したエラーに対してエラーハンドラ関数が適用"されます"。 ぶっちゃけこういう仕様のほうがプログラミングが楽ちんなんですけど なんか仕組み的に納得いかないもので。 ------------------------------------ function foo(){ $x = 1 / 0; } set_error_handler('foo'); $a = 1 / 0; restore_error_handler(); ------------------------------------ ------------------------------------ function foo(){ echo 'ERROR'; } function var(){ $x = 1 / 0; } set_error_handler('foo'); var(); restore_error_handler(); ------------------------------------
172 :
nobodyさん :2005/09/29(木) 11:56:56 ID:7Ojuf/BR
>>161 性器表現できないなら、explodeで前3つ保存すれば?性器表現を勉強するんだな。ユーザーエージェントとホストで弾けばいいんジャマイカ?
環境的なことをきいても大丈夫ですか? php.iniまわりの話なんですが
質問です。 GDライブラリを使って画像出力をしてます。 沢山の図形や線を様々な色を使って描画するのですが、 一定数以上の図形を出力すると、 図形そのものは表示されるのですが図形の色が途中から全て同じになります。 phpの初期設定周りが原因なのでしょうか。解決出来ず困っています。
メモリ不足なんじゃ?
>>176 それも疑ったんですが、結構積んでるのでその心配はないかと。
CGIとして動かしてるので、
apacheとか別の所で引っかかってるんでしょうか...。
>>177 メモリ積んでてもphp.iniで制限してたら意味なし
memory_limit = 500M
とかやっとけ
>>175 くだらない質問じゃないから、も少し詳しい状況と
実際に使ってる環境とスクリプトソースをMLに投げたら?
ここでもいいけど追試してくれる母数が大きいところで調べた方がいいと思う。
180 :
nobodyさん :2005/09/29(木) 18:48:39 ID:6Acw6xK3
質問です。 $val_tmp2 = 'ポストする文字列 項目1(タブ)項目2 111(タブ)222'; $val_tmp2 = urlencode($val_tmp2); $val_length = strlen( $val_tmp2 ); $val_tmp1 ='POST /recive.cgi HTTP/1.0 Content-Type: text/csv User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322) Host: hoge.hage.com content-length:' . $val_length'; $val_out = $val_tmp1 . "\n\n" . $val_tmp2; $val_sock = fsockopen( 'host_name', 80, $val_error_no, $val_error_msg, 120 ); if( $val_sock == false ){ print "bom1<BR>\n"; exit( 1 ); } $val_ret = fwrite( $val_sock, $val_out ); fclose( $val_sock ); としたのですが、どうしてもval_tmp2の値が受け側で取得できません(それ以外はOKでした) どのようにしたら取得できるでしょうか?
>>178-179 有り難うございます。
メモリの設定値をいじってもダメでした。
MLに質問してみます。
>>180 > $val_out = $val_tmp1 . "\n\n" . $val_tmp2;
ここの\n\nでHTTPヘッダが終了してるんじゃないの?
>>180 PHPで受け取るならname=value&name1=value1の形式で
Content-type: application/x-www-urlencoded
がないと$_POSTには入らない
で$_POSTになければ$HTTP_RAW_POST_DATAを見てみたらあるかも
Content-type: application/x-www-form-urlencoded だった
185 :
180 :2005/09/29(木) 19:58:12 ID:???
>>183 氏
ありがとうございます。
しかしダメでした…
調べたところ、STDINには入っているので、最悪そちらを使えばいいかなとも思っています。
しかし正常に動かないのは癪なので、もしわかる方がいたら教えてください。
>>185 reciev.cgiはPHPなのか
PHPならContent-typeがapplication/x-www-form-urlencodedかmultipart/formdata以外のときは$HTTP_RAW_POST_DATAにPOSTデータが入る。
application/x-www-form-urlencodedかmultipart/formdataのときはその仕様に合ったデータじゃないとダメ
Perlなら何も考えずSTDINから読み込めばいい
187 :
180 :2005/09/29(木) 21:10:24 ID:???
>>186 氏
失礼しました、中身はphpです。
で、cgiとして動かしたところ、HTTP_RAW_POST_DATAがどうしてもとれませんでした。
cgiでは無く、phpとして動かすとなんの問題も無く取れたのですが…。
もしかしたらサーバの設定とかそういう話なのかな、と思ったのですが、
ちょっと今のところわからないので、とりあえず保留にしました。
しかしどうにかデータの取得自体は出来たので、なんとかなりそうです。
ありがとうございました!
質問です。
sample.phpに
switch ($_GET['id']) {
case "1" : $sql="WHERE id=1";break;
case "2" : $sql="WHERE id=2";break;
case "3" : $sql="WHERE id=3";break;
default : $sql="";
と記述してあるとします。
この時、ブラウザから
http:// 〜/sample.php?id=2と入力すると、
idが2のデータが出力されますよね。
上記の例の様に3件程度ならcase文でも構わないのですが、
仮に300件とかある場合、case文で300行書くのは非効率の様に思えます。
ここのidの部分を動的に変更する事は出来るのでしょうか?
例えば
if($_GET['id']){ $sql="WHERE shop_id=$_GET['id']";}
みたいな感じで、受け取ったidをWHEREで使う様なやり方です。
ちなみにこのまま命令文は、エラーがあるらしく何も表示されませんでした・・・。
PHP Version 4.3.10、MySQL 4.0.20という環境です。
どうか宜しくお願いします。
>>188 $sql="WHERE shop_id={$_GET['id']}"
でも、とっても危険だよ。。
>>188 ?id= の後ろにセミコロン入れられると、悪い人の任意のSQLをさしこまれちゃうよ。
UPDATEとかDELETEとか。
こうしな
$sql = "WHERE shop_id=" . (int)(@ $_GET['id']);
まあゼロをどう扱うかは自分で調節して。
191 :
188 :2005/09/29(木) 23:02:17 ID:???
>>189 早速のお答え、どうもありがとうございます。
ちゃんとidが動的に切り替わり、表示される様になりました。
・・・ですが、「とっても危険」という言葉が非常に気になっています・・・。
何がどういう点で危険なのか教えて頂けないでしょうか?
また、危険にならない代替案ってあるんでしょうか?
質問ばかりでスイマセン・・・。
192 :
188 :2005/09/29(木) 23:04:02 ID:???
>>189 =190
書き込みが重なってしまった様で申し訳ありません。
アドバイス、どうもありがとうございました。
>>191 $_GETには任意の文字列を入れることが出来るから、「;」で区切って
次のSQL文を自由に入れられてしまう。そうなったら編集も削除も思いのまま。
だからSQL文に渡す場合は何かしらのフィルタリングを自分ですることになる。
(今回の場合は数字以外の文字列があったら消すとかエラーで弾くとか)
この辺は自分で勉強しないと身に付かない。勉強が嫌なら下手に触らない事。
お聞きします。 掲示板や、メールフォームですぐに送信させずに 入力画面→確認画面→送信完了画面という3ページの構成だったとします で、確認画面でやり直しをしたい時、ブラウザの戻るもしくはhistory.back関数で 戻ったときに、フォームに入力した内容を保持させるためにはどうすればいいんでしょうか?
>>194 ブラウザのキャッシュの問題だから確実な解決手段はない
>>195 さん
なるほど。
こちら側でキャッシュさせるようにすれば、少しは確実になるってことになるってことですかね。
session や、hiddenか何かでやるかと思ってました。
ありがとうございました(・∀・)
>>191 SQLインジェクション でググると色々出てくるので、質問よりそっち見たほうが早い
・・・確か価格.comの件ってこれだったよな?あの件以来価格.comに登録してあった
アドレスにspamが来るんだが・・・
>>196 どうしてもやりたいなら「前の画面に戻る」リンクを作り、そこで戻させるように
するしかない。それでもブラウザの戻るで戻られたら意味がないけど。
そういやFirefoxだとブラウザの戻るで戻っても残ってたな・・・
>>197 俺もspam来てる。
そりゃ、0day-attackとかなら許せるけど、SQLインジェクションとか・・もう馬鹿かと・・・。
きっと他にも大量に穴があったんだろうなぁ。
>>196 逆だと思うぞ。
確実にやりたいなら、クライアントの挙動に期待などせずに(つまりキャッシュなぞ”させない”)
サーバ側で言うとおりセッション何ぞで管理するこった。
>>191 とにかくGET POST COOKIEは入力値をチェックしてから使え
if (strstr($_GET['id'], ";")) { echo "氏ねバカアホ"; exit; }
elseif (!is_numeric($_GET['id'])) { echo "いたずらはいやずら"; exit; }
201 :
nobodyさん :2005/09/30(金) 08:33:55 ID:FAEPRLcc
何処に依託してたのか非常に気になる所ですな。
まぁ、安く仕上げようと適当な中小使ったんだろ。>>価格.com
>>188 お前とりあえずPHPの参考書をせめて2〜3冊は読んでみろよ。
基礎の基礎を知らずにやってても上達しない。
セキュリティ対策云々とかの前に、idに変数を代入するというような
プログラミングにおける超基本的な思考が出来てない。
この調子じゃ配列なんか絶望的だな。
205 :
名無したん(;´Д`)ハァハァ :2005/09/30(金) 13:37:42 ID:kjDGUNft
preg_nantoka() で使える正規表現 の \w は [a-zA-Z0-9_] と等価という認識で問題ありませんか?
copy関数は同時にアクセスあれば壊れる可能性は少なからずある?
あ、コピー先のファイルがってことです。
少なからずあるといえばあるが、可能性は限りなく少ない
210 :
188 :2005/09/30(金) 14:48:49 ID:???
>>193 >>197 >>200 >>203 大勢の方からのアドバイス、本当に感謝しております。
一度基本から、じっくりと勉強し直してみる事にします。
さっそく今日辺り、
「基礎PHP」か「はじめてのPHP言語プログラミング入門」でも
買ってこようかと思います。
親身なご指導、本当にありがとうございました。
>>207-209 どうでもいいけど、最近ネット上でもリアルでも「少なからず」と「少なくとも」の意味をごっちゃに使ってる香具師を少なからず見かけるな。
「少なからず」は少なくはないって意味なんだが。
まあ言葉の意味なんて時代と共にうつりかわっていくのかね。
スレ違いな話でスマソ
212 :
軟式PHP :2005/09/30(金) 15:54:03 ID:???
爺乙。
掲示板、チャット等をCSVファイルを使って作るのは、時代遅れなんですか?
214 :
nobodyさん :2005/09/30(金) 16:00:18 ID:0T6o3fdx
文字列の"false"をbooleanのfalseとして認識させるには、 自分でチェックするしかありませんか?
215 :
軟式PHP :2005/09/30(金) 16:02:04 ID:???
>>213 時代遅れってこともないけど、環境によっては仕方ないんじゃないのかな。
データベースが使える環境なら、絶対使ったほうが開発は楽。
シリアライズを使って作るのもありじゃないかなぁと思うけど
ログが多くなってきた場合のアンシリアライズの速度や、
過去ログ管理が面倒さが気になるけどやったことないので分からない。
>>210 PHPもだが、今回の場合はMySQLの話も関わってるのをお忘れなく。
>>211 >少なからずあるといえばあるが、可能性は限りなく少ない
これを211の言うように置き換えると、
少なくはないがあるといえばある
あれ、何処が問題なんだ?
やばい俺日本人じゃないのかも。
220 :
207 :2005/09/30(金) 17:41:36 ID:???
>>209 そうですか、了解しました。レスありがとうございました。
エラーがでます。どこが間違ってますか? <?php $date = "<li>aaaaaaaa</li><li>bbbbbbbb</li><li>cccccccc</li>"; if(eregi("/<li>.*?<\/li>/",$date,$ary)){ print "$ary[0]"; } ?>
>>162 ,164,166,172
ありがとうございます。
正規表現勉強してみようと思います。
>>215 ご丁寧にありがとうございます。
参考になりました。
>>223 ありがとうございます。エラーは解決できました。
でも、【<li>aaaaaaaa</li>】だけとりたいんです、
最短マッチができません。
>>225 正規表現が苦手ならsubstr辺りで処理すればいい。
正規表現を勉強したくてやっているのなら丸投げするな。
ランダムな文字列を生成するスクリプトを書いたのですが、もっと簡単な方法はないでしょうか? <?php $number = array ("1","2","3","4","5","6","7","8","9"); $alpha = array ("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o", "p","q","r","s","t","u","v","w","x","y","z"); shuffle ($number); shuffle ($alpha); echo ("<br />"); foreach ($number as $value_number){ echo ($value_number); } echo ("<br />"."<br />"); foreach ($alpha as $value_alpha){ echo ($value_alpha); } ?>
>>228 何がやりたいのかイマイチ分からんが・・・
<?php
echo '<br /'>',
str_shuffle('123456789'),
'<br /'>', '<br /'>',
str_shuffle('abcdefghijklmnopqrstuvwxyz');
?>
>>229 ありがとうございます。
str_shuffle関数は下記のようにまずシャッフルして、それから出力といった使い方はできないんですね(´・ω・`)
<?php
$alpha = "abcdefghijklmnopqrstuvwxyz";
str_shuffle($alpha);
echo ($alpha);
?>
filesize関数でキロbytes単位で表示できるものはないですか?
>>230 文字コードをランダムに作ってchrで出力すればええんちゃう?
>>229 海胆食いD、もといuniqidでは駄目なん貝?
>>231 取得した後に1024で割ればいいと思うのだが
>>234 ありがとうございます。
小数点以下を切り捨てる場合はどのようにすれば良いんでしょう?
$total += (filesize($afn)/1024);
こんな感じでやってるんですが
round関数か(int) てか検索しろよ
>>230 あ、
>>229 は余計な'があったな(試してないのバレバレ・・・)。
str_shuffle()のマニュアルを読めば判ると思うが「適当に入れ替えた文字列を返す」だから、
$alpha=str_shuffle($alpha);
で済むのではないかと。
>>219 >少なからずあるといえばあるが、可能性は限りなく少ない
少なくないが、限りなく少ない。
239 :
239 :2005/10/01(土) 04:07:40 ID:???
<?php $logfile = "./counter.log"; $cookiename = "mycookie"; $counter = 0; if( $fn = @fopen($logfile,'r')){ $counter = trim(fgets($fn)); fclose($fn); } if(!isset($_COOKIE[$cookiename])){ $counter++; setcookie( $cookiename,$counter); if($fn=@fopen($logfile,'w')){ fwrite($fn,$counter); fclose($fn); } } ?> <html> <body> <?php if($fn= @fopen($logfile,'r')){ $counter=trim(fgets($fn)); fclose($fn); } print($counter."人目です"); ?> </body> </html> を実行すると、
240 :
239 :2005/10/01(土) 04:10:56 ID:IQUyxXuW
Warning: Cannot modify header information - headers already sent by (output started at C:\04WebServer_182\04WebServer\DocumentRoot\p.php:1) in C:\04WebServer_182\04WebServer\DocumentRoot\p.php on line 11 46人目です ↑こんなんが出ます。 HTTPヘッダが送られた後にクッキーを送ろうとしてるので、こんなエラーが出るのだと解読しましたが、 当たっていますか? また、解決するにはどうすればいいでしょうか?
初期段階の質問なんですが、phpとapacheの連携がうまくいきません。 本にそってapacheはちゃんとインストールできて、「予想に反してー」ページが出ます。 phpもインストールでき、php.iniを/usr/local/libに置いています。 httpd.confにも AddDefaultCharset none と AddType application/x-httpd-php .php を追加しています。 しかしphpにブラウザでアクセスしてもダウンロードダイアログが出てしまいます。 apacheも再起動してます。何か他の問題は考えられますか? apache2.0.53 、 php5.0.4 FedoraCore4です。よろしくお願いします。
>>240 正解。クッキーはHTTPヘッダの中にSet-Cookie: mycookie=239の形で埋め込まれる。
1行目でヘッダ以外のものを出力したのでPHPの中の人はヘッダが終了したと思っている。(output started 〜 p.php:1 の部分)
うちでは問題なく動作したよ。「 <?php」てな感じにスペース1つを追加したら同じwarningを出せたけども。
> PHPの中の人 ワロス
2ch初心者ですか?
サーバーにアップして実行すると、Parse errorが出たので、 提示された行付近をチェックしたのですが、エラーの原因がサッパリわかりません。 ごく普通のswitch文なんですが、何がいけないのでしょうか? switch( mysql_num_rows($sql_result) ) { case 0: $id_result = ""; break; default: $id_result = ""; ←ここがダメと言われる } ちなみに、問題の行をコメントアウトしても同じ行数でエラーが出ました
全角スペースでも紛れ込んでるんじゃないの。 または括弧の対応とかさ。
中の人は性格が几帳面だからな。
>>246 Parse error: parse error, unexpected '}' in
てな感じで、何が不適切なのかもでてるでしょ?それも参考にしる
250 :
246 :2005/10/01(土) 13:04:54 ID:???
秀丸でスペースの表示してみましたが、全角スペースが紛れ込んだりはしてませんでした。 試しに、switchを丸ごとコメントアウトして実行するとエラーが出ませんでした。 一体全体何が・・・ eclipseでやってるので、括弧の対応不一致とかも無いです
251 :
246 :2005/10/01(土) 13:05:51 ID:???
>>249 それが出ればいいんですが、
Parse error: parse error in ファイル名 on line 63
しかでないんです・・・
>>246 PHPのアクセラレータかオプティマイザの所為かもしれない。
phpinfo()でインストールされてないか確認。
253 :
246 :2005/10/01(土) 13:25:13 ID:???
>>252 Zend Extensionとか、PHP Extensionとかのことでしょうか
>>246 > サーバーにアップして実行すると、Parse errorが出たので、
これってローカルで試した時はエラー無しでアップしたらエラー出たって意味か?
>>232 ,236,237
ありがとうございます。
目的のスクリプトが書けました。
256 :
246 :2005/10/01(土) 16:18:25 ID:???
>>254 いえ、書いてあるそのままの意味です
ローカルで実行する環境作ってないので
で、自己解決しました。
上に抜き出したソースは空文字列にしてますが、
実際にはcase 0 と default で、$id_resultにそれぞれ違う文字列を代入してたのですが
その文字列の内容を変えたら動くようになりました。
文字コードの問題なのでしょうか・・・
とりあえず、お騒がせしました。
正常に動作するコードなのに、原因を教えてくれって言ってたのかい┐(´ー`)┌
直すまでは正常に動作しないコードではあるんじゃ?
259 :
nobodyさん :2005/10/01(土) 17:04:31 ID:eDSneZeH
ApacheのDSOとIISのISAPIは似た技術と考えていいのでしょうか?教えてください。 また、WebサーバとしてApacheを用いた場合とIISを用いた場合ではPHPの挙動にどのような違いが出るのか教えていただけないでしょうか?
>>259 ApacheのSAPIとIISのISAPIは似たような技術だけど、
ApacheのDSOってのは全然ジャンルが違う。
そもそもそんな比較が出てくる時点で
「CGIとPHPは違うの?」並に理解不足と思われ。
261 :
259 :2005/10/01(土) 18:13:42 ID:???
>>260 すみません。こんな理解不足の僕がこの辺の知識を得るために読むべき本やサイトを紹介していただけたらありがたいのですが…。よろしくお願いいたします。
sechoって何ですか? リファレンスマニュアルにもないような・・・・
264 :
780 :2005/10/01(土) 21:08:23 ID:???
>>263 そのようでした^^;
ありがとうございます(その発想ができなくて悶絶してましたorz
↑よそスレのコテつけっぱでした ゴメソ 262でしたorz
ディレクトリの一覧を表示させたのですが、 ローカル環境とサーバー環境で並び方が違います。 ローカルではabcの順に並んでるのですが、鯖側では規則性が見つけられませんでした。 何が問題でしょうか。
自分でソートしないと駄目。 フォルダ操作は環境依存。
質問です。 $comment = preg_replace("/\n{2,}/", "\n\n", $comment);//2行以上の改行を2行に 上記のはわかるんですが、掲示板のコメントとか名前を改行禁止(改行しても一行表示)にしたいのですが… どなたか教えて下さい
>>268 君、応用力ないなぁ…
つ[$comment = preg_replace("/\n/", "", $comment);//改行を削除]
while ($i = fgetcsv($fp, 1000)) { 処理 } これは $i に値が存在する場合TUREを返し、ループ。 値が存在しない場合はFALSEを返すからループ停止。 という意味でOKですか?
まにゅあるよもうぜ fgetcsv()はファイルの終端に達した場合を含み、 エラー時にFALSEを返します。
>>271 (´・ω・`) すみません。ありがとうございます。
改定新版基礎PHPを一通り読み終わったのですが PHPについてこの後はどのようなことをして勉強をすれば良いのでしょうか?
>>273 一度自分で実際に作ってみて、
問題にぶつかってからいろいろ考えればいいじゃない。
勉強するだけじゃスキルは身に付かないよ
>>269 ありがとうございました。
出来ました。
つI
a.phpとb.phpで同じロックファイルをflockする場合 a.phpのプロセスでロック掛けている時はb.phpのプロセスでもロック掛かっていますでしょうか?
>>274 なるほど、ありがとうございます。
実際に何かを作る場合、リファレンスがあると便利なので買おうと思うのですが
逆引き代全とポケットリファレンスとではどちらの方が初心者向けでしょうか?
チャットとかで連続に投稿する場合にパソコンにはクッキーが効くからい良いとしても アイモード(携帯全部?)にはクッキーは効きませんよね? 携帯用としてクッキーに変わるようなものはありますでしょうか?
hiddenじゃだめなわけ?
>>277 初心者ならどっちも買っとけ。
どっちも役に立つ。
すみません、これ↓すごい気持ち悪いんですが、なぜだかわかりますか? マニュアルのどっかに書いてあったら教えてください。 (PHP5です) class Hoge { private $value; public function __construct($value) { $this->value = $value; } } $a = array(new Hoge(100), new Hoge(32), new Hoge(255), new Hoge(7)); sort($a); とやったらちゃんと$valueの順番にソートされてやがんの。 privateなのにアクセスされてる感がたまらなくキモイ。
(゚Д゚)ハァ?
>>279 >>280 レス有難うございます。
phpのチャットなんでここに書きましたがスレ違いの様な…
hiddenで構いませんので教えて下さい
もしくはヒントを!
必要な値を<input type="hidden"で出力ページに埋め込め
>>283 おまいが何をキモイといっているのかサッパリわからない。
クラスとかわかってる? 頭大丈夫か?
>>285 <FORM action="セルフ" method="post">
<?PHP
if($_POST['onamae']){
echo "$_POST['onamae'] ->";
echo "<INPUT type=\"hidden\" name=\"onamae\" value=\"$_POST['onamae']\">\n";
}else
echo "<INPUT type=\"text\" name=\"onamae\">\n";
?>
こんな感じかな?
なんで?
>>290 あなたが作った掲示板とかあったら教えてください。
過去の書き込みを全て200ptで表示してあげます。
文字列をサニタイジングしたとき、一部のタグだけ許可したいのですが、 いろいろ調べたのですがよくわかりません。 ヒントを下さい、お願いします。
>>293 予め決めておいた特殊な文字列 (特定界隈で特殊タグなどと呼ばれているもの)を
許可したい "一部のタグ" に変換するとか、一旦全ての文字列を HTML エンティティ
関数に通してから "一部のタグ" に置き換え直すとか、という風に出来ん?
>>282 アドバイスありがとうございます。
両方買ってみることにします。
297 :
nobodyさん :2005/10/02(日) 21:02:32 ID:KeoPF5ws
if (!(imagetypes() & IMG_JPG)) これって書き方間違っていませんよね? どうしても Fatal error: Call to undefined function: imagetypes() in ・・・・ と出てしまいます。
間違ってるからエラーになるんでしょ。メッセージは読んだの?
299 :
nobodyさん :2005/10/02(日) 21:11:28 ID:KeoPF5ws
あ、imagetypes()ってGD必要ですか?
undefined function
>>283 ソートするためには大小比較をしなければならないのだけど、
オブジェクトの大小比較って定義されてたっけか。
マニュアル15章の、比較演算子の項を見ると
オブジェクト同士の比較はできないことになってるから
偶発的なものと考えていいんじゃないかな。
本来ならエラーになってしかるべき手法だと思う。
そこには比較には配列形式でと書いてあるから、
たまたまそんな挙動になってるんじゃないかと推測。
302 :
283 :2005/10/03(月) 04:52:53 ID:???
レスありがとう。
>>287 何がキモイかわからないなら、
>>301 を読んでくれるとピンとくるかな?オブジェクトの比較って点がポイント。
クラスに関してひょっとしたら
>>287 さんほどわかってないかもしれないが、
>>283 に書いたコードのクラスくらいならわかりますよ。
頭は大丈夫。心配してくれてありがとう。
>>301 本当ですね。比較演算子のところでオブジェクトの比較にはまったく触れられていませんね。気になって試してみたら
$a = new Hoge(100);
$b = new Hoge(200);
とやると $a < $b は true になり、$a > $b は false になるようです。
勝手にプロパティで比較しているみたいですね。
クラスの中に複数のプロパティを定義してみると、ご丁寧にプロパティを定義した順に比較しているようです。
class Fuga extends Hoge {
private $value2; public $value3 = "";
public function __construct($value, $value2) { parent::__construct($value); $this->value2 = $value2; }
}
$c = new Fuga(10, 20); $c->value3 = "ABC";
$d = new Fuga(10, 20); $d->value3 = "ABZ";
とやると $c < $d が true になります。
Hoge::$value、Fuga::$value2、Fuga::$value3の順に正しく比較されていて、どうも偶発的ってよりも、意図的に比較してるような感じです。
プロパティが参照だったらどう比較するんだろう?
ずいぶん余計なお世話な挙動ですね。エラーだしてくれたほうがましなのに。
まあマニュアルにものってないようだから、変な比較はしないのが吉ってことかな。
>>302 こういうキモヲタが幼女誘拐とか起こすんだろうか。
>>303 おまいの発言に腹が立った
とりあえず以降の同等なレスはスルーするように気をつけることにする
そもそも何でオブジェクトをソートしようと思ったのだろう
307 :
nobodyさん :2005/10/03(月) 10:39:56 ID:UqfVmxKv
今からPHPを始めるところなのですが PHPはHTMLソースの中に書き込む形で書いてくらしいのですが これって右クリックのソース見るで、<? ?>の部分を見たらどのようにPHPで書いたのか丸見えということはないでしょうか。 まさかとは思うのですが。何かユーザからは見えないようになってたりしますよね。
>今からPHPを始めるところなのですが まずはPHPを始めてから聞いてください
>>307 PHPが正常に動いてさえいればPHPのソースは見えない。
見えるのは生成後のHTML。
>>307 PHPは鯖側で実行されるつーことをまず理解しましょう。
311 :
307 :2005/10/03(月) 11:23:23 ID:UqfVmxKv
皆さん、アドバイスありがとうございます。 見えないということで安心しました。丸見えってなんかやですもんね。 HTMLの中に一緒に書いたら見えるんじゃないのかと思ったのですが、やっぱり見えないようになってるんですね。 >PHPは鯖側で実行されるつーことをまず理解しましょう。 どこかに書いてありました。JavaScriptはユーザ側で実行されて、PHPはサーバ側で実行されると。 同じスクリプト言語でも仕組みが違うと。 なんか読んだことがあるのですが、この知識からPHPのソースは見えないの解を導き出すことはできませんでした。残念。 確かJavaScriptはソース丸見えでしたよね。 ということは、ユーザ側で実行するスクリプト=見える サーバ側で実行するスクリプト=見えない の図式がなりたちますね。 でもなんでサーバ側で実行すると見えなくなるんだろうか。 サーバ側で実行した結果をブラウザに返すからかな。 だからブラウザ側では帰ってきた結果しか見ることができない。ゆえにソース見えない。 と推理したのですが、あってるでしょうか。
>311 >サーバ側で実行した結果をブラウザに返すからかな。 そだね。
313 :
307 :2005/10/03(月) 11:31:48 ID:???
>>312 合ってましたか。どうもありがとうございます。
参照で返す時の&をつける場所についての質問なんですが、 function & bbb() { // 色々な処理 return $aaa; } function bbb() { // 色々な処理 return & $aaa; } function & bbb() { // 色々な処理 return & $aaa; } のなかでどう書くのが一番良いでしょうか? PHP4でクラスを返す場合は参照にしないと無駄なコピーができるということなのですが。
Cと異なり、PHPの場合、参照渡し・値渡しの違いは、値が変更された時に初めて起こる。 関数に渡した時点では、どちらもアドレスが渡されており、実行速度に差はなく、違ってくるのはその値が変更される時で、値渡しの場合に、関数内で変更された値が、関数内のローカル変数にコピーされるよう。つまり、値を変更しない関数ならば、値渡しと参照渡しの差はない。
>>314 参照で返すってどういうこと
引数に渡す変数には値渡しとか参照渡しとかあるけど
実際にやってみればわかるけどreturn & $aaa;でエラーがでる
317 :
314 :2005/10/03(月) 12:47:03 ID:???
>>315 >>316 すみません、とんだ勘違いなコード書いてました。
呼び出す方で
$aaa = & bbb();
とやるのと、
function & bbb() {
}
とやるのと、もしくは両方&をつける場合の違いについてでした・・・
あと、自分はCがわからないので、ちょっとイメージがつきにくいのですが、違いは全くないということなのでしょうか?
よく$x = new class()は$x = & new class()と書くほうがいいというのとはまた別の話ということなのでしょうか?
>>294 後者のやり方でやってみたのですが、属性が必要なタグ(font color=〜等)の場合は
どうすればよいのでしょうか?
>>318 正規表現。
後、後者だと誤爆が多くなる気がするけど・・・
321 :
294 :2005/10/03(月) 14:44:59 ID:???
>>318 俺としては、前者 + 正規表現 (最小限ならば str_replace だけでも) を推奨。
後者でやろうとすると、色々とボロが出てしまわないだろうか?以下の色々と
ボロが出てしまっている、小汚いソースの様に。
<?php
header("Content-Type:text/html; charset=".mb_detect_encoding("ほげ"));
$str = "<Font color=red>文字列</fonT> <font color=\"red>文字列</font> <font color=\"red\">文字列</font> <span style=\"font-size:500%;\">文字列</span>";
$bef = array("/<font(\s+color\s*=\s*(\"(#?[a-z0-9]*)?\"|(#?[a-z0-9]*)?))*>(.+)<\/font>/iU");
$aft = array("<font$1>$5</font>");
echo preg_replace($bef,$aft,str_replace(array("<",">","@"),array("<",">","?"),stripslashes($str)));
exit;
?>
322 :
294 :2005/10/03(月) 14:49:56 ID:???
修正。&記号は "半角" 扱いでよろ。 echo preg_replace($bef,$aft,str_replace(array("<",">","@"),array("&lt;","&gt;","&#64;"),stripslashes($str)));
323 :
314 :2005/10/03(月) 15:14:40 ID:???
>>320 なるほど。両方に&をつけなければいけないのですね。了解です。
関数の中でnewしてるんで、3箇所に&を書かないといけないんですね。
しかし、そうなるとやっかいです。
クライアントコードの側にも&をつけなければならないのはドキュメントで明示しておくしか方法はないということなのでしょうか?
324 :
nobodyさん :2005/10/03(月) 15:40:51 ID:yF4zapvk
今PHPを勉強しています。 プログラミングは初心者で、htmlがちょっとできる程度なので、基本的な疑問があります。 メールフォームなどを作っているのですが、いくつかのテキストボックスなどを作成するときに、 エラーチェックのプログラムなどは、なにも考えずにテキストボックスの項目の順番に記述すればいいのですか?
>>324 プログラミングの初心者を脱出してからやりましょう
>>323 その場合、呼び出し側で参照つけ忘れても大丈夫。
むしろ最初からその3つとも&をつけなくても無問題。
>>324 テキストボックスの順番自体に何か意味があるならそれなりに考える必要あるんだろうが、そうでないなら別に気にしなくてよし。
とりあえず状況詳しく書かないと、何でそんな疑問がわいたのかすら想像つかないんだけど。
>>325 ∧_∧
( ´∀`) <(オマ(ry
( )
| | |
(__)_)
328 :
nobodyさん :2005/10/03(月) 17:16:50 ID:7v8t3+9l
セッションについて質問です。 login.php にてログイン認証し、その際にニックネームをセッション登録しています。 認証後にトップページ index.php に戻り、トップページではサイドメニュー menu.phpを include にて読み込んでいます。 このサイドメニューでニックネームを表示させたいのですが、うまく取得してくれません。 index.php の方で呼び出すときちんと表示してくれるのですが。 原因が分かる方、教えてください。
>>328 index.phpの先頭にsession_start()が必要
>>329 違うだろ。menu.phpでsession_start()だろ。
includeしてんのに?
332 :
328 :2005/10/03(月) 20:44:44 ID:???
index と menu の両方で session_start() をしたところ、 index は呼び出せましたが、menu のほうだと呼び出せませんでした。 なんでだろう…。
333 :
328 :2005/10/03(月) 22:29:49 ID:???
しばらく格闘していますが未だに解決しません。 menu.php に直接アクセスすると表示されるのですが include(requireも試した)で読み込んだ時は表示されません。 原因が分かる人いませんかー?! orz
連続カキコすみません。解決しました。 include のパスをURLで指定していました。 絶対パスにしたところ、きちんと表示されるようになりました。 別のサイトと認識されてしまったのでしょうか…。 何にせよ、ご迷惑おかけしました。
普通URLで指定しねぇよ・・・
どっかで間違ってるだけじゃないの? 単純化するとこんな感じになると思うけど問題なく動くよ。 って、再読込したらそんなオチかよ。。。 テストスクリプトまで書いたので送信ポチっとな。 1.php - セッションの設定、 2.php - includeする、 3.php - includeされる 1.php session_start(); $_SESSION['name']='hoge'; <a href="2.php">link</a> 2.php include("3.php"); 3.php session_start(); // 2.phpでsession_start(); しても動作する echo $_SESSION['name'];
>>335 ですよね…汗
ローカルでテストするとき用にURLで指定していたのを忘れていたのです。
338 :
nobodyさん :2005/10/03(月) 22:51:58 ID:+uOrbyCW
手を尽くしたのですが分かりませんでしたので、すいませんが質問させてください! メモリが足りなくなってプログラムが途中で止まってしまいます。 unsetを使っても、$var = NULLとしても 全然メモリが解放されないんですがどのようにしたら良いでしょうか?
>>338 せめて、何をして足りなくなったのかを書いた方が良いと思うが。
>>338 php.iniでメモリの上限を増やす。
341 :
nobodyさん :2005/10/03(月) 23:38:39 ID:+uOrbyCW
すいません、かなり焦っています
PEARのMail.phpを使って、
SMTPでメールを送っている時にメモリがみるみる内になくなっていきます。
一万通くらい送ると250MBくらい減ります。
require( "Mail.php" );
$param["host"] = "127.0.0.1";
$mail = Mail::factory('smtp', $param);
for( $i = 0 ; $i <= 10000 ; $i++ ){
$mail->send("
[email protected] ", $head, $body);
}
このような感じになります。
送信の後にunset($mail);としてみたり、
$mail = NULL;としてもメモリが解放される様子はありません。
分かる人助けてください!
342 :
nobodyさん :2005/10/03(月) 23:41:34 ID:+uOrbyCW
>>340 なるほど。メモリ上限は設定していませんが
設定してやってみます。
プログラムではメモリ解放できないですかね。
SPAM業者の手伝いは、しない!
344 :
nobodyさん :2005/10/03(月) 23:49:26 ID:+uOrbyCW
スパムじゃないです! 登録してる人だけに送ってます
だな。1万通送るやつのスキルとも思えん。
よくさ、携帯で空メール送ると自動返信メールが送られてきて そこに専用URLが載ってたりするのありますよね。 あれの仕組みってPHPで出来るんですか?教えてくだされ。
347 :
軟式PHP :2005/10/04(火) 00:21:10 ID:???
メール送られてきたらキックすれば良いだけ。
>>346 [ヒント]
.forwardには起動(キック)するコマンドが記述できる。
PHPにはメモリ解放は無いんじゃなかったっけか
よくそんな技術でスパム送ろうと思ったもんだ(´_ゝ`)
351 :
346 :2005/10/04(火) 11:05:37 ID:???
forwardとキックについて調べました。 こんな便利な機能があることに驚きです。 しかし、xreaでは使えないようでした…。 残念ですが諦めます。
>>351 XREAはスパムのおかげでメールトラブル中
くれぐれも共有サーバでやらないでくれ
>>294 >>319 ありがとうございました。
あと、礼を言うのが遅くなりまして申し訳ありませんでした。
copyとrenameどちらが早い?誰か検証した人いないかしら?
>>352 最近、XREAで使ってるドメインのメアドで送受信したメールが
届かないことがあるな〜と思ったら、やっぱりトラブル発生してんの!?
でも公式サイトの障害情報見ても何も載ってないんだが・・・
356 :
nobodyさん :2005/10/04(火) 12:02:52 ID:JKocPbjB
>>354 copyはファイル全体をコピーする。
renameはディレクトリ構造とファイル名のみを書き換える。
検証するまでもない。
357 :
nobodyさん :2005/10/04(火) 12:32:57 ID:oyC3QmoS
358 :
nobodyさん :2005/10/04(火) 13:09:49 ID:ogSOlTW8
今、XP HomeでPHPで書いたコードの動作確認ができるように Apacheをインストールするところなんだけど インストールする際に出てくるウィザードに Network Domain, Server Name, Administrator's Email Address の3項目を入力する画面が出てきた。 Email Addressは適当なものを入れるとして Network Domain, とServer Nameは適当に決めちゃっていいもんなんでしょうか。 XP Homeのローカルで実験するんだから Network Domainは、C:\ でいいのかな。 それとも適当に、test.com とか書いちゃっていいんですかね。 Server Nameなんかは適当にPCがdynabookだからdynabookとか入れとこうかと思ってるのですが これでいいんでしょうか。
C:\がドメインだと思うか? ローカルなんだから適当なドメインを考えて入れればいい サーバーネームは自分のマシン名でも入れとけ どうせ、アクセスするときの指定はlocalhostか127.0.0.1でやるんだからよ
360 :
358 :2005/10/04(火) 13:30:08 ID:ogSOlTW8
>>359 >C:\がドメインだと思うか?
いや、思いません。思わないけど。ローカルのアドレスを入れとかないと、PHPのコードを実行するときに困るんじゃないかなと
ちょっと思っちゃった。
ドメインもサーバネームも適当でOKということなので安心しました。
アクセスはlocalhostか127.0.0.1で指定するからこの画面で設定しなくてもいいんですね。
どうもありがとうございます。助かりました。
localhostって入れりゃいいじゃん。
>>ALL m9(^Д^)プゲラッチョ!
364 :
nobodyさん :2005/10/04(火) 20:36:23 ID:F0xENNek
ま、相手もゴロツキ企業なわけだが
367 :
nobodyさん :2005/10/04(火) 22:42:10 ID:TMWi83Dv
¥(半角の¥)を出力するにはどうしたらいいですか? firefoxで見るとバックスラッシュになってしまいます。 $str = "123あいう¥¥"; echo ($str); こんな風に書いたりしてます。
369 :
nobodyさん :2005/10/04(火) 23:07:08 ID:TMWi83Dv
レスありがとうございます。そうなんですか。ちなみに $str = "¥¥1200"; echo ($str); は¥1200と出力されますが、 $str = "¥¥えんまーく"; echo ($str); は¥えんまーくと出力されます。 こういうもんなんですか?¥付の値段を出力したいときはどうすればいいのでしょうか?
HTMLの中だけでよいなら、数値文字参照や文字実体参照を使うのもありかと。 &#165; &yen; (&は半角)
>>367 文字コードを適正な指定にするか、
&yen;って書け。
373 :
369 :2005/10/05(水) 01:56:22 ID:oPPZGTrS
>>370 ,371,372
レスありがとうございます。
やりたいことは、Accessで出力したCSVファイルを分解してhtmlで出力したいだけなんです。CSV上で既に半角¥マークになってしまっているのでどうしたものかと。
IEでは問題ないのですが...。
>>372 文字コードをいろいろ試していたんですが、いまいちうまく行かないんですよねー。もうちょっと悩みます。ありがとうございました。
uid 名前 0 高橋 1 伊藤 2 鈴木 というテーブルがあるとします。 そしてuidをGETで取得し、名前を表示するプログラムを作るとします。 もしテーブルに無い番号が入力されたら、エラーメッセージを表示させます。 ここで質問ですが、 「GETしたuidがテーブルのuidに含まれていなかったら」という内容の文は どのように書くべきでしょうか? 自分で調べて、 if ($_GET['uid'] != $row_Recordset['uid']) { echo "不正なIDです"; exit; } というのを作ったのですが、 これだとテーブルに含まれるuidも全て"不正なIDです"となってしまいました。 どうしたら良いでしょうか・・・? ちなみにこの質問内容は、DB板じゃなくてココでOKですよね??
DB使ってるなら SELECT ------ WHERE uid = 「GETのuid」 で結果0件ならエラーじゃだめなん?
376 :
374 :2005/10/05(水) 02:30:01 ID:???
>>375 sqlのクエリ部分ではなく、phpの部分でやりたいのです・・・。
自分でも今色々と調べてる所ではあるんですが、
なかなかどうして難しいですね。
>>376 なんか凄まじい勘違いというか、無駄なことをやろうとしていないか?
>>373 Firefox(Winodws)で試したけど、x5cを円マークで表示すべき
EUC-JP、SHIFT_JISあたりはちゃんと円マークになってたぞ。
(\と&yen;で違うフォントになるのは知らなかったが)
マッピングが変なフォント使ってるんじゃないの?
379 :
374 :2005/10/05(水) 03:37:13 ID:???
>>377 えっ、マジっすか!?
無駄無駄ァ、な事だったとは・・・。
要は、「GETしたuidが、テーブルの中に実在するuidに含まれていなかったら」という
内容の文がうまく記述出来ればOKなのです。
無理というか、無駄な事なのでしょうか・・・。
とりえあず今宵は寝ます。
>>374 uidってやつがテーブル内にあるかどうかの判別って結局SQLで問い合わせてからじゃないと無理じゃん。
だったら、
>>375 にするのがベストだし、それが普通。
他に複雑な事情があるならそれも書かんとわからんよ。
>>379 >sqlのクエリ部分ではなく、phpの部分でやりたいのです・・・。
だから、SQLで該当するuidが何件あるかを読んで
phpで件数を確認すればいいやん
>なかなかどうして難しいですね。
379の頭の中のほうが難しい。
380氏のいうようにそれが普通というか定石ってもんだ
phpのマニュアルに結構ためになるサンプルあるで。
マジっすかとか驚くほどのことでもないだろうが・・・
383 :
nobodyさん :2005/10/05(水) 05:55:55 ID:SZgLc6+c
【PHP Version】5.0.4 >PHPマニュアル print_r より >print_r() と var_export() はvar_dump()と違い、 PHP 5においてオブジェクトのprotected及びprivateのプロパティも表示します。 と書いてあり、「var_dump()はpublicしか表示しないのだろう」と思って試してみた。 結果:var_dump で protected・private が出力されている。 <var_dump> object(obj)#1 (3) { ["a"]=> string(6) "public" ["b:protected"]=> string(9) "protected" ["c:private"]=> string(7) "private" } <print_r> obj Object ( [a] => public [b:protected] => protected [c:private] => private ) <var_export> class obj { public $a = 'public'; protected $b = 'protected'; private $c = 'private'; }
384 :
nobodyさん :2005/10/05(水) 05:56:30 ID:SZgLc6+c
質問: ・var_dump()はpublicしか表示しないのだろうと思ったけど、私の勘違い? ・各関数の違いは以下の通り? print_r : 簡素に出力。第二引数がTRUEの場合、結果を返す。 var_dump : 型などの詳細も出力。 var_export : PHPコードの形で出力。第二引数がTRUEの場合、結果を返す。
>>384 var_dump(英語)には
In PHP 5 only public, private and protected properties of objects will be returned in the output.
と書いてあるから
386 :
369 :2005/10/05(水) 10:22:41 ID:Qlmr5ADv
>>378 わざわざすみません。もっと勉強します。
ちなみにfirefox(mac os X)です。
osXとMAMPという環境でphpを勉強中です。
387 :
nobodyさん :2005/10/05(水) 10:44:16 ID:hgIawq/C
<?php $fruits = array("lemon", "orange", "banana", "apple"); sort($fruits); reset($fruits); while (list($key, $val) = each($fruits)) { echo "fruits[" . $key . "] = " . $val . "\n"; } ?> 上はsortを用いて配列をアルファベット順に並べたものですが、 配列をランダムに並ばせるものを作る簡単な方法はありますか? つまり、やりたい事はアクセスするたびに4つの画像の順番がランダムに入れ替わり表示されるようにしたいのです。
つ array_rand
つ shuffle
コンピュータに完全にランダムの数字を作らせるのは難しいみたいね。
391 :
nobodyさん :2005/10/05(水) 11:35:44 ID:rxjtKeLJ
ストップタグって何ですか?
392 :
nobodyさん :2005/10/05(水) 11:45:40 ID:hgIawq/C
>>390 擬似乱数で不都合なシチュエーションって何よ?
394 :
nobodyさん :2005/10/05(水) 12:35:29 ID:iJ3zhQF9
<?php for($i = 0; $i < count(@$_POST["check1"]); $i++) { echo "<p>".$_POST["check1"][$i]."にチェックが入っています"; } ?> <form method = "POST" action = "<?=$_SERVER["PHP_SELF"]?>" <table> <tr> <td> <input type = "checkbox" name = "check1[]" value = "PHP">PHP <input type = "checkbox" name = "check1[]" value = "Perl">Perl <input type = "checkbox" name = "check1[]" value = "ASP">ASP <input type = "checkbox" name = "check1[]" value = "JSP">JSP </td> </tr> <tr> <td> <input type = "submit" value = "送信" name = "sub1"> </td> </tr> </table> ちょっと確認したいのですが。 この場合、チェック入れたものだけが配列に入って送られるで合ってるでしょうか。 仮にPHP,JSPにチェック入れたとしたら、配列番号0には"PHP"が、配列番号1には"JSP"といった 具合に入れられて送られるといったイメージで合ってますか。 何か勘違いしていたら指摘していただけるとうれしいです。
>>394 合ってる。
次からは、まずprint_r($_POST)とかしてみてから書き込もうな。
397 :
394 :2005/10/05(水) 12:47:08 ID:iJ3zhQF9
>>395 回答ありがとうございます。
PHP初めてなもので、このイメージで合ってるのか不安だったので質問しました。
配列表示するんだったらprint_r関数使ったほうがコードが短くなってすっきりですね。
どうもアドバイスありがとうございます。
>>396 PHPもforeach使えるんですね。覚えときます。どうもありがとうございます。
398 :
nobodyさん :2005/10/05(水) 13:18:45 ID:KahEav2g
jpgraph + PHP4 を使用しています。 グラフで、左Yのスケールと右Yのスケールが違う複合グラフは作成出来るのでしょうか? 例えば、左Yのメモリは最大値100で棒線グラフ。 右Yのメモリは最大値10000で折れ線グラフといった感じです。
>>397 >配列表示するんだったらprint_r関数使ったほうがコードが短くなってすっきりですね
そういう意味ではなく、print_r($_POST) してみればワザワザ聞かなくても判るでしょ?
という意味だろ。
phpスクリプトの不具合に対する丸投げに近い質問(というか要望)を投げたいのですが、 ダメでしょうか?
内容によるんじゃない? 取り敢えず書く。 叩かれるのを恐るべからず。
別にいいのでは? ボロカスに言われるかもしれないけど、それなりに相手してくれると思うよ。 矢継ぎ早に同じレベルの質問を繰り返すと嫌われるかもしれないけれど。 ボロカスに言われても、指摘内容は正しいことが多いから、ムカつかずに今後に生かせばいい。
404 :
394 :2005/10/05(水) 14:05:38 ID:???
>>399 そうか。
print_r($_POST)すれば配列の中身が見れるから、それをしていたら質問するまでもなかったよねという意味でしたか。
配列だったら、こう書いたほうが便利だよといった意味かと思いました。
まだ基礎的なコードいじって学習してる段階なのでechoばっかり使ってました。
最初の方にちらっとprint_r関数も出てきてたなあ程度だったのでそこまで考えが回らなかったようです。
まあ、もやもやしたイメージが確かなものになったので感謝です。ありがとう。
>>402 <?
#データファイル
$data_file = "dataedit.csv";
#取り出す列-1(「$row = array("0", "1", "2")」とすれば1列目と2列目と3列目を取り出します。)
$row = array("0","3");
$num = count($row);
$data = file($data_file);
for($j = 0; $j < $num; $j++)
{
$result = $data[array_rand($data)];
$val = explode("\t", $result);
echo $val[$row[$j]] . "<br>";
}
?>
>>402 試してないけど
<?
$data = ---- の行以降を以下に変更
$tmp = file($data_file);
$rand_keys = array_rand($input, 10);
foreach($rand_keys as $i) {
$rec = explode("\t", $tmp[$i]);
foreach($row as $j => $k) {
echo $rec[$k] . "<br>";
}
}
407 :
406 :2005/10/05(水) 15:16:15 ID:???
あ、かぶった 1行訂正 foreach($rand_keys as $a => $i) {
408 :
405 :2005/10/05(水) 15:18:29 ID:???
>>405 ではfile_get_contentsをfileに直したけど
$tmp = explode("\t\n", $data);
を
$tmp = explode("\n", $data);
にすれば不具合はなくなるのではないかと思う
つか、fgetcsv($fp,1024,"\t",'')とかでやったほうが効率的だと思う
410 :
nobodyさん :2005/10/05(水) 15:37:15 ID:Cp2lANiy
サーバ:Linux PHPバージョン:4.3.8 APACHE:1.3.28 DBサーバ:Windows2000Server・SQLServer2000 LinuxのPHPからDBサーバにアクセスを行い、データを取得したいのですが 方法が分かりません。 マニュアルには、プラットフォームが違う場合はコンパイル時に 「Sybase拡張モジュール」を使用して下さいとあるのですが、 Sybaseをインストールしなければならないのでしょうか。
411 :
383 :2005/10/05(水) 16:02:58 ID:???
>>385 疑問が解けたよ Thx!
(英語版のマニュアルも見るべきだな orz )
412 :
nobodyさん :2005/10/05(水) 16:04:46 ID:Wy1EjQwZ
Smartyの質問なんですがよろしいでしょうか? {$user.id} みたいな変数(連想配列)は普通に展開されて表示できますが、 {include file="header.tpl" user_id="$user.id"} のような感じでやると、header.tplには$userが渡されているようです。 $user.idを渡したい場合はどうすればいいのでしょうか?
413 :
nobodyさん :2005/10/05(水) 16:48:26 ID:iJ3zhQF9
今現在php.iniの設定が post_max_size = 8M upload_max_filesize = 2M なのですが、この値って post_max_size = 1G upload_max_filesize = 2G のように適当にG買いとも大丈夫なんでしょうか。 書き込める容量とかにも制限があるんですかね。 1G,2Gくらいなら余裕で書いちゃってもOKでしょうか。
414 :
402 :2005/10/05(水) 16:50:56 ID:???
メモリの使い方によるんじゃね?レン鯖でやられたらたまんねぇな。
416 :
413 :2005/10/05(水) 16:56:15 ID:iJ3zhQF9
今、いろいろ調べてたら
post_max_size > upload_max_filesizeじゃないと、upload_max_filesizeが全く意味をなさないみたいなことを書いてました。
もし、2Gまでアップロード可能にしたければ
post_max_size = 2G
upload_max_filesize = 2G
って書くべきなんですね。
でも、ここに書ける容量の限界ってどのくらいなんでしょうか。
>>415 メモリの使いかたによっては書けると。
物には限度というものがあるとは思うのですが。書こうと思えばいくらでも設定可能なんでしょうかね。
417 :
413 :2005/10/05(水) 16:59:20 ID:iJ3zhQF9
メモリの使い方を考えないといけないんですね。 よくよく見てみたら memory_limit > post_max_size > upload_max_filesize じゃないとだめみたいですね。 こういうことしようと思えば、自サーバで、回線も高品質でメモリいっぱい積んどかないときついのかな。
これスレ全然くだらなくないな..
本来の質問スレのスレタイに質問という字がないのでこちらに人が集まる
421 :
418 :2005/10/05(水) 18:49:26 ID:???
正確な表記はunixODBCだな。
助けてください。 PHPで作ったライブラリ(クラス群)を第3者に提供する必要がでてきたのですが、 そのままですとソース丸見えになってしまいます。 そこで中身を見れなくするために、 コンパイルしてオブジェクトの形で提供したいのですが、 そんなこと可能なのでしょうか? APCはちと違うような気がするし、Encoderもありましたが有償ですし。 もし不可能ってことになるとC言語でライブラリ作成する必要がでてきて死にそうなんです。 どなたかお知恵を・・・
423 :
422 :2005/10/05(水) 19:58:44 ID:???
環境を書き忘れました。 FedoraCore4 Apache2 PHP5 です。
425 :
軟式PHP :2005/10/05(水) 20:08:13 ID:???
>>422 PHP SCREWってのはどうよ。使ったことないけど。
>>422 >>425 の手もあるけど、正直お勧めしない。
金とるんならNDAでも結んでおくか、Cで書くしかない。
429 :
422 :2005/10/05(水) 21:02:41 ID:???
>>427 そのプロダクトいいですね。
上に聞いてみます。
今後PHP案件がどんどん増えればいいんですけどね。
まだ正式な契約はしてないので、
Cでゴリゴリやるとなると工数再見積になると思います。
あ〜、めんどくせ。
>>418 様
サーバ環境が間違ってました。
サーバ:FreeBSD4-stable
FreeBSDでFreetdsとunixODBCを使用し、
DBにアクセスは出来たのですが、select分で取得した
値の日本語が文字化けします。
サーバがLinuxで、教えて頂いたURLの
「必要なLinux用ライブラリのフリーな実装」を利用すれば、
日本語の文字化けもなく、問題なく利用できるのでしょうか・・・。
devil();
ファイルに bbb ccc ddd とある場合に先頭にaaaを追加して aaa bbb ccc ddd としたいのですがbbb〜dddを読み込まずに実現する方法を教えて頂きたいです。 ファイルの先頭に挿入書込がしたいということです。 よろしくお願い致します
>>432 無いよ。
PHPの関数や命令文つーのは最終的にOSが提供している機能を使うんだけど
OS側の機能にそういう物が存在しない。
434 :
nobodyさん :2005/10/06(木) 03:31:59 ID:taikAwmT
PHPを使ってhtmlページを解析し、特定部分を抽出したいと考えています。 しかしいまいちアルゴリズムが思い浮かばないのでアドバイスをお願いしたいです。 はじまりから終わりまでを特定の文字列(正規表現の一致)で指定して はじめ部分指定〜おわり部分指定 という感じでこれら指定部分に挟まれた部分を抽出したいと思っています。 よろしくお願いいたします。
>>434 それでいいから、思うように書いてみ?
だめだったらまたこればいいさ。
ホントにくだらないですが、どうして データ管理をマイシークェルとかいうデータベースを使うのですか?
437 :
434 :2005/10/06(木) 06:40:55 ID:taikAwmT
わかりました質問を変えます。 正規表現で一致したある部分を先頭とし、もうひとつ同様にある部分を終わりとする、そしてそれらで指定した箇所を抽出する、そういったことが可能な関数または手法 あるいは 正規表現で一致したある部分から前方を削除し、もうひとつ同様にある部分から後方を削除する、そういった関数または手法 はありませんか?よろしくお願いいたします。
>>437 まったくしょうがねえなぁ
<?php
$text = "ほげほげはじめ部分指定ほげほげほげぬ\nほげほげほげる\nほげほげほげぽおわり部分指定ほげほげ";
$start = "はじめ部分指定";
$end = "おわり部分指定";
preg_match("/$start(.*?)$end/s", $text, $matches);
$result1 = $matches[0]; // 開始部分・終了部分も含む
$result2 = $matches[1]; // 開始部分・終了部分は除外
?>
440 :
434 :2005/10/06(木) 08:02:00 ID:???
>>432 読み込みなんぞfile_get_contentsで一気にできるだろ
MPEGなどの動画から任意のフレームの静止画像をJPEGなどの形式で取り出し保存する方法を教えてくれた人は神。
443 :
432 :2005/10/06(木) 09:04:36 ID:???
>>433 >>438 >>441 レスありがとうございます。
無理ですか。
bbb〜dddが500KBくらいあるので、読み込まずに済ませられるならいいなと思ったんですが。
素直に読み込むか、これを機にDBの勉強をしてみようと思います。
ありがとうございました。
>>444 まあそう言わずにPHPでお願いします。
446 :
nobodyさん :2005/10/06(木) 10:49:15 ID:NRrV93R6
>>442 ひとまず、MPEGの仕様を読むんだな。話はそれからだ。
447 :
nobodyさん :2005/10/06(木) 10:57:49 ID:RhL8bp3P
>>442 動画の再生やコマドリにはコーデックを用いるのが通常。
コーデックはライブラリとして提供される。
頑張れ。
あとコマンドラインからコマを抜き出すツールがあればそれを呼び出すってのも手
448 :
nobodyさん :2005/10/06(木) 11:51:33 ID:obhW270H
<?php $a = $_FILES["files"]["tmp_name"]; $fp = fopen($a,"r"); while($nakami = @fgetcsv($fp,1000)) { $ID = $nakami[0]; 〜中略〜 $ID48 = $nakami[47]; echo $ID; 〜中略〜 echo $ID48; } fclose ($fp); ?> CSVをアップロードして、出力される48個の文字列に mb_convert_kana処理(半角カナを全角にしたり)をしたいです。どうすればいいんでしょうか?
>>448 $ID = $nakami[0];
これは無駄というか有害な処理
配列のままの方が扱いやすい
答え
配列のままでarray_map()使う
>>448 while($nakami = @fgetcsv($fp,1000))
{
foreach($nakami as $value)
{
echo mb_convert_kana("K", $value);
}
}
fclose($fp);
451 :
448 :2005/10/06(木) 12:17:39 ID:obhW270H
>>449 ,450
早速のレスありがとうございます!
今から実験してみます。もしうまく行かなかったらまた相談させてください。
よろしくお願いします。
452 :
448 :2005/10/06(木) 12:59:37 ID:obhW270H
>450 450さんのコードでCSVの中身を出力することができました。これすごいです。(自分のは120行くらいあったので...) ただ、配列の中の特定の値だけをテキストエリアに出力したかったりするのですが、このwhileでforeachな感じでもそういうことってできますかね? >449 449さんの仰る通り、リファレンスを読んでいたら、array_map()が使えそうな気がしたんですが、どうもうまく扱えませんでした。 CSVをアップしてmb_convert_kanaで成形して、出来れば各項バラバラに出力したいだけなのですが...。
>>452 array_mapを使うとこんな感じかな。今回の場合だと
>>450 氏の方法と大して変わらんと思うが。
function kanaconv($value) {
return mb_convert_kana($value, "K");
}
while($nakami = @fgetcsv($fp,1000))
{
$nakami = array_map("kanaconv", $nakami);
foreach($conv as $value)
{
echo $value;
}
}
元々のやりたいことが特定の列だけを変換、出力したいのならこれで充分なはずだけど。
while($nakami = @fgetcsv($fp,1000))
{
$value = mb_convert_kana($nakami[列番号], "K");
echo "<TEXTAREA>$value</TEXTAREA>";
}
454 :
453 :2005/10/06(木) 13:30:27 ID:???
>>452 ごめん間違えた。
foreach($conv as $value)
↓
foreach($nakami as $value)
特定の列を抜き出したい場合はこういうのもありかと。 $arr_key = array(1,3,5,7,9); // 取り出したい列の番号 0起算 $arr_data = array(1,2,3,4,5,6,7,8,9,10); foreach($arr_key as $key){ echo $arr_data[$key]; //2,4,6,8,10が出力 }
456 :
448 :2005/10/06(木) 14:28:31 ID:obhW270H
>>453 ,455
すばらしいです!すごい..,。
>453さん
while($nakami = @fgetcsv($fp,1000))
{
$value = mb_convert_kana($nakami[列番号], "K");
echo "<TEXTAREA>$value</TEXTAREA>";
}
これ感動です。すごい手っ取り早い。
実際取り出したい値は1個ではないのですが、その場合は
455さんのパターンでいけばいいですかね。
本当に感謝します。ありがとうございました。
Webブラウザ上で実行できる「テキストの文字列変換、演算処理」といった作業ができるスクリプトが欲しいのですが、 質問ではなく作成依頼といったほうが良いかもしれません。 話聞いてくれます?
458 :
nobodyさん :2005/10/06(木) 14:39:36 ID:/yy7ybJN
今、PHPの本のサンプルコードを打ち込んで学習しているところなのですが フォームにデータを打ち込んで、登録済みかチェックするボタンを押すと、指定のデータが存在するのか調べて 結果を返すといった内容のコードなのですが 一応、コードは丸写しして、test.phpという名前で保存してですね。 後は、MySQLにデータを入れれば準備OKなのかなというところなのですが、どのようにしてMySQLにデータを入れればいいのか その初期の段階でつまずいていて困ってるんです。 参考書によると MySQLのデータベース「testdb」のテーブル「t_userid」の項目「id」に問い合わせするようで。 テーブル「t_userid」を作成するSQLは、「登録チェック用テーブル作成SQL」(t_userid.sql)にあります。 とあるので、さっそくt_userid.sqlを付属CD-ROMからコピーしてデスクトップに持ってきて とりあえず、test.phpと同じ場所に入れればいいのかな。と思いやってみたのですが Parse error: parse error, unexpected T_VARIABLE in c:\program files\apache group\apache\htdocs\test.php on line 12 こんなエラーが出て。失敗と。 結局、t_userid.sqlの中身を参考にして、自分でMySQLにデータを入力してね。ということなのでしょうか。 一体どのようにt_userid.sqlを料理したらいいのという段階でわからなくて困っているのでどなたか方向でも教えていただけると助かるのですが。 ちなみにt_userid.sqlの中身はこんな感じです。下のスレ番号に書きます。
459 :
t_userid.sqlの中身です :2005/10/06(木) 14:40:37 ID:/yy7ybJN
/*テーブル作成*/ CREATE TABLE t_userid ( )
>>457 「Webブラウザ"上"で実行できる」なら
JavaアプレットかJavaScript、Jscript、VBScriptの話になると思う。
461 :
t_userid.sqlの中身です :2005/10/06(木) 14:43:34 ID:/yy7ybJN
すみません。記述途中で書き込むボタンを押してしまいました。 ↓が、ないようです。 /*テーブル作成*/ CREATE TABLE t_userid ( id varchar{10} NOT NULL, PRIMARY KEY (id) ); /*データ追加*/ INSERT INTO t_userid(id) VALUES('aaa1111111'); INSERT INTO t_userid(id) VALUES('bbb2222222'); INSERT INTO t_userid(id) VALUES('ccc3333333');
462 :
nobodyさん :2005/10/06(木) 14:44:09 ID:kpXXJeyk
>>458 とりあえず、PHPよりもMySQLについて勉強した方がよいかと思うのですが…。
>>458 >結局、t_userid.sqlの中身を参考にして、自分でMySQLにデータを入力してね。ということなのでしょうか
はい。
何かの本を参考にしているようですし、その本のどこかに解説もあると思いますよ。
465 :
458 :2005/10/06(木) 14:53:28 ID:/yy7ybJN
>>462-464 アドバイスありがとうございます。
なんか良く見たらデータベースの章を見てください。とあるので、そこ読んだらできるかもしれません。
shell> mysql database < script.sql
こういったコマンドを打ってデータベースを作成するってことなんですかね。これがSQL文とかいうやつですかね。
なんか、データベースの章をちらっとみた感じでは。
コマンド打つ以外にも、phpMyAdminとかいう便利なツールもあるようで
それを使えば簡単に作成できるのかな。
ちょっとやってみます。
>>458 mysql弄るならnavicatいいよ
468 :
458 :2005/10/06(木) 15:43:44 ID:/yy7ybJN
>>466 PHPの参考書をスムーズに終わらせたいところですが
MySQLと連動して使うなんてあたりまえに使う機能だから避けて通れませんもんね。
しょうがないので、MySQLの勉強します。今データベースの章読んでるところです。
>>467 MySQLをいじれるツールっていろいろあるんですね。
とにかく、基礎知識仕入れてからいろいろ試してみようと思います。
>>467 良いけど、$160は一般ホビーユーザには躊躇する値段。
>>458 とりあえずMySQLにデータを作成しないとサンプルの実行はできないだろうから、
皆にレスをもらったことを参考に進めればいいんだろけど、最初のカキコの
エラーメッセージは多分MySQLとは関係ないと思われ。
>Parse error: parse error, unexpected T_VARIABLE in c:\program files\apache group\apache\htdocs\test.php on line 12
だから、12行目がPHPの文法としておかしいはず。入力ミスと思うからじっくりと見直してみそ。
ひょっとして本のサンプルが間違っている可能性もあるかもしれんが。。。
>>469 評価版で1ヶ月も使えばかなり動かし方解るから
それだけでも良いと思うけど
473 :
458 :2005/10/06(木) 16:40:38 ID:/yy7ybJN
>>470 よく見直してみたら、PHPスクリプトの末に書く ; を入れ忘れてたことが判明しました。。
直してみましたが、また
Parse error: parse error, unexpected '/' in c:\program files\apache group\apache\htdocs\test.php on line 51
このようなエラーが、また、タイプミスっぽいのですが、ぱっと見た感じ、どこが悪いのかわからなかったので
後で直すか、どうしてもわからなかったらCD-ROMにサンプルコードが入ってるので
それをそのまま移すことによって解決しようかと思います。
データベースの章をさーっと読みましたが、どこにもMySQLにデータを作成する方法という肝心な知りたいことがかかれてませんでした。
しょうがないのでphpMyAdminを解説しているページを読んだら、このツールを使った作成方法が書いてあるので
これを読めばやっとMySQLにデータを作成することができると思われます。
phpMyAdminのフォルダをtest.phpが置かれているところと同じフォルダに入れて
今、config.inc.phpの設定のところに来てるのですが
config.inc.phpをメモ帳で開いてみたところ、おそらく改行部分と思われるところが↑になっており
改行のない一続きの文になっていて、なにがなにやらさっぱりわかりません。
これは文字コードの関係でしょうか。
↑を\nに置換しようかと思ったのですが、↑は↑とは違うようで、置換のフォームのところにコピペしようと思ったのですができませんでした。
どなたかこれを解決するにはどのようにすればいいと思われますでしょうか。
何か特別なことができるアプリで開いたほうがいいのか、文字コード変換するアプリで処理すればいいのか。果たして設定ファイルの
文字コードなんか勝手に変えちゃっていいものなのか。わからず困ってます。
474 :
nobodyさん :2005/10/06(木) 16:52:53 ID:85el6NxV
51行目付近の/
476 :
nobodyさん :2005/10/06(木) 17:09:17 ID:/yy7ybJN
皆さんアドバイスありがとうございます。大変助かってます。
>>474 51行数えてみてみたんですが、/になんの間違いもないように見えるんですよね。
51付近といえば
echo "<tr>";
echo "<td><input type = \"text\" name = \"id\"></td>;
echo "</tr>";
echo "<tr>";
echo "<td><input type = \"submit\" value = \"登録済みか調べる\" name = \"sub1\"></td>";
echo "</tr>";
こんな感じですが、どこが間違ってるのかさっぱりわかりませんでした。/もちゃんとつけるべきところについてるし。
まあ、どうしてもわからない場合は、CD-ROMから丸ごとコピーして動かしてみます。
それでも動かなかったら、本が間違ってるということで。
>>475 さっそくphpeditorダウンして使ってみました。
単純にファイルを開くから、config.inc.phpを開けばいいのかと思ったのですが、phpプロジェクトファイルではありません。
と言われてひらくことすらできず。
まあ、とりあえず、phpeditorのヘルプファイル読んでみます。
それでもできなければUTF-8,EUC-JP対応のエディタ探して開いてみます。
echo "<td><input type = \"text\" name = \"id\"></td>; echo "<td><input type = \"text\" name = \"id\"></td>";
>>476 2行目の末尾の " が漏れてるのが原因だね。
紹介されてた phpeditor など構文チェックしてくれるエディタを使用すると、
この類のエラーはすぐ判る。
他にも構文チェックしてくれるエディタはあるんで、色々と触ってみて
自分が使いやすいと思ったものをチョイスすればいい。
あせらずにゆっくりと。。。
>>476 そっちじゃなくてスタンドアロン版にしておけ
”の閉じ忘れなんかも色分けしてくれるのでミスが減るはず
480 :
458 :2005/10/06(木) 18:18:44 ID:/yy7ybJN
>>477-479 アドバイスありがとうございます。
間違いはないんだけどなあと思ってたのですが、やっぱりタイプミスだったんですね。
よく見たら、片方はちゃんと"ついてるから、よーく見比べたら発見できそうでしたね。
ただ、こんなミスもすぐに発見できるようなエディタ探したほうが効率いいに決まってるので、吟味して選ぼうと思います。
C#とか普通のアプリ作ってても、ミスをすぐ指摘してくれる統合開発環境とかあるのとないのじゃ生産性にえらい差がでますもんね。
phpeditorってそれだけじゃなくてスタンドアロン版とかあるんですね。
そっちダウンしてやってみます。
481 :
458 :2005/10/06(木) 18:29:50 ID:/yy7ybJN
>>479 スタンドアロン版ダウンしまして、さっそく、config.inc.phpを開いたところ、無事改行されて表示されました。
スタンドアロン版は、単純にメモ帳みたいに開くことができるんですね。
これでphpのコードも書いて試用してみます。
どうもありがとうございました。
さっそく、設定変更します。
>>480 HTMLタグは属性の指定に "" を使用するのに、
スクリプト内で文字列を囲むのにも "" を使ってるのが、ミスの一つの要因だと思われ
\n入れたり、変数をパースさせたいんじゃなければ、
こういう時は ' ' を使うのが吉
文字列無いの " をエスケープする手間も省けて一石二鳥だよ
483 :
458 :2005/10/06(木) 21:16:00 ID:/yy7ybJN
>>482 さっそく\"部分を'に変えました。
いちいち\入れるの面倒だなと思ってたので助かります。
これでケアレスミスも防げそうです。
どうもありがとう。
>>483 逆だ!
\"を'に変えるんじゃない!
文字列リテラルの括りを'にするんだ!
485 :
458 :2005/10/06(木) 21:58:25 ID:/yy7ybJN
>>483 ということは、つまり
echo "<td><input type = \"text\" name = \"id\"></td>"; を
echo '<td><input type = "text" name = "id"></td>';
このように書けるってことですね。これでも\"とか書かなくて済むから助かりますね。
どうもたびたびありがとうございます。
>>438 サンキューっす。だからデータ管理に便利なわけねφ(..)メモメモ
マイシークェル勉強して2ちゃんねる型掲示板つくろっと。
もうあったような希ガス
マイシークェル で、いいのな・・・みんな
なんかビジュアル刑のバンドみたいな名前だな
マイシークェルって新たなDBの名前かと思ってたら mysqlの事なのかw
米の国の人はマイシィクェルと呼ぶこともあるそうだ
492 :
軟式PHP :2005/10/07(金) 01:17:26 ID:???
おまいら発音よすぎ。
The official way to pronounce “MySQL” is “My Ess Que Ell” (not “my sequel”), but we don't mind if you pronounce it as “my sequel” or in some other localized way. まあ、俺も気にしないよ。
SQLは, もともとSEQUEL(Structured English QUEly Language)と書きシークェルと 発音されていた. そのためSQLと書くようになった現在でも, 米国ではシークェルと 読まれるのが一般的である. だそうな。
448-486の書き込みにほのぼのとしたものを感じた
シークェルって読むと持てますか?
何を?
マイ父帰る
行き詰ってしまったので質問させていただきます。 mysplとphpを使った簡単なクイズのサイトを作りたいと考えております 現在、問題ID、問題文、5択なので選択肢5つ、解答とフィールドを作っており htmlのサイト上でそれらを呼び出し ラジオボランで正確な答えをチェックして 当たりかどうか判別してやる という所まではいけたのですが困った事が起きてしまいました。 現在では1つのページに問題が1問しか表示してないのですが、 一度に何問も表示させ判定したいと考えております。 問題だけをを沢山表示させることは可能なんですが、それぞれの問題に答えをチェックする ラジオボタンの表示にすごく困っております。 問題文は追加できるようになっており、現在存在する最後のID番号から+1した所に 追加されます。 すごく分かりにくい説明かもしれませんが どなたか分かる方おられましたら よろしくお願いいたします。
ラジオボタンなんだからグループ化すりゃいいだろ phpの問題じゃなくてhtmlの問題な
a.php <?php if($a = 1){ echo aaaa; if($b = 1){ include("b.php"); exit; } } else{ include("b.php"); } b.php <?php header("Location:c.php"); このようなスクリプトでa=1のときにはheader aleady sentとなってしまうので headerを既に送信済みか確認したいのですが、可能でしょうか?
なにを言う
>>501 aaaaを表示してからLocationってのが、そもそも無理ですから
>>501 お望みの挙動かどうか知らんが、こうすればエラーは出なくなる。
a.php
<?php
if($a = 1){
if($b = 1){
include("b.php");
exit;
}
echo aaaa;
}
else{
include("b.php");
}
505 :
501 :2005/10/07(金) 09:40:05 ID:???
説明下手ですみません。 aaaaを既に表示したか確認したいのです。 すでに表示してる場合はLocationを使わないようb.phpで処理したいです。 Locationを使えるか、使えないかの判別でもいいです。なにか方法はあるでしょうか?
506 :
499 :2005/10/07(金) 10:14:46 ID:???
>>500 返信ありがとうございます
こちらの説明不足で意味を取り違えてしまったようで本当に申し訳ないです
先ほどの質問は忘れてもらって、新たに質問させていただきます。
PHPの中でラジオボタンやラジオボタンの様な答えをチェックでき
その値を違うPHPに渡すという物を設置することは可能でしょうか?
507 :
nobodyさん :2005/10/07(金) 10:20:57 ID:ffDmuEnl
2次元の配列の要素全てに、デフォルトで1を入れたいと思ってるのですが for($i=0;$i<5;$i++){ for($j=0;$j<5;$j++){ $data[$i][$j] = "1"; } } とやるしか方法はないのでしょうか? もっとスマートな方法があったら教えてください。
>>507 foreachでarray_fillじゃ駄目?
510 :
509 :2005/10/07(金) 10:28:45 ID:???
すまん、勘違いしたかも。
>>509 無視してください。
>>507 方法はいくらでもあるが、結局それが一番スマートだと思う
>>511-512 回答ありがとうございます。
array_fill()のネストでも結局同じくらいの行数になりますし、
厨な私にはforで値を入れていくほうが読みやすいので
結局これでいこうと思っています。
どうもでした。
514 :
501 :2005/10/07(金) 11:08:48 ID:???
headerの前に出力があったかどうかを調べることはできませんか? 出力バッファを有効にすればエラーは出ないのですが、headerの前に出力があったのか調べる事はできませんか?
マニュアルの出力制御関数を参照
516 :
506 :2005/10/07(金) 11:36:12 ID:???
>>508 URLまでご用意していただき ありがとうございます
しかしそのサイトではPHPの中ではなくHTML文の中にフォームを作って値を渡しているので
参考にはなりませんでした。 せっかく答えていただいたのに申しわけないです。
ご説明がまだまだ不十分でしたね・・・ 今度こそ分かりやすいはず
<?php ?>の中のPHP内部にラジオボタンやラジオボタンの様な答えをチェックでき
その値を違うPHPに渡すという物を設置することは可能でしょうか?
>>514 普通はheader送るタイミングは自分で制御するもんだからなぁ・・・
>>516 相変わらずわけわからん。
「phpの中にラジオボタンの様な答えをチェック」という辺りを
もうちょっとわかりやすく書けないか?
全然説明が判らないな。 ・PHPはサーバー側で動作 ・ラジオボタンの表示、選択はクライアント側で動作 が理解できてるのかな。。。という疑問があるんだけど。 「ラジオボタンの様な答えをチェックでき」のチェック操作を行うのは誰? 人間が行うのなら、上記が理解できていないと思う。 PHPで行うのなら header('Location:xxx.php?checkbox=1');等でいいと思う。
519 :
516 :2005/10/07(金) 11:54:30 ID:???
>>517 う〜ん なかなか言葉で説明するのが難しいですね・・・
>>「phpの中にラジオボタンの様な答えをチェック」という辺りをもうちょっとわかりやすく書けないか?
ラジオボタンです 要は<?php ?>の中にラジオボタンを作成したいのです
現在fromを利用してphpの外で実行した場合は成功しております
while文や変数を利用したラジオボタンを作りたいので、PHPの中に入れて
やりたいのですが 可能でしょうか?
520 :
501 :2005/10/07(金) 11:56:49 ID:???
レスいただいた方ありがとうございます。
出力バッファを使うことにしました。
>>516 508です。
PHPとMYSQLを使って作りたいとのことですが、PHPとMYSQL利用の経験はお持ちでしょうか?
DBから問題を取得→表示
ユーザーからの解答があったら
問題の答案を取得→DBから解答取得→回答正誤判定→結果表示
こんな流れになるのではないかと思いますが、PHPとMYSQLをこれから勉強するなら
HTMLとPHPとMYSQLを使ってデータの出し入れの勉強してみるとよくわかると思いますよ。
521 :
518 :2005/10/07(金) 11:57:42 ID:???
まさかと思うが、こんな答えを期待してたのかな。。。 <?php echo '<INPUT TYPE="radio" NAME="data" VALUE="1">テスト1'; echo '<INPUT TYPE="radio" NAME="data" VALUE="2">テスト2'; ?>
522 :
501 :2005/10/07(金) 11:59:35 ID:???
>>519 <?php
echo '<form action="" method="post">
選択肢1<input type="radio" name="Q1" value="aa">
</form>';
こういうことですか?
523 :
522 :2005/10/07(金) 12:00:24 ID:???
>>516 ラジオボタンを表示してcheck.phpに値を送られる
<?php
echo '<form action="check.php" method="post">';
for ($i = 0; $i < 5; $i++) {
echo '<input type="radio" name="q[0]" value="'.$i.'">'.$i;
}
echo '<input type="submit">';
echo '</form>';
?>
まさかprintもechoも知らないで組んでたのか・・・?
これこそPHPクオリティ
527 :
516 :2005/10/07(金) 12:46:33 ID:???
たくさんの返信ありがとうございました。
>>521 >>522 >>524 さんの言われておるようにやってみたところ
無事に出来ました こちらもprintなどでラジオボタンの所を
くくってやってみていたのですが 出来ませんでした。
シングルでくくらずにダブルコートでくくっておりました・・・
printじゃ出来ないと思って質問してみたのですがptirntで出来たのですね
みなさんどうもありがとうございました
まずtypeをどうにかすべき
まずtypoをどうにかすべき
530 :
nobodyさん :2005/10/07(金) 13:51:42 ID:DMyUsnXK
サンプルコードに下記のようなものが出てきまして。<?php ?>が2つあるので、こんな書き方できるのかとびっくりしたのですが これは結局、分断しなければ echo '<form action = "next.php" method = "post">'; のように書かなければいけないところを、<?php ?>を分断することによって普通に、<form action = "next.php" method = "post"> のように書けるという解釈であってますか。 <body> <?php $text1 = @$_POST["text1"]; if(strlen($text1) < 1 or strlen($text1) > 10) { ?> <form action = "next.php" method = "post"> <table> <tr><td><font color = "red">1〜10バイトでお願いします</font><br> お名前:<input type = "text" name = "text1" value = "<?=$text1?>"</td> <td><input type = "submit" value = "送信"></td> </tr> </table> </form> <?php } else { echo "<p>正しく入力されました:".$text1; } ?> </body>
531 :
nobodyさん :2005/10/07(金) 14:03:31 ID:3gINL/Ei
>>530 ○
そっちの方が負荷がかからないらしいけど実際は俺はシラン。
532 :
530 :2005/10/07(金) 14:07:58 ID:DMyUsnXK
>>531 回答ありがとうございます。
やっぱり、いろんな書き方ができる中のひとつだったんですね。
個人的にはこの方が、HTMLタグそのまんま書き込めるからわかりやすいですね。
PHPスクリプトからHTMLタグを吐き出す場合
echo 使って ""で囲んだり、中の"を\"にしたり、''で囲んだりするのが面倒だなと思ってたので
こんな方法があったなんてうれしいな。
更に、本当に負荷がかからないとすれば、この書き方推奨ですね。
>>530 PHPはもともとhtmlの中に<?php ?>というタグでスクリプトを埋め込めるというふうに作られた
<html>
<body>
<?php 処理 ?>
html タグ
<?php 処理 ?>
html タグ
<?php 処理 ?>
</body>
</html>
>>532 一応、こういう方法もあるということで(負荷はしらん)
if(strlen($text1) < 1 or strlen($text1) > 10)
{
echo <<<EOD
<form action = "next.php" method = "post">
<table>
<tr><td><font color = "red">1〜10バイトでお願いします</font><br>
お名前:<input type = "text" name = "text1" value = "{$text1}" ></td>
<td><input type = "submit" value = "送信"></td>
</tr>
</table>
</form>
EOD;
}
else
{
echo "<p>正しく入力されました:".$x;
}
535 :
534 :2005/10/07(金) 14:15:57 ID:???
>>534 いや〜ん。Ctrl+Xを押したつもりが・・・
echo "<p>正しく入力されました:".$x;
は
echo "<p>正しく入力されました:".$text1;
ね。
536 :
530 :2005/10/07(金) 14:25:08 ID:DMyUsnXK
皆さん、具体例での解説ありがとうございます。
>>533 そうか。こんなに柔軟に<?php ?>とHTMLタグを組み合わせられるんですね。
今まで<?php ?>とHTMLタグが、<body>タグの間できれいに分離してるコードしか見たことなかったので
<?php ?>とHTMLタグは、<body>タグの中で分離して書くもんだと思い込んでたものでびっくりしたわけです。
>>534 こんな書き方もあるのか、同じ処理でもいろんな書き方があるもんですね。
こっちの方が、書き方がスマートな感じしますね。
これもPHPスクリプトでHTMLタグ出力するのに、""で囲んだりもいらずにそのままかけますね。
537 :
nobodyさん :2005/10/07(金) 14:25:16 ID:/ul7fY5m
初歩的な質問失礼いたします。 PHPを勉強しようと思い、本を買ってきて勉強しているのですが最初の時点で躓いています。 本にあるとおりに、Apache1.3.27とPHP4.2.2をインストールしてハローPHPと表示させようと思ったのですが ブラウザで見たときに日本語が文字化けしてしまいます。 ブラウザのエンコードで自動選択にすれば問題なく表示はされるのですが、以前表示させたときには文字化けなんてしませんでした。 これは何が悪いのでしょうか?iniファイルの書き換えミスか、そもそもブラウザ側が悪いのでしょうか?
>>537 せっかくプログラミングの世界に入ってきたのですから、「文字化け」という曖昧な説明ではなく、
「〜の文字エンコーディングで出力するつもりが、ブラウザによって〜の文字エンコーディングと解釈されてしまいます。」
のような説明をするようにしましょう。
ブラウザは次の3点に注目して表示に使う文字エンコーディグを決定します。
・HTTPヘッダ Content-Type: text/html; charset=shift_jis
・HTMLヘッダ <meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
・html文章内の一部を使って判定
これらの指定が矛盾していた場合等で表示に使う文字エンコーディングが実際のものとちがっていれば、
いわゆる「文字化け」を起こす原因となります。
539 :
nobodyさん :2005/10/07(金) 15:00:14 ID:DMyUsnXK
ふと思ったんですけど 今は、自分のPCでPHPの動く環境を作ってるから、php.iniをいじって設定を変えたりできるけど。 レンタルサーバなんかに置かせてもらう場合、そのサーバのphp.iniっていじることはできないんですよね。 1サーバにつき、1php.iniだと思うのですが合ってるでしょうか。 なので、PHPに、get_magic_quotes_gpc()みたいな、magec_quotes_gpcがONかOFFか調べる関数とかがあるんですよね。 ということはレンタルサーバに自作のPHPで作ったアップローダを置くとすると アップできるファイルサイズの上限は、そのレンタルサーバのphp.iniの設定に依存するわけですか。
>>536 そんなことくらい、PHPマニュアルに書いてあるが?
544 :
nobodyさん :2005/10/07(金) 15:54:56 ID:DMyUsnXK
PHPマニュアル見ないで、書籍のサンプルコード集打ち込みながら学習してるから知らなかったんだよ。 PHPマニュアルの目次見ても、型、変数、定数、演算子、制御構造、関数、クラスとオブジェクトとか、他言語を知ってたら見なくても いいような内容ばっかりに見えたので、これ1から見ながらやってたら遠回りかなと思っていきなりサンプルコード集買ったんですよね。 PHPを実行できる環境を整える方法から書かれてる書籍の方が便利だし。 PHP独特の書き方とかわかれば、後は他言語で身につけた基礎知識がカバーするだろうと思って。 でもこの際なので知識補完といった意味で目を通しとこうかなとは思います。 まあ、書き方が有料の書籍と違ってわかりにくいから避けてたのですが、書籍で使える知識を身につけてから PHPマニュアルも補完的に目を通すという読み方にするとPHPマニュアルに書かれた内容もわかりやすいかなとは思います。
>>539 マニュアルのini_set()を見ればわかるけど.htaccessやスクリプト内で変更できるものもある
upload_max_filesizeは変更できないがな
医科のperlをphpで書けばどうなりますか?
#!/usr/bin/perl
use LWP 5.7X;
use Encode;
use URI;
my $browser = LWP::UserAgent->new;
my $url = URI->new('
http://www.hogehoge.com/cgi-bin/hogehoge.cgi ');
$url->query_form(
foo => 'bar' ,
);
my $response = $browser->get($url );
die $url , " Error!", $response->status_line unless $response->is_success;
print $response->content;
547 :
546 :2005/10/07(金) 16:35:32 ID:???
上記 use Encode; の行は削除してください。
548 :
539 :2005/10/07(金) 16:37:24 ID:DMyUsnXK
>>545 スクリプトから設定ファイルをいじれる関数があるんですね。
でも全部いじれるわけじゃないのですね。
マニュアルみたら、php.iniの設定の一覧が出て、変更の可否の項目を見ればいいのだと思うのですが
PHPマニュアルも便利ですね。
調べてみたら
PHP_INI_ALL、PHP_INI_PERDIRだと、.htaccessで変更可能らしい。
ちなみに
http://www.shigeweb.jp/php/project_p/?section=setup&page=htaccess に書いてる。
upload_max_filesizeを見るとPHP_INI_PERDIRになってるので、.htaccessで設定変更できることになりますよね。
でも変更できないということは、スクリプトから変更できないけど、.htaccessだったらできるということかな。
設定できるできないみたいにはっきりしてるのかと思ったら、この設定はこの方法でできるけど、この設定はこの方法では変更できない
みたいにいろいろあってややこしいですね。
どうも解説ありがとうございました。
550 :
546 :2005/10/07(金) 16:44:34 ID:???
551 :
545 :2005/10/07(金) 16:52:49 ID:???
>>548 俺の使ってるchmファイルではPHP_INI_SYSTEMになってる(´・ω・`)
新しいのをダウンロードしなおした
552 :
539 :2005/10/07(金) 16:59:12 ID:???
>>551 バージョンによっても変わっていくわけですね。非常にややこしいけどしょうがないか。
自分の持ってるマニュアルのバージョンも要チェックだし、サイトでも一覧のせてるところあるけどそういうとこでも
バージョン古かったら意味なしですね。
更に、レンタルサーバにおく場合は、そのレンタルサーバのPHPのバージョンもチェックすべきなんだろうな。
まあ一手間、調べればいいんだもんね。気をつけてチェックしましょうということなんですね。
質問ですが。 ログファイルの行数を知りたいんですが、以下の 2 つのうち、どっちの方が優れてるんでしょう? 1: $line = 0; $fp = fopen($log_file, "r"); while($temp = fgets($fp)) $line++; fclose($fp); 2: $line = shell_exec("wc -l $log_file"); $line = preg_replace("/^([\d]+).+$/", "$1", $line);
>>553 2 に関しては、引数をちゃんとチェックしないと、変なコマンドを打たれる可能性
を否定できないぽ。
>>554 言葉が足りませんでしたね。
このプログラムはユーザーの入力値は全く関与しないんです。
$log_file はプログラム内部で作ってる変数です。
556 :
553 :2005/10/07(金) 19:34:33 ID:???
もうちょっと補足します。 ログファイルはは 20 個あり、for 文で回して、行数だけ取得するようにしたいのです。 $data = array(); for($i=0; $i<20; $i++) { // ファイル名は 0.log のようにしてます // 行数取得して $line に格納 $data[$i] = $line; } こういう感じで作ってます。
1,000 回くらい回してベンチすれば?
558 :
nobodyさん :2005/10/07(金) 20:15:04 ID:dcjESLNV
png2wbmp("test.png","test.bmp"); とやって、PNGの画像をBMPに変換したいのですが Warning: Wrong parameter count for png2wbmp() とエラーが出てしまいます。 png2wbmp("test.png","test.bmp",100,100); とパラメータを付け足しても同様のエラーが出てしまいます。 なにがいけないのでしょうか?
559 :
553 :2005/10/07(金) 20:18:23 ID:???
特に、こっちの方が断然いい、みたいなことな無いみたいですね。 行数を確認するためだけにファイルをオープンするのは、他のプログラムでの書き込みに影響を与えそうですので、 2 の方でやってみようと思います。 ありがとうございました。
>>558 int png2wbmp ( string pngname, string wbmpname, int d_height, int d_width, int threshold)
末尾のパラメータ threshold が足りないようだが?
>>559 シェル呼び出すだけでも地味に時間かかるよ?
$a = file("log.dat"); count($a); じゃだめかな。
563 :
553 :2005/10/07(金) 20:43:51 ID:???
>>561 やっぱりそうですか・・・
Windows の方で作ってますので動作確認をするために現在は 1 の方法でやってました。
サーバーにアップする時点で 2 の方に変えようと思ってたんですが。
1 の方でやっていきます。
ありがとうございました。
>>562 ログファイル自体は重くないのでそれでも大丈夫だとは思いますが。
file をするとログファイルを全部読み込んでしまうので、どうかと思ったんです。
また、ログファイルの内容が必要なわけでもありませんので。
ですので、fgets で値を捨てながら行数をカウントしようと思ったんです。
どうもありがとうございます。
565 :
nobodyさん :2005/10/07(金) 21:35:54 ID:npAyk4uf
PHPで複数ファイルをアップロードする場合、ディレクトリ配下を 一括で指定してアップロードできないのでしょうか? 色々と調べたのですが、一ファイルずつ選択する方法しか見つ かりませんでした。 誰か私に知恵を貸して下さい。お願いします
>>565 考えよう。
鯖からキミのパソコンの中身が見えないと、ディレクトリ指定はできないでしょ。
WebDAVとか使うなら分からんでもない。
>>565 逆にキミのパソコンの中身が見える(セキュリティ上の意味でも)状況なら可能になる。
鯖側のPHPの話ではなくなるけど、ブラウザ上で動くActiveXを使ったものとかあるね。
hogehoge=1921 hogehoge=4441 のような形式の文字列があったとして数字の部分だけを正規表現で置き換える場合にはどのようにすれば良いでしょうか アドバイスお願いします
hogehoge の部分が問題だとは思うけど・・・ ^(.+=)([\d]+)$ でマッチするんじゃ? $str = "hogehoge=1921"; $str = preg_replace("/^(.+=)([\d]+)$/", "$1"."1111", $str); って感じかなぁ。
>>569 丸括弧で保存する意味が無いよ
$str = preg_replace("/\d+$/", "1111", $str);
>>570 いや、終端符すらイランだろう。
$str = preg_replace("/\d+/", "1111", $str);
指定したURLの文字列を保存するには以下の方法で出来るのですが、
画像ファイル等を保存する場合はどのような方法がありますか?
<?php
$files = file_get_contents("
http://www.yahoo.co.jp/ ");
$logfile ="sample.html";
$fp = fopen("$logfile","w");
fputs($fp, $files);
fclose($fp);
?>
つ [ ファイルシステム関数 ]
>>574 すぐに思いつくのは
php.iniの設定がおかしい
データベースを使用しているのならデータ書き込み時のエスケープ処理がおかしい
ぐらい。
おまいさんが作ったスクリプトなら環境を書け。
そうでないのならそのサイトの管理者に報告せよ。
576 :
575 :2005/10/08(土) 00:06:16 ID:???
書き漏れた orz "php 表 文字化け" でググってみれば何か参考になるやもしれぬ。
577 :
nobodyさん :2005/10/08(土) 00:53:46 ID:/UyAJWR0
>>534 ヒアドキュメントは漏れはすごいいっぱい使ってる。
$hoge =<<<hage
いろいろ
hage;
って感じで。
これだけ別ファイルにして置けば、phpわかんないけどhtmlは解るって顧客が更新できるから。
PHPをRHEL3にインストールしようとしておりますが、 DBにSybaseを利用しようとして、PHPのコンパイルオプションに --with-sybaseを入れると、失敗してしまいます。 (--with-sybaseオプションを外すと、PHPのコンパイルに成功します) PHPでSybaseを利用する方法をご存知の方は、 是非教えていただけないでしょうか。 なお、詳細な情報(環境など)を以下に記載します。 ・OS RHEL3 ・PHP 4.3.11 ・DB Sybase11.0.3 ・Apache 1.3.33 ・--with-sybase追加時に、make時に発生するエラーメッセージ /opt/sybase/lib/libsybdb.so: `sys_errlist' is deprecated; use `strerror' or `strerror_r' instead /opt/sybase/lib/libsybdb.so: `sys_nerr' is deprecated; use `strerror' or `strerror_r' instead /opt/sybase/lib/libsybdb.so: undefined reference to `__ctype_b' /opt/sybase/lib/libsybdb.so: undefined reference to `__ctype_tolower' collect2: ld returned 1 exit status gmake: *** [sapi/cli/php] エラー 1
>>573 文字列以外を読み込む関数がわかりません。
画像・音声・フラッシュ等は無理なのでしょうか?
582 :
nobodyさん :2005/10/08(土) 03:30:52 ID:CIqOzoxd
HPを作っているんですがメニューやCGIを表示させるのに PHPを使おうかSSIを使おうか迷っています。 サーバーに不可がかからず表示が早いのはどちらが早いんでしょうか?
静的なメニューならHTMLで。 鯖のことを考えるなら本当にCGIが必要かどうかから検討すべき。 そうでないなら好きなほうで。
584 :
582 :2005/10/08(土) 04:23:18 ID:CIqOzoxd
>583さんありがとうございます。 動的なメニューです。 鯖への負荷や表示の速度は PHP、ssiどちらをつかっても変わらないってことですか?
>>584 中身が作りこまれてないのにどっちがなんて比較できないだろ?
まあ、テキストをincludeさせるだけなら、SSIの方が軽い。
586 :
582 :2005/10/08(土) 04:45:21 ID:CIqOzoxd
>>585 ありがとうございます、SSIでやってみます
>>586 SSIでCGI実行させるよりPHPのほうが早い
セキュリティの為、 GETで取得した値が3桁の数字以外だったらエラーという処理を行いたいのですが、 if(!(ereg("([0-9]{3})", $_GET['code']))){echo "不正な値です"; exit;}; 上記だと3桁以上の数字にもマッチしてしまいます。 どうすれば3桁の数字のみマッチする様になるのでしょうか?
みなさん、リロード対策ってどうやってますか? たとえばA.php(フォーム)からB.phpにPOSTして結果表示するとして、 B.phpではリロードをされたくない場合(リロードされたら処理を中止してエラーに)。 いろいろ考えてみたけど、かなり複雑にしないとリロード対策できないみたいね… リロード対策くらい標準関数またはライブラリで用意してほしいですね。
>>588 if(isset($_GET['code'])
&& is_numeric($_GET['code'])
&& strlen($_GET['code']) == 3){
echo "適正な値かも";
}else{
echo "不正な値です";
exit;
}
>>591 えっっ、セッションでどのように?
A.phpでセッション変数に値を格納しておいてB.phpでリロードしても、
ずっとセッション変数は格納されたままだからリロード判定には使えないのでは。。。
>>592 リロード対策 セッション あたりでぐぐる。
>>588 >>590 が正しいっちゃ正しいが、めっちゃ丁寧。
簡単に対応させたかったら、その正規表現を"^[0-9]{3}$"にするといいよ。
「^」が最初、「$」が最後って意味。今のまんまだと、3桁の数字が含まれてたら〜、になってるはず。
完全一致にこれはよく使うから覚えとくとよし。
するとよくないだろ
よくねーな
今、テキストにそって勉強している最中なのですが、つまづきました。 Linuxでsendmailを使ってメール送信をするプログラムなのですが、ちゃんと動かず、 どうも拡張モジュールがうまくいってないようだと思い、再確認したんですが コンパイル条件にも--enable-mbstringをつけてるし、php.iniのextension_dirも /usr/local/lib/php/extを指定しています。おかしいなと思って確認すると、 phpフォルダ下にextフォルダがありません。これってどういうことでしょうか?インストールがうまくいってなかったってことですかね? どなたかアドバイスお願いします。 環境はFedoraCore4,php5.0.4です。
>>588 セキュリティのためってんならGET使うな
>>597 色んな可能性が考えられる。
phpinfoで確認して全部正しいか確認しる。
extension_dirはサーバーによって違ったりするから自分で確認して再セット。
あとはブラウザから呼び出して実行とかしてるんなら、php.ini弄ったらapache再起動な。
>>597 これってどういうこともなにも、そのまんま、無いってことだろ
cd /usr/local/lib/php/ext
が通るか?
601 :
588 :2005/10/08(土) 13:30:39 ID:???
>>590 >>594 >>598 ありがとうございました。
590氏がソースまで記述してくれたので、
これを手本にやってみます。
完全一致の件も参考になりました。
>588 正規表現の話なら ^[0-9]{3}$ とか
>>597 PHPのconfigure時に--enable-mbstringを付けてビルドしたのなら、mbstring関数は *静的* に組み込まれる。
なので、mbstringに関しては、extフォルダやmbstring.soがどうこうは関係ない。
<?php phpinfo(); ?>を実行して、Multibyte Supportがenabledになっているかどうかを確認してみたら?
ただ、sendmailが動作しない→拡張モジュールがうまくいっていない、という判断は正しいのかな。
sendmailが動かないというスクリプト、エラーメッセージ等を晒した方が早いんじゃないかな。
>>594 指摘済みだがそれだと4文字以上もマッチする。
>>597 とりあえずSendmail叩くプログラムは拡張モジュールじゃない。
スレタイ見てクソスレかと思ったら、 おまいら親切だな。 質問があるんだが、もう少しROMしてFAQ調べて、 切り分けて、環境書いて聞くことにする。 良スレだ。
607 :
nobodyさん :2005/10/08(土) 14:50:36 ID:51SvXaJn
はじめまして。
PHPのプログラムを作りたいと思っているのですが、お教えいただきたいことがございます。
作りたいと思っているのは、HP上に申し込みフォームのようなものを作成し、送信していただいたものを
メールで受け取るというものです。
そこでネット上でその一連の処理のサンプルプログラムをもらったのですがフォームの項目などを
自分が望むように作り変えるには、どの部分を変更すればいのでしょうか?
そのサンプルをアップローダーにあげていますのでどなたかご教授願えませんでしょうか?
サンプルです↓
indexと完了画面と自作のライブラリが入っています。(この自作のライブラリの意味がまったくわかっていないのですが
何もいじらなくても大丈夫でしょうか?)
http://up.spawn.jp/file/up1899.lzh 私自身、付け焼刃の知識なのですが、indexの上のほうの入力チェックのところと、メール送信処理の部分と最後のフォーム
の項目を作るところを変更すればよいと思うのですが違うのでしょうか?
フォームの項目を追加したりするのは大丈夫だったのですが、最初の方の入力チェックのところを変更するとブラウザで
表示させても真っ白な画面になってしまいました。なぜでしょうか?
上記のサンプルに自分自身でフリガナの項目を追加したものも上げますのでどこが間違っているかご指摘願えませんでしょうか?
サンプルです↓(なぜか真っ白になってしまい、表示されない)
http://up.spawn.jp/file/up1900.lzh phpファイルがupできないためlzhファイルに圧縮していることをお許しください。
長文失礼いたしました。
>>607 up1900.lzh に含まれる index.php だけど、10行目の先頭が全角スペースになってるね。
if ( $_REQUEST[ "VALUE_KANA" ] == "" ) {
~~
半角スペースにすれば大丈夫だと思うよ。
php.ini の display_errors を On に設定すれば、真っ白ページではなく
ブラウザにエラーメッセージを表示してくれるので設定しておくといい。
昔の田舎の交番に居たお巡りさんくらい親切だな。
610 :
608 :2005/10/08(土) 15:41:22 ID:???
>>607 up1899.lzh の方も見てみた。おまいさんが書いた、
indexの上のほうの入力チェックのところと、メール送信処理の部分と最後のフォームの項目を作るところを変更
で大丈夫。index.php 以外は触らなくてもいい。
ただ、元のスクリプト自体が結構いいかげんなので
>>608 で書いた display_errors = On にすると
警告メッセージが一杯表示されてしまうので、
display_errors = On
error_reporting = E_ALL & ~E_NOTICE
の両方を設定するか、元のスクリプトを修正(こちらの対応が望ましい)した方がいい。
他にも mb_xxx の文字コード指定等、修正した方がいいところはあるけど、キリがないのでこの辺で。。。
>>609 暇だったもので。
611 :
597 :2005/10/08(土) 16:50:54 ID:wzJ6Bsx7
皆さんレスありがとうございます。
>>599 >>603 phpinfoの一部をコピペします。
Configure Command './configure' '--with-apxs2=/usr/local/apache2/bin/apxs' '--with-gd' '--with-zlib' '--enable-mbstring' '--enable-trans-sid' '--enable-soap'
mbstring
Multibyte Support enabled
Multibyte string engine libmbfl
HTTP input encoding translation enabled
Multibyte (japanese) regex support enabled
Multibyte regex (oniguruma) version 3.7.0
エラーメッセージらしきもの
Warning: mb_send_mail() [function.mb-send-mail]: Missing To: field in /usr/local/apache2/htdocs/php10/day04-1/sendmail.php on line 9
>>600 通りません。phpの下にextがありません。
612 :
597 :2005/10/08(土) 16:51:49 ID:wzJ6Bsx7
sendmail.php(本に載っているものそのままです) <?php $header_info="From: ".$_POST['_from']."\nContent-Type: text/plain;charset=ISO-2022-JP\nX-Mailer: PHP/".phpversion(); $body="■■".$_POST['_subject']."■■\n\n"; foreach($_POST as $key=>$value){ if(!strstr($key,"_")){ $body.="[".$key."]".$value."\r\n"; } } mb_send_mail($_POST['_email'],$_POST['_subject'],$body,$header_info); header("Location: ".$_POST['_result']); ?> ちなみにapacheを立ててやってます。sendmailのパスは/usr/sbin/sendmail -t -i -f〇○○@〇○○.co.jp (自分のアドレス) どうでしょうか???
内部的に組み込まれた関数をcall_user_func()みたいに関数名を指定して呼び出したいのですが、 そんな関数はないのでしょうか?
614 :
597 :2005/10/08(土) 16:57:05 ID:???
追記 ちなみにwindowsでは同じプログラムでメールが送れました。
616 :
603 :2005/10/08(土) 17:05:13 ID:???
>>611-612 エラーメッセージが Missing To: field なので
mb_send_mail($_POST['_email'],$_POST['_subject'],$body,$header_info);
行で参照している $_POST['_email'] の中身が空なんだと思う。
sendmail.php を呼び出している側を見直してみたら?
とりあえずメールが送信できるかどうかのテストなら
mb_send_mail('おまいさんのメールアドレス',$_POST['_subject'],$body,$header_info);
でテストはできるけれど。
>>613 「内部的に組み込まれた関数」をもう少し正確に。
スクリプト内部で定義した関数は、そのまま関数名で呼べるし
文字列に入ってる関数名でも呼べる手段がある。
そういうことを言いたいのじゃないと思うけど。
>>613 質問の意味は判らんが、可変関数かeval
619 :
597 :2005/10/08(土) 17:54:17 ID:wzJ6Bsx7
>>616 なんか説明不足ですみません。
このシステムはmail_input.phpからsendmail.phpを呼び出すプログラムなので
値はちゃんと渡されていると思います。さっきのエラーメッセージはsendmail.phpに直接アクセスしたときのものでした。
ちなみに
<?php mb_send_mail(アドレス,件名,本文); ?>
というプログラムにアクセスしてもメールは送られませんでした。
ということはやはり拡張関数がうまく機能していないのではないでしょうか?
また、各サイトを回ってみましたが、/usr/local/lib/php/extが無いという例はありませんでした。
やはりphpフォルダの下に、*.soを含むextフォルダが無いことが原因でしょうか?
>>619 簡単なスクリプトで
sendmailコマンド自体が叩けるかどうかをまず確認した方が。
>>619 phpinfo()のほうが詳しいが、$ php -mで組み込まれてるモジュールが見える。
上で言われてるように静的に組み込まれてるんだよ。そういう風にConfigurしてるんだから。
soが出来るのは --with-foobar=shared のように指定した場合だけ。
あと「渡されていると思います」って何?
622 :
597 :2005/10/08(土) 18:14:37 ID:???
>>620 すみません、もう少し詳しくお願いします。。。
>>619 >やはりphpフォルダの下に、*.soを含むextフォルダが無いことが原因でしょうか?
本当に
>>603 を読んだ上での発言なのか?
>>620 同感。fc4ならデフォでsendmail動いてるし、パスもiniそのままで通るはずだけどね。
625 :
623 :2005/10/08(土) 18:25:39 ID:???
sendmailのパスを書いてあるけど、これはphp.iniに sendmail_path =/usr/sbin/sendmail -t -i -f〇○○@〇○○.co.jp と設定しているって意味でいいんだよな? phpが動作しているサーバーにログインして echo "To: 送信先メールアドレス" | /usr/sbin/sendmail -f〇○○@〇○○.co.jp で正常にメール(タイトル、本文は空)は届くのか?
>>622 ただ単にphpから、sendmailコマンドでメール送るだけのプログラムを書く。
文字通りそれだけ。
つーか、fc4の環境は知らんが、/usr/sbin/ なんていきなり叩けるのか?
627 :
613 :2005/10/08(土) 18:46:34 ID:???
>>617 >>618 すみません、言葉足らずでした。
strlen()やarray_push()みたいに予め用意されている関数のことです。
自鯖ではMySQLを使っているのですが、レン鯖ではSQLiteな為、
関数呼び出しの度に場合分けするよりcall_user_func()みたいに指定して呼び出すことが出来れば
場合分けが1度ですみ楽だなぁと思ったもので・・・
なんにしてもPHPの問題じゃなさそうだね。
PHPでログインフォームを作成しています。 テキストボックスにパスワードなどを入れて、キーボードのEnterキーを 押すと、submitボタンがクリックしてログイン出来るというのが普通だと 思うのですが、なぜかEnterキーを押しても反応しません。 マウスで送信ボタンを押さないと。。 これってどうしてこうなるのでしょうか?なにかFormに設定や記述が必要なのでしょうか?
PHPでフォーム作ってんの? HTMLで作ってんじゃないの? テキストボックスにパスワードですか。 テキストボックスが複数あるとエンターで送信出来なかったりするらしい。 実験してないから知らんけど。 ユーザ名はテキストボックスで、パスワードはtype=passwordにしてみれば? 関係ないけど、 >submitボタンがクリックしてログイン出来る 日本語が変ですよ。
>>629 その辺はブラウザが行う動作なのでPHPは関係ないし、ブラウザ毎の振舞いの話なので
オマイさんの言う「普通」というのはありえないよ。
確かにそのように動作してくれるブラウザの方が多いとは思うけれど。
別のブラウザで試してみるか、動作しなかったブラウザをカキコしてみればだれか
追試してくれるかもね。
参考までに以下のブラウザでは大丈夫だったよ。
IE6 SP2、Opera8.01、Firefox1.0.7
確認なんだが、本当に submit ボタンなのか?
属性が button で javascript で submit しているとかではないよな?
一組のフォームタグの中にテキストボックスとボタンをきちんと配置してあれば 入力欄が複数あってもEnterキーで送信されると思うんだけどな。 あ、でもNetscape4.9ではダメだった。
633 :
630 :2005/10/08(土) 23:33:44 ID:???
よく使う関数を定義するのと、別ファイルに用意して単にincludeしちゃうのとどっちが処理が早いでしょうか?中身によりますか?
ログインフォームとかだと問題無いが、チャットの入力窓とかだと、ENTERで押せないとキツいな。 「リターンキー」と言ってしまう中年でした
>597
$headerinfoの中身をってかその場所直にでもええけど
"From:
[email protected] " ようはFrom: フィールド
だけにして試してみなされ。
スレ違いですけどよろしくおねがいします あるテーブルの内容が パターン表 { NO , CL1 , CL2 , CL3 } という4つの列で構成されていたとして CL表 { CL , CLNAME } への参照をしています。(CL1〜3 references cl(cl) ) SQLで、CL1,CL2,CL3に対応するCLNAMEを結果として出力するには どんなSQLがありますかね。。。orz
スレ違い
>>634 何故ベンチを取らないのか不思議だが
ファイルI/Oに構文解析という糞重い処理が、関数のコールより軽いわけが無い
何度もIncludeを繰り返すとかもうアホかと
ただし速ければいいというわけじゃなく意味的に関数にふさわしいかどうかは考慮する必要がある
本人も判ってるっぽいけど状況や要件によるだろうなぁ そういや今読んでるAjaxACのソースでもメソッド内で 外部ファイル読んで(requireだが)たりするな
>>640 何度も呼ばれる処理をinclude()するのが関数よ
りはやいケースって例えばどんなですか?
コンパイル済みのをメモリにキャッシュ出来るけど
それでもinclude()のスタックは削れないし、そも
そもこれはファイルの中身によるというわけでは
ないし。ピンとこないです。
マンコはやばいなマンコは
スレ違いと認識してんのに、よろしくお願いしますとか言って書いてくヤツってどんなズ太い神経してんだろうな
やたら長いソースなら分割した方が速い
4G超えるようなソースを書かせる職場は辞めたほうがいいぞ
PHPはcreate_function()がクズ。なんとかならんかねアレ
いいこと思いついた。お前書いてZendにサブミットしろ
Perlは40000行と、それを3000行くらいで分割なら後者が8倍くらい速かったが、PHPで試すのマンドクセ
Perl厨アホとか言われるから黙っててくれまいか。
言いたいことは伝わるし間違ってないと思うが? 上の質問読まずにレスしてるか関数を知らないという、ただそれだけのことだろ
[a] 麓b] ファイル一覧を表示させようとしています。 ディレクトリ[a]の中にディレクトリ[b]があります。 $dh = opendir("."); while(($entry = readdir($dh))){ print"$entry\n"; } ↑のようなPHPファイルをディレクトリ[a]に置いて実行するとディレクトリ[a]のファイル一覧が表示されるのですが、 $dh = opendir("./b"); としたところ . .. しか表示されません。ディレクトリ[b]のファイル一覧を表示するにはどのようにすればよいでしょう?
そういえば前から気になってたんだけど ディレクトリ開いたときに入ってくる . .. って一体なに?
655 :
597 :2005/10/09(日) 17:28:56 ID:GtXpmFa3
皆さんレスありがとうございます。もう一度確認してみます。 あと、おそらく今回とは関係ないのかもしれないですが、 /usr/local/lib/php/extが無いっていうのはおかしくないのですか? もしあとから動的に組込みたいときとか組み込めなくないですか?
>>654 前者はカレントディレクトリ、後者は1つ上のディレクトリ
657 :
652 :2005/10/09(日) 17:39:03 ID:???
[b]には.php .jpgファイルがいくつか入っています。
658 :
652 :2005/10/09(日) 17:45:48 ID:???
すみません自己解決しました。 is_fileだとjpgファイルは表示されないのですね。
>>658 表示されますよ。
どこかでミスをしているんでしょう。シャワーでもしてすっきりしてきませう
>>655 ディレクトリくらい必要なら作ればいいだけじゃないのか?
あと、どんなMakefile作ったかしらんがデフォだとLIBDIR/extensions/no-debug-non-zts-YYYYMMDD/*.soになるぞ
設定は自分の好みでやればいい
662 :
655 :2005/10/09(日) 18:57:30 ID:???
もともとインストールしたときにextフォルダに*.soが入ってるんじゃないんですか?
質問する前にマニュアルくらい読んだら?
文章中のスペースとタブをすべて消すにはどうすればいいんですか?
>>664 正規表現を使う。正規表現について調べよう。
666 :
597 :2005/10/09(日) 21:35:16 ID:GtXpmFa3
>>616 <?php
mb_send_mail("自分のアドレス","件名","文章");
?>
でもメールは届きませんでした。
>>625 その意味で正しいです。
cat 適当なファイル | /usr/sbin/sendmail アドレス
でもダメでした。
>>626 /usr/sbinは行けます。(叩けるっていうのはアクセスできるという意味でしょうか)
>>636 やってみましたけどうまくいきませんでした。
ただ/var/log/maillogを見るとログは残っているのでsendmailの設定の問題でしょうか?
667 :
nobodyさん :2005/10/09(日) 21:46:39 ID:JXyGtMyG
Solaris にインストールしたいんですけどやり方を教えてください。
>>666 >
>>625 > その意味で正しいです。
> cat 適当なファイル | /usr/sbin/sendmail アドレス
> でもダメでした。
>
>>626 > /usr/sbinは行けます。(叩けるっていうのはアクセスできるという意味でしょうか)
つまり、sendmailコマンドを知らないということか・・・。
「適当なファイル」じゃなくて、
>>625 の通りのことをやって(もちろん To: アドレスは自分に)
メールが届くかどうかをテストする。
「叩ける」というのは、コマンドが実行できること。
lsとかで /usr/sbin ディレクトリが見えるとかじゃないよ。
>>626 が言ってるのは、/usr/sbin/sendamail を nobody が実行できるの?ってこと。
670 :
597 :2005/10/09(日) 22:18:47 ID:???
>>668 コマンドラインで
echo "To: 送信先メールアドレス" | /usr/sbin/sendmail -f〇○○@〇○○.co.jp
でもRecipient names must be specified
と返ってきます。
sendmailをnobodyが実行できる、というのはパーミッションの問題でしょうか…?
一応755でした。
>>667 マニュアルのやり方で普通にコンパイルできるし
出来合いのパッケージもある
>>666 FC4でSendmail使うならネットワークと権限の適切な設定が必要
同じ事を繰り返してもダメよ >もう一度確認してみます
673 :
597 :2005/10/09(日) 22:47:11 ID:???
見てる限りConnection Refusedっぽいな。ログにあると思うけど。 いいかげんスレ違いなんで異動してもらいたい。
ちょ…親父が風呂ん中で寝てんだけど…。
676 :
nobodyさん :2005/10/10(月) 02:55:51 ID:9d+wLEX3
>>675 _,,..,,,,_
/ ,' 3 `ヽーっ
l ⊃ ⌒_つ
`'ー---‐'''''"
綺麗な顔してるだろ・・・死んでるんだぜ・・・それで・・・
風邪ひくぞ。
それ「で」?
漫画ネタじゃん、突っ込むなよ
誰かがアクセスしてきたときとか、特定の作業を行ったときに鯖からbeep音を出したいのだが、 ncurses_beep って使えるの?
>>681 Windows環境(4.4.0)だとundefined functionだった。
685 :
681 :2005/10/10(月) 15:32:06 ID:???
ncurses_beepの件、 超過疎なロダ鯖なので、誰かがダウンロードしようとしたら「ピッ!」なんて鳴るといいかなと。 「あっ、お客さんだぁ!」 わぁいヽ(∇⌒ヽ)(ノ⌒∇)ノわぁい♪ ってな感じで・・・
>>685 ロダだったらどこかのロダを必要としてるスレに張れば賑わうよ
そのうち管理するのもだるくなる。。。
if($_COOKIE['rec']<time()) setcookie('rec',time()+1*24*60*60,time()+1*24*60*60); と言う風にCookieを発行して、発酵されるのを確認したんだが、 if($_COOKIE['rec']<time()){ 〜〜〜処理〜〜〜 } が常に実行されてしまう。 $_COOKIEに値を確認したら何も値が入っていなかった。 鯖:XREA無料 ローカル(WinXP+Apache2)では正常動作してくれたんだが・・・・・・・ だれか解決法頼む。
>>688 ダメだ、$_COOKIE['rec']<time()を両方
(isset($_COOKIE['recountDay']) && $_COOKIE['recountDay']<time()) || !isset($_COOKIE['recountDay'])
にしたが実行されてしまう。
ミスったrecountDay→rec 実際のスクリプトでは間違ってないから大丈夫。
>>689 その条件文ならrecがなければtrueになるのは当然でしょ
>>691 Cookieが無い場合、若しくは現在時刻より以前の場合に実行したいんだ。
693 :
nobodyさん :2005/10/10(月) 16:39:30 ID:lawxVnGW
正規表現の質問ですが複数行にわたった記述をしてある場合にマッチさせるにはどうすればよいのでしょ うか? 例:<TD align=left class=top colSpan=3 vAlign=bottom width=468> 対象文字列 </TD> のような場合。
>>693 一気に読み込んで pregで複数行マッチ(mオプション)。
>>692 &&は||より優先度が高い。(マニュアルの 言語リファレンス/演算子/演算子の優先順位 より)
>>689 の条件式だと、セットされてない場合は常にtrueになる。
まさしく希望通りに動作している。
>>692 そういう話か
.htaccessで
php_flag register_globals Off
とするか
$_COOKIE['rec']のかわりに$recを使って見て
698 :
687 :2005/10/10(月) 16:57:53 ID:???
IDが表示されないのか。気づかなかった
>>695 じゃあ括弧要らなかったな。
>>696 ダメだ、両方ともやったがCookieに値が入らない
699 :
687 :2005/10/10(月) 17:03:43 ID:???
ちょっと実行方法の詳細書くわ。 テキストカウンタのスクリプトだから、別スクリプトからrequireで読ませてる。 別スクリプトは一階層上で、Cookieの発行は確認した。 当然setcookie使うからファイルの先頭で読ませて出力させる前にCookie発行させてる。
>>698 コード的には if (empty($_COOKIE['rec'] || $_COOKIE['rec'] < time()) {} でOK
s151のデフォルト設定では動作したよ
error_reporting(E_ALL);
setcookie('rec', time()+60*60, time()+60*60, '/', 'hoge.s151.xrea.com');
var_dump($_COOKIE);
>Cookieの発行は確認した
通信をキャプチャして見たってこと?
Set-CookieヘッダがあるのにブラウザがCookieを返してないとか
続き ブラウザがCookieフィールドを送ってるのに$_COOKIEがNULLとか そういう状態?
>>700 だめぽ
if (empty($_COOKIE['rec']) || $_COOKIE['rec'] < time()) {}
703 :
nobodyさん :2005/10/10(月) 17:35:39 ID:8yA4547b
>>699 いじってる間にブラウザに変なクッキー食わせちゃったんじゃないの?
クッキー消去してブラウザ再起動してみたらどうだろう
えーと
>>693 なのですが
初心者なもので一気に読み込んでというのがよくわかりません
サンプルを書いてもらえませんでしょうか?
何が分からないのか分からない。 複数行あるならそのように正規表現を書けばいいだけじゃない。
さっき知ったんだけどさぁ, $_SERVER['PHP_SELF']ってサニタイズしないとだめなんだね・・・ <form action="{$_SERVER['PHP_SELF']}"> こんな感じで使うと即あぼーん. セキュリティについて書いてあるサイトでもこういう風に 使ってるところがあったりするからまだ表面化してないのかな..
ああ,そうだ,これって常識? って聞こうとしてたんだった.
PHP_SELF 使わないからなぁ
>$_SERVER['PHP_SELF']はサニタイズしないとダメ 質問:なぜ危険なのか教えて。 #URLエンコードで送信した「<>"'」とかを、自動でデコードしてPHP_SELFに格納するならXSS脆弱性がありそうだけど、 #>現在実行しているスクリプトのファイル名です。ドキュメントルートから 取得されます。 #って書いてあるし、これのどこが危険なのだろうか・・?
712 :
707 :2005/10/11(火) 01:26:50 ID:???
>>712 なるほど、任意の文字列を表示させられるのは確かに危険ですね。
ありがとうございます、参考になりました。
すみません、ここに書いてもいいものか分からないのですが、
PHPなので質問させていただきます。
http://www.lovpop.net/apricot/の 「apricot」というPHPのアクセス解析を
アンインストールをせずに消してしまったのですが、
「apricot.php.data」というフォルダがどうやっても消せなくなりました。
中に何が入っているのかも「550 Permission Denied」と出てしまい分からない状態です。
設置し直してアンインストールしてみても駄目だったので
PHPから消せるだろうと思ったのですが
BBSに書いてあったunlinkとrmdirもうまくいきませんでした。
最後の手段としてサーバの管理人様に頼もうと思っているのですが、
もしも他に何か方法があればご教示願います。
Apache権限になってるとかか?
716 :
714 :2005/10/11(火) 03:47:31 ID:???
>715 たぶんそうだと思います。 こんな時間にすいまそん
それなら、PHPから削除してやれば出来る筈だが・・ うーむ・・
718 :
714 :2005/10/11(火) 04:19:26 ID:???
<?php unlink("./apricot/apricot.php.data/admin/area.txt"); 〜略〜 rmdir("./apricot/apricot.php.data/admin/"); rmdir("./apricot/apricot.php.data/"); ?> を実行したら消えたとBBSに書いてあったんですが、 フォルダ名を変えてみたりしてもなぜか一向に消える気配がないんです。
↓apricot.phpより。これ実行して無理なら管理者に聞いた方が早そう。 <?php $BASE = 'apricot.php' $dir_main = opendir("$BASE.data"); while (($ent = readdir($dir_main)) !== false) { $path_sub = "$BASE.data/$ent"; if (is_dir($path_sub) && $ent{0}!='.') { $dir_sub = opendir($path_sub); while (($ent_sub = readdir($dir_sub)) !== false) { $file_name = "$path_sub/$ent_sub"; if (is_file($file_name)) { unlink($file_name); } } closedir($dir_sub); rmdir($path_sub); } } closedir($dir_main); $result = rmdir("$BASE.data"); ?>
720 :
714 :2005/10/11(火) 04:51:59 ID:???
うおおーありがとうございます! しかしさっそく実行してみたんですが駄目でした……。 仰る通りサーバの管理者に訊いてみます。 本当にありがとうございました。
勉強がてらアクセス解析を作ってるんだけど、 ログってどんな形で保存すると使い勝手がいいの? みんなはどうしてるのか教えてください。
>>721 自分がどんな解析をしようとしていて、どんな解析処理をしようと考えているかによるでしょうな。
解析に必要な情報を処理が喰いやすい形で保存汁
724 :
nobodyさん :2005/10/11(火) 11:28:44 ID:lk3myPm8
1日に何千ものデータになるんならログなんかよりもデータベースになるだろうしな。 解析処理とサンプル数次第だと思う。 リファラーをとることになると多くなるんだよね・・・
725 :
nobodyさん :2005/10/11(火) 11:38:13 ID:oTT+29Sw
jpeg2wbmpやpng2wbmpの一番最後の引数の意味ってなんでしょうか? 直訳すると「敷居」なんですが…。 これで、BMP画像ファイルを自動生成して、Excelに貼付けたいのですが 正常なBMPファイルが生成出来ないです。
bmp 貼れないの?
脱字.bmp じゃないと貼れないの?
728 :
nobodyさん :2005/10/11(火) 12:02:53 ID:QJ4uo7le
PHPスクリプトでPDFファイルを生成した時に、文字化けしてしまいます。 今は、pdf_set_font($pdf,"Times-Roman",35,"host");としているのですが、 ↑ この部分をどう変えればよいのですか?
729 :
728 :2005/10/11(火) 12:05:10 ID:QJ4uo7le
すいません、矢印ずれました。 "Times-Roman"の部分をどう直すか、という意味です。
>>725 なんでエクセルがでくるの?
wbmpはウィンドェズビットマップじゃないよ
ここで処理を〜秒停止するみたいな関数ありますでしょうか?
733 :
731 :2005/10/11(火) 12:22:22 ID:???
書き込んだ途端見つけることができました。 sleepですね。
>>728 どんな環境でやってるのか知らんが、「HeiseiMin-W3」とかは?
pdf_set_fontを宣言しないで出すとどうなる?
735 :
725 :2005/10/11(火) 13:48:31 ID:???
jpGraphでPNGもしくはJPEG形式でグラフを作成し、それを
SpreadsheetExcelWriterでExcelに貼付けるという作業を
やっているんですが、SpreadsheetExcelWriteがBMP形式しか
サポートしていないので、BMPに変換したいのです。
>>730 そうだったのですか orz
とりあえず、JPEGで書き出して、djpegコマンドでBMPに変換して
貼付けてみる事で対処しました。
スーパーグローバル変数のGETを使いtest.php?id=1にアクセスした場合はaと表示しtest.php?id=2にアクセスした場合はbと表示することはできるのでしょうか? できるならばだいたいでいいのでソースを書いてもらえないでしょうか。 ちなみにFormを使うGETは使い方をマスターしたんですが上記みたいなことができないんです。
くだらねぇ.実にくだらねぇ このスレにぴったりの質問だ. ↓回答
残念。それは私のおいなりさんだ
アホでしょ? <?php if ($_GET['id'] == 1) { echo 'a'; } else if ($_GET['id'] == 2) { echo 'b'; } ?>
お伺いしたいのですが、 phpで作成されたxml(html)ファイルを ダウンロードさせるということは可能ですか? 作成されたxml(html)ファイルとは画面に表示されたという意味です。 ご存知の方よろしくお願いします。
742 :
nobodyさん :2005/10/11(火) 17:55:09 ID:G45STU1Q
>>741 名前をつけて保存とかさせればええやん。
というのはおいといて、アクセスしたらダウンロードさせたいの?
それなら、
header ("Content-Disposition: attachment; filename=$filename");
とかをダウンロード用の引数つきで呼び出されたときにつけてやれば?
>>742 参考になりました。ありがとうございました。
phpで作成されたxmlを
サーバ側にファイルを保存せずに
ダウンロードさせたかったもので。
>>739 ありがとうございます。
お陰で成功しました。
くだらん質問を聞いてくれてありがとうございます(_ _*)_ _*)
745 :
687 :2005/10/11(火) 21:04:28 ID:???
>>700 ,704
・ローカルに保存されたCookieがあった
・setcookieがtrueを返す
から発行されたのを確認してたんだが、ローカルのCookie消して、ブラウザ再起動してアクセスしたらCookieが発行されなかった。
まだsetcookieの返り値は確認してないんだが、ローカルに保存されてないから多分falseだと思う。
もうちょっと考えてみるわ。
4バイトバイナリを16進数文字列に直して、それをさらに数字に直す時に $four_letters = chr(0x23) . chr(0xb6) . chr(0xa8) . chr(0xc7); $the_number = intval(bin2hex($four_letters), 16); とすると、2の補数表現の関係か整数の0x7FFFFFFF(2147483647)までは普通に変換されるけど、 $four_letters = chr(0xF8) . chr(0xb6) . chr(0xa8) . chr(0xc7); $the_number = intval(bin2hex($four_letters), 16); 0以下(2の補数表現でマイナスの数字)をintvalしようとすると自動的に プラスの値の上限(2147483647)が$the_nuberに入ってしまうんだけど、 簡単に$the_numberにマイナスの数字を入れる方法を教えて下さい。 今は、たまたま-16,777,216(0x80FFFFFF)以下の数字を使わないので、 substr() を使って上位1バイトを条件文(if〜else)にかけてビット反転(~)などを駆使して $four_letters = chr(0xF8) . chr(0xb6) . chr(0xa8) . chr(0xc7); $four_letters_hex = bin2hex($four_letters); if (substr($four_letters_hex, 0, 2) == "ff"){ $four_letters_lestdigit = ~ (intval(substr($four_letters_hex, 2, 6), 16)); $four_letters_not = sprintf("%x", $four_letters_lestdigit); $four_letters_int = -1 * (1 + (intval(substr($four_letters, 2, 6), 16)));} else $four_letters = intval($four_letters_hex, 16); などとしていて、今後上位1バイトがFF以下の数字を変換する必要性が出ても、 それに合わせて条件文や計算を変えてやればいいのだけど、 もしかしたら、もっと1行や2行程度で済む方法があるような気がして・・・・
ゴメン間違えた。 > 今は、たまたま-16,777,216(0x80FFFFFF)以下の数字を使わないので、 間違い)16,777,216(0x80FFFFFF) 今は、たまたま0xFF000000よりマイナスの数字を使わないので、
質問です。 変数が$q1から$q99まであるのですが forを使用して表示したいのですが for($i = 1; $i < 100; $i++){ $q[$i]="$q".$i; echo $q[$i]; } これだとうまくいきません。 配列に変数を格納する事は出来ないのでしょうか? またうまいやり方があれば教えて下さい。
749 :
748 :2005/10/11(火) 22:02:52 ID:p5WBUvB7
上げ忘れました。すいません
>>748 そのまま突っ走りたい場合はマニュアルの「可変変数」を参照。
うまいやり方というか、なんというか、$q1〜$q99のような使い方を最初からしない方がよいかと。
751 :
748 :2005/10/11(火) 22:07:40 ID:???
>>748 この手の質問は繰り返しあるな。。。
750 氏の言う「$q1〜$q99のような使い方を最初からしない方がよいかと」に同意。
とりあえず以下でオケ。
for($i = 1; $i < 100; $i++){
$x = 'q' . $i;
$q[$i] = $$x;
echo $q[$i];
}
ある意味、$q1から$q99まで行く方が遥かに難しい。尊敬しそう。
754 :
748 :2005/10/11(火) 22:18:44 ID:???
>>752 有難うございます。
出来ました。凄く感動してます。
これが出来るといろいろ応用できそうですね。
755 :
752 :2005/10/11(火) 22:29:10 ID:???
>>754 いやいや、これの応用を考えるより今後は
$q1〜$q99 なんかを使用しない方法を考えた方が。。。
756 :
748 :2005/10/11(火) 22:56:40 ID:???
>>755 今回はアンケートを取るのに使用しました。
formの名前を決めていくならこういう方法しか
ないと思っていたのですが、もしかしたら他に
方法ありますでしょうか?
普通に配列つかえばいいじゃん
>>756 <form action="unko.php" method="post" >
<input type="text" name="q[]" /><br />
<input type="text" name="q[]" /><br />
<input type="text" name="q[]" /><br />
<input type="text" name="q[]" /><br />
<input type="submit" name="SEND" />
</form>
//unko.php
<?php
var_dump($_POST[q]);
?>
POSTの順序は保証されないんじゃなかったっけ qにはキーを指定したほうがいいと思う
前から気になってたんだけど、name属性に [ ] を使っていいのかな?
HTML4.01の日本語訳
ttp://www.asahi-net.or.jp/~bd9y-ktu/html4rec_f/cover.html から、
name属性は CDATA
ttp://www.asahi-net.or.jp/~bd9y-ktu/html4rec_f/types.html#type-cdata と辿ることができて、その中に、
「IDやNAMEトークン字句は、文字([A-Za-z])とそれに続くdigits ([0-9])・hyphens ("-")・
underscores ("_")・colons (":")・periods (".")で始まらなければなりません。」とある。
ちょっと誤解を招きそうなので、原文も参照してみると、
「ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed
by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods ("."). 」
なので、最初の文字が[A-Za-z]でその後に [0-9] - _ : . が続く事になるよね。
ここに [ ] は含まれないので、本当は使っちゃまずいんじゃないかと。。。
>>760 実際問題、
現状ほぼ全てのブラウザで使えてるんだから、
イインジャネェノ?
(将来的には知らんが)
inputのname属性はCDATA属性値でしょ?
Yes
>>765 使い方も書いてあると思うが
あと、ここで聞くならそこの掲示板で聞けばいいじゃん
と思うのは俺だけ?
>>112 の拡張で、
>>119-120 >>125 さんのソースを元に
更新参照ファイル ページ名 飛び先URL
../xxx/zzz.log お絵かき掲示板 ../xxx/gazou_bbs.cgi
../../yyy/yyy.dat 質問掲示板
http://yyy.net/bbs/faqbbs.cgi ./www.log お知らせ ./histry.cgi
という感じで、表示する「ページ名」と飛び先のURLを事前設定して、
一番新しく更新されたログを参照し、(ここでは仮に./www.log)
html上で
10/11 <a href="./histry.cgi">お知らせ</a>
みたいにページ名とリンクを自動で貼ってくれるようなものって作れないでしょうか?
作ろうと思う気合いさえあれば作れる
>>746 質問の意図がわからんけど、要は符号付4ビットバイナリを10進数に直したいだけ?
$a=unpack('Nans',chr(0x23) . chr(0xb6) . chr(0xa8) . chr(0xc7)); echo $a['ans'];
599173319
$a=unpack('Nans',chr(0xF8) . chr(0xb6) . chr(0xa8) . chr(0xc7)); echo $a['ans'];
-122246969
検算は(゚听)シテネ
>>760 name属性とNAMEトークンを混同している
CDATAの説明は ID and NAME tokens must begin ・・・の前で終わりだ
>>770 746です。
まじで1行ですね。
ありがとうございます。
↓ココの配布サイト様にある
ttp://www.mt312.com/ ↓PHP4 写メール対応掲示板 IMG-BBS
ttp://www.mt312.com/archives/imgbbs.html の設置について質問です。
ダウンロードしてサーバーにアップ、正常に設置は出来たのですが、
携帯からメール送信して画像をアップ出来るようにする方法がわかりません
config.phpの96行目にある
// 写メール項目
define("POP3_MAIL", "");// 受信メールアドレス yes="
[email protected] " no=""
define("POP3_HOST", "");// 受信ホスト名
define("POP3_USER", "");// 受信ホストユーザ名
define("POP3_PASS", "");// 受信ホストパスワード
の欄に何を設定したらいいのかがマジにわからないのですorz
頭が禿げるほど調べたり試したりしてみたのですが
検索ワードが悪いのか、お手上げ状態です…
たとえば、やほー等フリーのアドレスを取得して
それを受信メールアドレスに設定し、
そのアドレスに画像付きメールを送信すれば
画像掲示板に投稿…出来るようになるのでしょうか。
その場合、受信ホスト名、受信ホストユーザ名、受信ホストパスワード
には何を入れたら良いのでしょうか。
阿呆な質問をしてホントに申し訳ないのですが
どなたかおわかりになる方がいましたら、
何卒ご教授の程宜しくお願い致します。
>>773 配布されたスクリプトについては、配布している奴のところで質問すべき。
775 :
774 :2005/10/12(水) 12:04:54 ID:???
>>773 > 受信ホスト名、受信ホストユーザ名、受信ホストパスワード
はYahooの POPホスト、POPユーザー名、POPユーザーパスワードだな。
>>773 POP3で受信できるメールアカウントが必要だ
OutlookExpress開いてアカウントの設定を見たらわかるよ
>>774 ,775,776,777
速攻でレスありがとうございました。
もう一度配布元のサポートを徹底して調べてみることにします。
779 :
773 :2005/10/12(水) 13:29:05 ID:???
778=773でした。すみません。
780 :
728 :2005/10/12(水) 14:11:30 ID:???
>>734 遅レスすいません。
言われた通りやってみましたが、共にエラーが出てしまいました。
シフトJISやEUCにしたい場合、どう書けばよいでしょうか?
>>780 マニュアル見たら古い関数ですと書かれて引数ものっていないぜ<pdf_set_font
783 :
780 :2005/10/12(水) 15:58:26 ID:xQ56+Qqe
>>781 pdf_set_font($pdf,"Times-Roman",35,"host");だと、エラーは出ないで
出力できるんですが、日本語が化けてしまうんです。一応使う事は出来るみたいです。
pdf_set_font〜の少し上の方に、pdf_findfont($pdf,"Courier","host",0);
としているのですが、これが問題なのかもしれないです。
ここの"Courier"を他の何かに変えたら、もしかしたら動くかも、と考えているところです。
どなたか心当たりは無いでしょうか?
784 :
780 :2005/10/12(水) 16:15:18 ID:???
>>782 たぶんその辺だと思います。
ちょっとこの周辺をいろいろいじってみようと思います。
つーか、Times-Romanてのは半角欧文用フォントじゃねーの?
786 :
nobodyさん :2005/10/12(水) 17:53:26 ID:4hCrpEso
ここはくだらないので、もっとためになるスレはありませんか?
787 :
nobodyさん :2005/10/12(水) 18:01:48 ID:MJ2G+N2s
2ちゃんねる掲示板のCGIどこにあるのれすか?
789 :
nobodyさん :2005/10/12(水) 18:19:15 ID:MJ2G+N2s
なぜゆえに?
>>789 書き込みのスクリプトはPerlだが読み込みはC。
791 :
nobodyさん :2005/10/12(水) 18:31:14 ID:MJ2G+N2s
>>791 そうなんですか
分かりました
失礼します。
>>741 に書き込んだものですが、phpで作成されたxml(html)をダウンロード
させたいのですが、writer.phpというソースをダウンする事はできるのですが、
writer.phpが作成するxmlをダウンさせる方法がわかりません。
phpが作成するhtmlやxmlをダウンロードさせる方法をお願いします。
<?php
$outputname="writer.php";
header("Content-Type: text/xml");
header("Content-Disposition: attachment; filename=$outputname");
@readfile("writer.php");
?>
793 :
nobodyさん :2005/10/12(水) 18:47:05 ID:MJ2G+N2s
ミスった
>>791 じゃなく
>>790 だった
てなわけで
も一つくだらない質問します
>>790 いるなら書いてくらさい
だったらHTMLで掲示板作れないんですか
HTMLで作れるなら作れば(テラワロス 藻前にはPC自体まだまだ早いぉ
2chは板表紙とスレ一覧が静的だからHTMLと思ったのでは?
796 :
掲示板を楽しむ者 :2005/10/12(水) 18:56:48 ID:MJ2G+N2s
>>794 もういいです
もうCGI持ってますから
面白い回答ありがとうございました<笑>
>>792 742のようにすれば出来たけど。
<?php
$outputname="hoge.xml";
header("Content-Type: text/xml");
header("Content-Disposition: attachment; filename=$outputname");
$dom = new DOMDocument;
$dom->encoding = "UTF-8";
echo $dom->saveXML();
?>
>>793 790じゃないがそこらへんに落ちてるBBS使えば?
>>797 これを実行すると確かにxmlファイルをダウンできましたが、
中身が殻でした。
writer.phpを実行するとxml形式のrssが表示されるのですが、
それをダウンロードさせたいのです。
>>793 writer.phpに
$outputname="writer.php";
header("Content-Disposition: attachment; filename=$outputname");
をつけるとどうなる?
×@readfile("writer.php"); ○ require('writer.php');
こう、僕の心を癒してくれるような書き方は無いでしょうか? どうもコードを見ると吐き気がするんです。
>>806 ここはコードを書く際に生じた疑問を聞く場所であって
CGIを作って欲しいという「依頼」はスレ違いだから去れ
このスレに質問に来るような奴が暇潰しに書いてみた。動作未チェック、エロイ人添削お願い。 <?php define('CONFIG_FILE', 'config.csv'); $fp = fopen(CONFIG_FILE, "r"); while ($conf = fgetcsv($fp, 1024)) { $filemtime = filemtime($conf[0]); if ($filemtime > $latest_time) { $latest_time = $filemtime; $msg = conf[1]; $url = conf[2]; } } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title></title> </head> <body> <?php echo date('n/d',$latest_time); echo '<a href="' . $url . '>' . $msg . '</a>'; ?> </body> </html>
コード的には$latest_timeが初期化されてないのと、 データがない場合が想定されてないのとconfの頭に$がない 以外はいいんでないの 動作的には遅そうだけど環境がシビアじゃない or CSVファイルが 小さいならこれでおkという印象 あと、これ echo '<a href="' . $url . '>' . $msg . '</a>'; は echo "<a href=\"$url\">$msg</a>"; のほうが速いらしいね エスケープが嫌だから俺は異端のヒアドキュメント派だけど 最後に。 動作チェックしろよ
出力データはロジックパートで作ってしまって、 HTMLに埋め込むのはecho文だけにしたほうが
ちょいとお聞きします。 サーバOSはWin2kでサーバはapache使ってます。 で、特定のメンバーにBcc使ってメールを送るもの作ってます。 今はimap_mail関数を使っているのですが処理がものすごく遅いです。 (送信相手は2人で最大でも16人) mailを送る関数でBccを使い複数のメンバーにメールを送る場合、 どれが一番処理が早いでしょうか?
>>810 うわ・・凡ミス連発してた。動作チェックはするべきだね・・・。
>>811 次からそうしますね。
ラジオボタンを利用した3択のクイズで10秒たてば どのラジオボタンを押しても”0”という値を他のPHPに送り 10秒以内ならそれぞれのラジオボタンに入れてある数値を送る という処理をするのにはどうしたらよいでしょうか? データを送るなどは出来ますが時間制限を設けるとなると分からないので 今回質問しました。 宜しくお願いします
816 :
軟式PHP :2005/10/13(木) 10:14:39 ID:???
>>815 セッションにクイズ開始時間を保持させておいて、ラジオボタンの
値はとりあえずそのまま送信させる。
送信後ページで現在の時刻とクイズ開始時間を比較させて10秒以上だったらラジオボタンの値を0にするってのは?
厳密にやらないならJavaScriptで時間制限(timer)・自動送信(location)・ラジオボタンの値(form.elements.value=値)の変更も全部出来る。
>>815 板違い
サーバーサイドの処理とクライアントサイド処理の違いを認識すべし
漏れならJavascriptを使う
つか、ラジオボタンで3択にすると2回クリックする必要があるので、
それで時間制限アリってのは不親切では?
818 :
815 :2005/10/13(木) 10:53:39 ID:???
>>816 さん
返信どうもです その方法で作ってみますね
ありがとうございました
>>817 さん
JavaScriptですかぁ Javaの方はいまいち分からないので
816さんの方法で作ってみます
あと板違いすみませんでした・・・
JavaとJavaScriptは別物だと何度言えば(ry
820 :
815 :2005/10/13(木) 11:56:32 ID:???
セッションについてネットで調べたりしてみましたが出来ませんでした 時間をセッションに入れるには session_start(); session_register("jikan"); $jikan= date("s"); この様なphpであっているのでしょうか?(エラーが出るので違うと思いますが・・・ それとクイズの問題表示と問題開始時間が決められるのがphp1として クイズが合っているのか判定するphpをphp2としております php1からphp2へ,問題開始時間のセッションの値を渡すのも出来ませんでした。 あと時間をifで比べるということもいまいち分かりませんでした、 if( 開始時間+10 > $date_s = date("s")){ 答えの値を0 { この様なif文で出来るのでしょうか?開始時間に+10と書いて+されるのか心配です データがうまく渡っていなかったので試すことが出来なかったのでお聞きしました。 1.セッションにクイズ開始時間の保存の仕方 2.違うphpにクイズ開始時間の値の渡し方 3.時間を比べて10秒以内だったら答えの値を0にする判定文 以上を教えていただければ非常に助かります 質問も多くて申し訳ないですが 宜しくお願いいたします。
821 :
nobodyさん :2005/10/13(木) 11:59:38 ID:geTy/+mk
>>806 C-BOARDとそのオマケにあるだろ。ちゃんと探せや。
>>820 1と2
セッション使わなくても
ページ内にhiddenで埋めて回答と一緒に返せばよいと思う。
そんなに神経使わなくて良い物でしょ?
3
現在時間から開始時間を引いた値が10以上とする方が楽。
>>820 --- php1.php ---
<?php
session_start();
$_SESSION['jikan'] = time();
$fjikan = date('Y/m/d H:i:s', $_SESSION['jikan']);
echo <<<EOD
<html>
<body>
開始時間:{$fjikan}
<form action="php2.php" method="post">
<input type="radio" name="answer" value="1">テスト1
<input type="radio" name="answer" value="2">テスト2
<input type="radio" name="answer" value="3">テスト3
<br><input type="submit" value="送信">
</form>
</body>
</html>
EOD;
?>
824 :
823 :2005/10/13(木) 12:20:06 ID:???
続き --- php2.php --- <?php session_start(); $start = $_SESSION['jikan']; $jikan = time(); $fstart = date('Y/m/d H:i:s', $start); $fjikan = date('Y/m/d H:i:s', $jikan); $diff = $jikan - $start; $answer = $_POST['answer']; if ($diff >= 10) $answer = 0; echo <<<EOD <html> <body> 開始時間:{$fstart}<br> 現在時間:{$fjikan}<br> 差:{$diff}秒<br> 答え:{$answer} </form> </body> </html> EOD; ?>
825 :
823 :2005/10/13(木) 12:24:10 ID:???
>>824 php2.phpの</form>を消し忘れた。。。
827 :
nobodyさん :2005/10/13(木) 13:10:44 ID:G6+P+YYd
PHPで、文字列にMigemoのような検索をする方法ってありますか? 最悪、対象はひらがなやカタカナだけでもかまわないんですが。
自分で、ローマ字列から正規表現を生成するやつを実装しては? (オープンソースだし、コード読んで移植するのも可)
829 :
sage :2005/10/13(木) 14:12:02 ID:I2B+Ardh
なにぶん初心者なので、言葉足らずになるかもしれませんが、教えてください。 PHPで、PSQLデータ内の行の1つを取り出すための言語。 (例、ID・001 name・PC value・300と言うデータの中の300だけを取り出す) どういう言語なのか、それと使い方も教えてもらえればうれしいです。 言葉足らずでしたら、すいません。
830 :
815 :2005/10/13(木) 14:12:55 ID:???
>>822 さん
貴重な意見ありがとうございます
>>現在時間から開始時間を引いた値が10以上とする方が楽。
確かにそのとうりです 勉強になりますありがとうございました。
>>823 さん
ソースまで記入してくださり大変感謝です。
やってみたところ無事に秒数を取ることが出来ました。
しかし問題が一つあります
経過時間などもちゃんと表示されて値も渡っているのですが
警告がでてしまいます、以下に記入しています
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Program Files\Apache Group\Apache2\htdocs\kuizu\toi2.php:2)
in C:\Program Files\Apache Group\Apache2\htdocs\kuizu\toi2.php on line 3
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Program Files\Apache Group\Apache2\htdocs\kuizu\toi2.php:2)
in C:\Program Files\Apache Group\Apache2\htdocs\kuizu\toi2.php on line 3
このエラー文を検索してみると結構有名らしく色々出てきました、
php.iniをサイトに書いてある通りにいじったりしましたが
無理でした。 こちらでも現在エラーの原因を探している最中です
もし分かる方がいらっしゃれば教えていただきたいです。
831 :
軟式PHP :2005/10/13(木) 14:13:20 ID:???
初心者すぎるだろwww
832 :
軟式PHP :2005/10/13(木) 14:14:55 ID:???
アレ。
>>831 は
>>829 に対してね。
>>830 はsession_startをコードの一番初めに書いていない(何か出力した後にsessionをスタートさせている)んじゃないかな。
833 :
815 :2005/10/13(木) 14:24:25 ID:???
>>832 さん
>>session_startをコードの一番初めに書いていない(何か出力した後にsessionをスタートさせている)んじゃないかな。
はい 私もネットで調べてそれは初めに見てみたのですが コードの一番上に記入しておりますので
その事でエラーが出ているという事は無いですね
ちなみにエラー箇所であるtoi2.php on line 3 は
>>823 さんのコード通りです
間違いなく先頭から書かれているならsession_start()がある2行目でエラーが出るはずだが・・・ 改行があるか、「--- php2.php ---」までコピペしているに1票
835 :
815 :2005/10/13(木) 14:31:08 ID:???
すみません 自己解決いたしました みなさんこんな超初心者にやさしく回答していただき 本当にありがとうございました。 いつか答える側になれるように勉強がんばります
836 :
815 :2005/10/13(木) 14:34:32 ID:???
834さんの言う通りでした・・ 改行がありました 改行もダメとは夢にも思っておりませんでした お答えいただきありがとうございました
改行もダメなんだっけ?
<? が始まる前に改行があったらダメ。 改行文字(1byte〜2byte)が本文として出力される(=本文を出力したのでヘッダ送信も終了した事になる。)
839 :
823 :2005/10/13(木) 14:52:54 ID:???
>>835-836 動いて良かったね。サンプルなんで省略してるけど
$answer = $_POST['answer'];
辺りのコードは、本来はサニタイズする必要がある($answer をどう扱うかにもよるが)。
サニタイズとは?とか、どうすれば?とかは、まったりと勉強してくだされ。
そのまま使用することはないだろうし、勉強中の習作だと思うけど、念のため。
>>812 imap_mail()でもWinは直接SMTPで送るみたいだから、mail()と多分いっしょ。
リモートのSMTPサーバを利用しているのなら、ローカルにMTAをたてて、
そこにキューを溜めるようにすれば多分速くなる。
ローカルにあるMTAで遅い場合、それはPHPの問題じゃないね。
なぜPHP-usersに送ったら 確実にヲチスレで嘲笑されるようなくだらねぇ質問が, このスレでは普通に回答されるのはどうして?
Formに入力した値を保存ボタンを押すことによってtest.txtに出力しDLが始まるようにしたいのですがなかなかうまくいきません。 test.txtに出力するのと保存を両方処理させるのに困ってます。 どうかご教授くださいお願い致します。
残念でした 「うまくいきません」はNGワードです
>>842 まるまる答えを書くのは簡単なんだが、どう上手くいかないか書いた方が暇ネタとして
相手してもらえると思うけど…
まずは
入力値をtest.txtに保存する処理
text.txtをダウンロードさせる処理
の2つに処理を分けて、それぞれがキッチリと動くことを念頭においてやってみたら?
>>829 PSQLっていう名前のデータベースまたはデータストレージ製品つうのが思い浮かばない。
PostgreSQLにpsqlっていうツールはあるけど。
まあPSQLというぐらいだから、SQL(問い合わせ言語)が使えるんじゃないの。
SQLにも細かいところで差異はあるけど、標準的な仕様に合わせるように極力してる筈
だから、一般的なSQLについて調べると良いよ。初心者向けの本も沢山出てる。
例の場合、「SELECT value FROM テーブル WHERE ID='001' AND name='PC'」とか。
普通IDはユニークな値とするものだから、AND以降は不要かもね。
>>841 ・下らねぇ質問スレだから
・暇な人が居るから
×暇 ○物好き
そうとも言う
PHP-usersには、他人をバカにすることでしか自尊心を保てないような器の小さな人間が多いから。 このスレには、つまらない知識の独占なんてバカバカしいと思ってる度量の広い人間が多いから。
正直,ただのひつまぶしだけどな
くだ質だから これに尽きる
853 :
nobodyさん :2005/10/14(金) 13:22:00 ID:hq2CEuCn
include関数は負荷は高め?
854 :
sage :2005/10/14(金) 13:22:54 ID:/+ebJ9UK
841さん851さん、ありがとうございます。 くだらなさすぎて、スルーされるかと思いました。 参考書も買ったのですが、少し理解力に欠けまして・・・ もう少しがんばってきます。
テキストファイルで 佐藤 佐藤 鈴木 佐藤 田中 佐藤 田中 と言う感じで書かれている中から同じ名前が3つ以上ある者を 変数に持ってくるにはどうすればいいんでしょうか? ほんと初心者ですいません・・・
>>855 1) file でテキストファイルを読み込んで配列に展開
2) array_count_values で 1) の配列を元に配列データと出現回数の連想配列を作成
3) 2) の連想配列から出現回数 >=3 をチョイス
>>856 すいません、小一時間悩んだんですが出来ませんで、
3) 2) の連想配列から出現回数 >=3 をチョイス
の所を簡単に書いていただけないでしょうか?
つ [ foreach if ]
859 :
856 :2005/10/14(金) 16:16:18 ID:???
>>857 う〜ん、余計なお世話かもしれんが…
1)、 2) はまるまる答えを書いているようなもので、唯一 3) が
ロジック(と言うほどのものでもないけど)を考えるところだから、
ここを丸投げしなければならないのはプログラムを作る人としてはつらいかも。
3 回以上出現する名前が複数存在する場合を考慮して配列($achoices)に
格納した例が以下。絶対に複数存在しないのであれば、普通の変数でもいい。
<?php
$alines = file('test.txt');
$anames_counts = array_count_values($alines);
$achoices = array();
foreach ($anames_counts as $name => $count) {
if ($count >= 3) {
// echo "$name<br>"; //debug
$achoices[] = $name;
}
}
print_r($achoices);
?>
ファイルが小さいなら 名前でソートしてforeach 3連続ヒットでピックアップ でかいならwhileで一行ずつ読み if (isset($count[$name])) $count[$name]++; else $count[$name]=1; のように集計 もしくはDBに突っ込んで SELECT name, COUNT(name) AS num FROM test GROUP BY name HAVING COUNT(name) > 2;
ちょっとワロタ
863 :
855 :2005/10/14(金) 16:56:17 ID:???
皆さんどうもすいませんです。
一応配列にはしなかったんですが
>>859 と同じようにしたつもりなんですが
出力されませんでした。
で、
>>859 をコピーさせて頂いたんですがやはり出力しません・・・
$anames_counts = array_count_values($alines);
print_r($anames_counts);
だとちゃんと出てくるので何だかよく分からなくなってしまいました。(@_@;)
ご迷惑かけて申し訳ありませんです。
>>863 おそらくテキストファイルの方がおかしいんじゃない?
ちゃんと1行に1つの名前にしてる?
ファイルのパス間違えてない?
865 :
855 :2005/10/14(金) 17:17:07 ID:???
>>864 新しくtest.txtで打ち直してやってみたんですが、
$anames_counts = array_count_values($alines);
print_r($anames_counts);
だと
Array ( [佐藤 ] => 4 [加藤 ] => 1 [山田 ] => 1 [飯田] => 1 )
で出るんですが、foreachの処理を入れるとやっぱり空白になっちゃいます
>>865 var_dump($achoices);
すると何てでる?
タイポだろ
いや、ifの前の空白のほうが目があるか
あー原因分かった。 そのままコピペしたんだろ?全角スペースが入っちゃってるでしょ。 全角スペースを消せばOKだ
>>868 それかと思ったがエラーが出るとは言わずに空白になるって言ってるからな。
>>870 コンソールじゃないんでしょ
んでerror_reporting(0)という
試してみた.全角混じってると parse error 出るね. それ直したらちゃんと動いたよ.当たり前だけどww
fgets()でファイル全体を舐めずに途中にある一行だけを読む事は 可能でしょうか?
行の位置が分かればfseek()で可能
875 :
855 :2005/10/14(金) 17:41:48 ID:???
>>868-872 えー、全くお察しの通りでこちらでも動きました。
本当にご迷惑おかけしましたm(_ _)m
ご親切にしてくれた方、有難うございました。
JpGraphの日本語化について質問です。
http://www.asial.co.jp/products/jpgraph/japanese.phpを参考に変更もしました 。
フォントを呼び出すにはどうすればよいのでしょうか?当然ながら$graph->title->SetFont(FF_PMINCHO);ではなりませんでした。
<?php
require_once("jpgraph/jpgraph.php");
require_once("jpgraph/jpgraph_bar.php");
$objGrh = new Graph(450,250,"auto");
$objGrh->SetScale("textlin");
$objGrh->title->Set("bbb");
$objGrh->xaxis->title->Set("ccc");
$objGrh->xaxis->title->Set("テスト");
$data=array(array(500,100),array(400,200));
$objPlot[]=new BarPlot($data[0]);
$objPlot[]=new BarPlot($data[1]);
$objPlot[0]->SetLegend('AAA');
$objPlot[1]->SetLegend('BBB');
$objPlot[0]->SetFillColor('
[email protected] ');
$objPlot[1]->SetFillColor('
[email protected] ');
$objGbp=new GroupBarPlot($objPlot);
$objGbp->SetWidth(0.80);
$objGrh->Add($objGbp);
$objGrh->Stroke();
?>
877 :
876 :2005/10/14(金) 18:40:29 ID:???
現在、9行目にだけテストと入れていますが 他のアルファベットの部分を日本語にしたいのです。 上の構文でもグラフは出力できますが、日本語の部分は文字化けしています。
スクリプトのエンコーディングが何か書いてないけど、 当然ながら jpgraphに渡される文字列がUTF-8になっていますよね?
テキストファイルなんかに書き込むときに ファイルの最初にどんどん挿入していく方法ってありますか? たとえば 1 2 3 とあったときに4を一番上の行に追加して 4 1 2 3 としたいのですが。
ボケちゃったおじいちゃんカモシレナイよ
>>881 ワロスwwww
同じじゃねーかwwww
日本語理解できねんだろ
質問した俺もワロスww
よく読んだらちょっと違う。 俺の場合はDB使わずに、普通にファイル読み込んで、先頭の行に挿入するという方法が知りたいのです。 正規表現で ^ でリプレイスするというような方法しかないですか?
正規表現で置換とかどっから仕入れたネタですか
888 :
nobodyさん :2005/10/14(金) 21:39:17 ID:87Z0VpJT
ファイル削除について質問なのですが、このようにワイルドカードを使って 同名で別の拡張子のファイルを消す良い方法はあるんでしょうか? ちなみにこれ↓ではダメでした…。 $del_file_name='/usr/local/apache/htdocs/img/'."img_001".'.'."***"; unlink( $del_file_name );
>>888 ライブラリ使わないとなると、globとかでリスト作って一個ずつ消すしかなさそう
``でシェル呼べばそれで終わりだけどね
>>888 マニュアルに参考になるサンプルって結構あるよね。
unlink
To delete files using wildcards:
<?
function delfile($str)
{
foreach(glob($str) as $fn) {
unlink($fn);
}
}
?>
>>886 殆どのファイルシステムでファイルの書き込みは
良くてデータの追記ができるぐらいで、データ全体の置換が普通。
ギャップを用意するとか分割するとか出来るけど データ構造がわからんと何とも言えん。言えることは「DB使え」のみ
>>886 そんなアルゴリズムは捨てちまえ。
追加は、ファイルのけつにするもんだ。
頭が尻みたいな形の奴もいるけどな
>>886 追加は末尾にして,使うときに並べ替えるとか
input.phpの内容が↓な感じで <FORM action="input.php"> <INPUT type="text" name="data1"> <INPUT type="text" name="data2"> <INPUT type="text" name="data3"> : input.php の中で data1〜n に入力ミスがないか調べた上で、 data1〜n に入力されたデータを output.php に送りたいのですが、 これは一体どうやれば良いのでしょうか? header("Location:")を使うと値は渡せませんし…。 入力ミスがあった時は「エラー!! **個目のデータを入力し直して下さい」と表示し、 入力ミスがない場合は次のステップへ進む、という処理をしたいのです。
色色方法はあるが、とりあえずこの機会にセッション覚えたら
>>898 解答ありがとうございます。
セッション変数にそんなに多量の情報をブチ込んでも大丈夫なんですか?
ログインの過程でセッションを触ったので、セッション変数でのやり方なら分かるんですが、
何かスマートでない感じがして…。
>セッション変数にそんなに多量の情報をブチ込んでも大丈夫なんですか 具体的に
901 :
876 :2005/10/14(金) 23:42:44 ID:???
>>878 エンコーディングってファイルとして保存するときに設定するやつのことですか?
それなら、EUCと改行はLFにしています。
訳の分からないことを言っていたら、教えて頂けたらありがたいです。
<INPUT type="text" name="data1"> <INPUT type="text" name="data2"> <INPUT type="text" name="data3"> : と書きましたがこれが結構あるんです。最大で50個程度。
>>902 それがセッションにどういう問題を引き起こすのかってこと
表示部分を各phpファイルから独立させて、フラグ(ここでは入力チェックの合否)に応じて、
表示に使うファイルをincludeなりrequireなりするとややこしくならなくてよいような。
>>901 jpgraphに渡す文字列はUTF-8にしてあげてください。
>>903 と言う事はセッション変数に多量の情報を入れても大丈夫なのですね。
ありがとうございました。
>>905 それは実装次第だから分からんし保証もでけん
やはりこれを機にSession覚えたほうがよさそうだよ
>>904 これどっちが主流なんだろ
エントリポイント一つの方が作りやすいけど
フォワードするケース多いよね
ファイルの先頭に挿入する方法が現実的ではないらしいので、 ファイルの後ろに足して、あとから後ろから数行だけ読み込むって処理はできますか? feofなんかで回して止まった時点の直近の配列数個とかいう手段以外でもっとスマートなやり方が あればいいんですが、どうなんでしょうか。
>>908 自分が作ったファイルだけ相手にするんだったら一行の文字数を固定すると色々楽
>>908 >>874 とか。ファイルの操作ならtailやtocを参考にしてみては
質問自体はFAQだけど、データ構造しだいだから解答しようがない
スマートにやりたいならスマートなアルゴリズムで扱える構造に設計するしかないよ
×toc ○tac
>>910 そりゃそうだ
データが分かってりゃもう出来たようなものじゃん
>>908 改行なんてものは単なる文字の1つなんよ。
言ってしまえば、aとかbとか他の文字とおんなじ扱いなので、
行を単位にして(その部分だけに)アクセスしたり編集(挿入・削除・追加 etc)する方法は無いんよ。
どうしてもやりたきゃプログラムを書く人が自分でやれってな感じ。
判りやすい説明だ。
915 :
nobodyさん :2005/10/15(土) 01:51:20 ID:lw7SpU92
書くときは末尾に追加して読むときは配列に読み込んで反対にすりゃいい
916 :
876 :2005/10/15(土) 02:41:12 ID:???
>>904 UTF−8で渡すとは、つまり、
>>876 を保存するときにUTF−8とLFで
保存すれば良いのでしょうか?それでしたら、もうやってみたのですが普通に文字化けしているのです。
904は $objGrh->xaxis->title->Set(mb_convert_encoding("テスト", "UTF-8", "auto")); ということをいいたいんじゃまいか?
もりあがっていこうよ!!
919 :
876 :2005/10/15(土) 03:09:54 ID:???
>>917 ご支援ありがとう。
$objGrh->xaxis->title->Set("テスト");の行の下に足してみました。
その後、上の行を消し代わりに入れてみました。
ですが、文字化けには全く変化がありませんでした。
SetFontした? $objGrh->title->Set("bbb"); $objGrh->xaxis->title->Set("ccc"); $objGrh->yaxis->title->Set(mb_convert_encoding("テスト", "UTF-8", "auto")); $objGrh->yaxis->title->SetFont(FF_GOTHIC, FS_NORMAL, 16); xaxisのタイトルに2回Setしてるけど?
というか、876よく見たら >フォントを呼び出すにはどうすればよいのでしょうか?当然ながら >$graph->title->SetFont(FF_PMINCHO);ではなりませんでした。 これ $graph->title->xaxis->SetFont(FF_PMINCHO); じゃないの?
↑ごめん、間違えた $graph->xaxis->title->SetFont(FF_PMINCHO);
923 :
876 :2005/10/15(土) 03:44:59 ID:???
>>920 していませんでした。先ほどの書き込みに習い8行目以降をそのまま
コピペしてみましたが、やはりなりませんでした。
設定ミスなど、どこか根本的なエラーがあるのでしょうか?
924 :
876 :2005/10/15(土) 03:50:02 ID:???
926 :
nobodyさん :2005/10/15(土) 04:42:07 ID:8GPgJI8N
PHP4.4.0でも使用できるアクセレーターってありますか? eアクセレーターはちゃんと動かないし、Zend Optimizerは未対応といわれて、動作しませんorz
>>908 1レコード1ファイルで連番付けて保存しとけば?
所詮テキストファイルで管理できる程度のレコード数なら無問題
とあるサンプルコードに function hoge ($params, &$result) { ・・・ } という記述がありました。 この &$result についている & の意味(効能)を教えてください。
マニュアルに書いてある
>>928 ドキュメントを読むか、簡単なプログラムを書いて自分で確認する癖を付けた方が良かっぺ。
<?php
function hoge ($params, &$result) {
$params = '1'; $result = '2';
}
$workparams = 'A'; $workresult = 'B';
hoge($workparams, $workresult);
echo "workparams = $workparams<BR>";
echo "workresult = $workresult<BR>";
?>
もし管理人が死んだ場合、サイトにその旨を表示させるにはどうすればいいですか? どこを監視すれば管理人の生死について出来るだけ正確な判定できると思いますか?
933 :
926 :2005/10/16(日) 06:42:28 ID:???
自己解決しました。 4.4.0に合うアクセレーターは見つからなかったので、4.3.11のportsを拾って再構築してeAcceleratorを入れました。
935 :
nobodyさん :2005/10/16(日) 07:01:48 ID:J/3a2VXK
1カ月くらい更新してなかったら死亡用ファイルを更新なり読み込みなりすりゃいいんじゃないの。
一番確実なのは市役所の住記情報だな アクセスできるかどうかはわかんないけど
ミケネコさんを 思い出しちゃった…合掌
938 :
nobodyさん :2005/10/16(日) 11:43:02 ID:RSZhtmwP
PHPくだスレにVIPPERが多い件について
940 :
nobodyさん :2005/10/16(日) 15:01:33 ID:4AFyuy0O
test.php?query=aaa の形ではなくて test.php?aaa のようなクエリーを受け取る方法を教えてください 変数はどんなんになるんでしょうか
>>940 ネタなら面白くない。
マジレスするなら$_SERVER['QUERY_STRING']
>>941 $_GETじゃないんですね
ありがとうございました
補足というか蛇足かもしれないけど, PATH_INFOやmod_rewriteについてもそのうち調べてみれば? test.php?aaa の ? なしにデータを受け取れるようになるよ.
>>943 こういうのがあるんですね、知らなかったです。
ちょっと検討してみます。
ありがとうございました。
>>943 PATH_INFO、俺だけかもしれんがちょっと使いづらい。
946 :
nobodyさん :2005/10/16(日) 16:22:25 ID:2l1eRJuS
教えてください。 perlでa〜zを配列に入れるばあい下記のようにすると思いますが @a=('a'..'z'); phpではこのようなことできないのでしょか? $a=array('a'..'z'); ってだめなのですが、他にやり方あるのでしょか?
きれいな感じなのはないんじゃない。forで回したりするくらいかね。
ここでトリッキーなコード登場 ↓
$a = array(); for($i = ord('a'); $i <= ord('z'); $i++) { $a[] = chr($i); } var_dump($a); C言語風だけどこれしかないんじゃないかな・・・ やったことないからしらねww
$s='abcdefghijklmnopqrstuvwxyz'; これを上手く使えんかな
特にトリッキーでもなかったので再挑戦↓
952 :
946 :2005/10/16(日) 16:52:24 ID:???
>>947-950 皆さんありがとう!
ごめんなさい自己解決してしまいました。
なんか
$a=range('a','z');
で行くみたいです。
元質問者が一番スマートな回答をした件について
>>952 あれ,既にあったのか.
さすがPHPだなー,なんでも関数になってる.
PHP関数の全体なんて把握できねぇよヽ(`Д´)ノウワァァァン
ファイルのアップロードフォームで、ファイルサイズが大きい場合、 ブラウザが読み込み中になるのですが、その間に「処理中」という風に 別のメッセージを出す事って可能なのでしょうか? サーバでの処理が長い場合は、別メッセージを出す事は可能なのですが クライアント->サーバ間の処理が長い場合はどうすれば…?
959 :
949 :2005/10/16(日) 18:27:52 ID:???
>>958 だって,車輪探すより作った方がはえーよwww
・・・マニュアルでも眺めるとするか
>>957 PHP-users ML の過去ログ検索で探すと
それ関連の話がいっぱいでてくるかもしれない.
961 :
957 :2005/10/16(日) 19:03:24 ID:???
>>960 PHP-usersの過去ログ検索は一通りしたのですが、クライアント側からデータを
サーバに受け渡すのに時間がかかる場合のものは見つかりませんでした。
サーバでの処理に時間がかかる場合にメッセージを表示させたりというのはあった
のですが。
フォームからsubmitするときに、2つのプロセスを立ち上げて片方は「アップロード中」
というメッセージを表示して、もう一つのプロセスでファイルアップロード自体を
扱うという事が出来れば良いのですが…。
962 :
nobodyさん :2005/10/16(日) 19:36:30 ID:PiJRyBSb
PHPに関する資格ってありますか?
ないんじゃないの
964 :
nobodyさん :2005/10/16(日) 19:39:34 ID:PiJRyBSb
やっぱりそうですか なんか資格とればっていわれたので
あるけど、取るほどの資格じゃないでしょ。 それにメジャーじゃないし。
自分は普段PHPがよくわからなかったのでCGIを全てperlですましていたのですが、 この度アクセスログを取ることにしたのですが、負荷の問題を考え、PHPを使おうと思いいろいろみて調べ、 PHPのタグをトップページに埋め込もうと思いました。 しかし、環境変数の取得方法がわかりません… もしよろしければ、来訪者の環境変数を、丸ごとでよいのでそのままdatファイルに吐いていくコードを教えていただけないでしょうか…?シンプルなものでよいので よろしくお願いしますm(_ _)m
968 :
nobodyさん :2005/10/16(日) 20:03:08 ID:6lmrKTje
>>967 <?php
print_r $_SERVER;
?>
>>967 perlやってりゃ少しググれば組めそうなものだが
>>967 は質問内容から、何も判っていないのでは?と思われる。
・PHPがよくわからなかったのでCGIを全てperlですましていた
・負荷の問題を考え、PHPを使おうと思い
・PHPのタグをトップページに埋め込もうと思い
・シンプルなものでよいので
あたりからプンプン臭ってくる。
学校の宿題なら自分でやろうな. それか分からないところを整理してから質問してくれないと.
$s[index]てな使い方を言いたかったんじゃないかな。 まぁ、range()使うのが素直なやり方だけど。 $s='abcdefghijklmnopqrstuvwxyz'; for($i=0;$i<strlen($s); $i++) echo $s[$i]."<br>";
$s='abcdefghijklmnullpoqrstuvwxyz';
>>976 $s='abcdefghijklmnoprsgaxtuwvyz';
$s='abcdefghijklmgaxtuqrstuvwxyz';
学校の宿題でPHPなんてありえるの? そらすげーな。
>>961 JavaScriptで出せばいいんじゃないの?
古くて簡単な方法なら別窓やiframeをうまく使ってsubmitと切り分ければいいし。
Ajaxを使う手もある。
Ajaxなら「何%完了」とか「予想時間」とかもがんばれば出せるのでは?
あ、アップロード中の一時ファイルの場所を別アクセスのプロセスから特定できないと無理か・・・
981 :
957 :
2005/10/17(月) 04:28:17 ID:??? >>980 結局、JavaScriptでやりました。別ウインドウを開いて、親ウインドウを監視してって感じで。
どんなやり方にしろ、ファイルのアップロードプロセスを監視する仕組みを入れないと細かい
動作は難しいみたいですね。
Apacheのモジュールに組み込めば実現可能なのかな?