【PHP】質問スレッドpart34【php】
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2006/03/21(火) 10:19:14ID:???【ガイドライン】
質問の前にgoogleやマニュアルを検索してください。
http://www.php.net/manual/ja/
http://php.s3.to/namazu/
◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄には何も記述しないでください)
2. ハードウェア、OSのバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。
5. 質問者としても態度をわきまえること。
◆質問後の注意
・質問者は必ずIDを表示させてください。
書き込む場合はメール欄に何も記述しないでください。
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
過去スレ、関連リンク、FAQ等>>2-10辺り
0002nobodyさん
2006/03/21(火) 10:19:54ID:???【PHP】質問スレッドpart33【php】
http://pc8.2ch.net/test/read.cgi/php/1140027592/
【PHP】質問スレッドpart32【php】
http://pc8.2ch.net/test/read.cgi/php/1136276300/
【PHP】質問スレッドpart31【php】
http://pc8.2ch.net/test/read.cgi/php/1133017632/
【PHP】質問スレッドpart30【php】
http://pc8.2ch.net/test/read.cgi/php/1130190606/
関連リンク
■本家マニュアル http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル http://pear.php.net/manual/ja/
■メーリングリスト http://ns1.php.gr.jp/mailman/listinfo/
(以下英語)
■Smarty http://smarty.php.net/
■Zend本家 http://www.zend.com/
■Zend Framework http://framework.zend.com/
■php | architect http://www.phparch.com/
■Smartyマニュアル http://smarty.php.net/manual/en/
■ZFマニュアル http://framework.zend.com/manual/en/
■PECL本家(英語) http://pecl.php.net/
まだ英語しかないマニュアルも後々/manual/en/を/manual/ja/に変えてみたら日本語があるかもしれません。
0003nobodyさん
2006/03/21(火) 10:20:32ID:???【PHP】下らねぇ質問はここに書き込みやがれpart18
http://pc8.2ch.net/test/read.cgi/php/1142417901/
【PHP】PEAR Part2
http://pc8.2ch.net/test/read.cgi/php/1122899232/
[PHP]フレームワークについて語るスレ2[総合]
http://pc8.2ch.net/test/read.cgi/php/1135847024/
【Smarty】PHPのテンプレートエンジン【Flexy】
http://pc8.2ch.net/test/read.cgi/php/1118799352/
[PHP-users MLヲチ8]巣もいませんでした。
http://pc8.2ch.net/test/read.cgi/php/1132800251/
正規表現道場@2ch Part4
http://pc8.2ch.net/test/read.cgi/php/1105930285/(落ち)
Webでオブジェクト指向プログラミング
http://pc8.2ch.net/test/read.cgi/php/1133489897/
関連板
データベース(SQL、DBMSの話題はこちら)
http://pc8.2ch.net/db/
プログラム(CLI、アルゴリズム、インタプリタの話題はおそらくこちら)
http://pc8.2ch.net/tech/
Web制作(クライアントサイドの話題は問答無用でこちら)
http://pc8.2ch.net/hp/
0004nobodyさん
2006/03/21(火) 10:21:06ID:???1. ブラウザに何も表示されないんだけど・・・
→ error_reporting()や、php.iniのdisplay_errors、log_errorsを確認
2. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ できません
3. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
→ 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
4. echo "$arr['hoge']['fuga']"; がうまくいかない
→ {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
5. echo?print?
→ echoはコンマ区切りで書けるけど関数ではない。printは関数。パフォーマンスは気にするな
6. 値渡しと参照渡し(「&」を使う)のパフォーマンス
→ この二つはパフォーマンス目的で使いわけたらダメ。よく知らずに参照渡しにすると遅くなったりする
参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
7. CSVやTSVのファイルをスマートに扱いたい
→ まずはfgetcsv()
8. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
→ fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
9. 一定時間ごとに何かしたい
→ cron、タスクスケジューラ
10. 画像処理一般 or GDの限界
→ ImageMagick(PECLのやつ or シェルから実行)
0005nobodyさん
2006/03/21(火) 10:21:38ID:???→ 好きにしてください
12. クッキーの情報をユーザから隠したい
→ セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
13. このスレに書き込むときに自分のサイト名を晒したくない
→ http://example.com/が例文などのために予約されている
14. SQLの質問はどこで?
→ データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
15. 記号の意味がわからないけどググりようがない
→ 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス
「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
16. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
→ ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
17. strip_tags()で削除しないタグを複数指定したい
→ strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
18. そもそもインストールの時点でうまくいかない
→ 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
19. PHPからPOSTリクエストしたい
→8.を参照
0007nobodyさん
2006/03/21(火) 10:52:53ID:???乙です。
以前、
> 2. ハードウェア、OSのバージョン等を明記すること。
について議論なかったっけ?
バージョンに関しては、基本的に必要なのはPHPのバージョンだけで、内容によってはWebサーバとそのバージョン、もしくはOSやハードウェアって感じになると思うんだけど。
まあ「そんなテンプレ律儀に守る奴いねーよ」って言われればそれまでなんだけどさ。
0008nobodyさん
2006/03/21(火) 11:00:37ID:???確かにハードのバージョン書くよりは
phpやサーバのバージョンのほうが情報として意味があるよな
0009nobodyさん
2006/03/21(火) 11:10:13ID:???もっと大事な情報が欲しい
0010nobodyさん
2006/03/21(火) 11:21:23ID:???まさかPHP3使ってるやつはそういないだろうが…
0011nobodyさん
2006/03/21(火) 12:21:43ID:???→ echoはコンマ区切りで書けるけど関数ではない。printは関数。パフォーマンスは気にするな
printは厳密には言語関数
http://jp2.php.net/manual/ja/function.print.php
001211
2006/03/21(火) 12:22:48ID:???×言語関数
○言語構造
0013nobodyさん
2006/03/21(火) 14:18:41ID:???↓これも追加希望
わからない五大理由
1 読まない
2 調べない
3 試さない
4 理解力が足りない
5 人を利用することしか頭にない
0014nobodyさん
2006/03/21(火) 14:25:43ID:???俺もエスパーキボンヌは名残惜しいが、ハァ?って言う人の気持ちもわからなくもないのであえて文句は言わないことにした。
その5大理由も久々に見たなw
900台で訴えないとたぶんカットされるよ。
0015nobodyさん
2006/03/21(火) 14:31:38ID:???次スレで修正が必要だね。
5. echo?print?
→ 同じ。
でどうよ?
標準的にはechoを使ったほうがいいのかな。マニュアルでも随所でechoを使ってるし。
0017nobodyさん
2006/03/21(火) 14:55:57ID:???> 元はといえばそれが改編の火種だから
むしろテンプレ全体がわかりづらかったから変えることになったんでしょ。
0019nobodyさん
2006/03/21(火) 16:58:15ID:???0020nobodyさん
2006/03/21(火) 17:28:29ID:???0022nobodyさん
2006/03/21(火) 18:40:48ID:???エスパーのやつここが元ネタかな?
http://www.redout.net/data/osietekun.html
0023nobodyさん
2006/03/22(水) 02:04:05ID:???0024nobodyさん
2006/03/22(水) 03:18:05ID:???0025nobodyさん
2006/03/22(水) 04:24:14ID:???http://wiki.2chx.net/php/
ところで、2chx.netは自宅鯖?
0026nobodyさん
2006/03/22(水) 06:28:37ID:???win XP PRO SP2
php 5.1
apache 2.0(SSL対応)
MySQL 改良版拡張サポート(mysqli)を使用するためには、
php.iniの extension=php_mysqli.dll を有効にするだけでいいのでしょうか?
extensionのパスも、php_mysqli.dllの存在も確認済みです。
0028nobodyさん
2006/03/22(水) 10:31:28ID:???php 5
httpd
$str = '日本語';
echo $str;
echo "\n";
$hex = bin2hex($str);
echo $hex;
echo "\n";
$bit = base_convert($hex,16,2);
echo $bit;
echo "\n";
echo base_convert($bit,2,16);
$hex = base_convert($bit,2,16);
ここまでは出来たんですが、16進からバイナリに治せないんです
packでやっても変な ] これしか出ないので調べたらfloat型なのでぜんぜん足りないと解釈しました
ぜんぜん違うやり方でも良いので
バイナリ to 2と2 to バイナリできませんか?
0029nobodyさん
2006/03/22(水) 11:30:51ID:???<?php
$str = '日本語';
echo $str, "\n";
$bit = base_convert(bin2hex($str), 16, 2);
echo $bit, "\n";
$bin = pack('H*', base_convert($bit, 2, 16));
echo $bin;
0030nobodyさん
2006/03/22(水) 11:31:24ID:???<?php
$str = '日本語';
echo $str, "\n";
$bit = base_convert(bin2hex($str), 16, 2);
echo $bit, "\n";
$bin = pack('H*', base_convert($bit, 2, 16));
echo $bin;
0031nobodyさん
2006/03/22(水) 11:32:02ID:???<?php
$str = '日本語';
echo $str, "\n";
$bit = base_convert(bin2hex($str), 16, 2);
echo $bit, "\n";
$bin = pack('H*', base_convert($bit, 2, 16));
echo $bin;
0032nobodyさん
2006/03/22(水) 11:39:12ID:???003526
2006/03/22(水) 13:06:28ID:???ありがとうございます。
やはりdllをしっかり参照させるだけで使用できるみたいですね
実はmysqliを使用したプログラムが動かず悩んでいます。
あるサンプルスクリプトをmysqli用にカスタマイズしたものです。
※あるサンプルスクリプト
http://www.trustbee.com/work/book.phpのサンプルスクリプトのダウンロードからダウン。
解凍してできたフォルダの section_36 の session_db.inc.php がカスタマイズ元。
サンプル( session_db.inc.php )をそのまま使用すると動くのですが、
mysqliを使用したものに書き換えるとエラーが出ます。
エラー内容は、
( function write()のクエリ実行部分 )
Warning: mysqli_query() [function.mysqli-query]: Couldn't fetch mysqli in C:\www\session_db.inc.php on line 42
Query failed
( function close()のDB切断部分 )
Warning: mysqli_close() [function.mysqli-close]: Couldn't fetch mysqli in C:\www\session_db.inc.php on line 17
です。
以下がそのプログラムです。エラー原因がわかりません。どなたかお願いします。
003626
2006/03/22(水) 13:07:26ID:???1)データベース( session_test )
CREATE TABLE session (
id varchar(32) NOT NULL default '',
sess_data text NOT NULL,
timestamp timestamp(14) NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;
2)index.php
<?php
require_once( 'session_db.inc.php' );
$_SESSION['name'] = "name";
?>
3)session_db.inc.php(カスタマイズしたもの)
<?php
// 接続用関数
function open( $save_path, $session_name ) {
global $db;
$db = mysqli_connect( "host", "user", "pass", "session_test" );
if ( mysqli_connect_errno() ) die ( "Connect failed" );
return (true);
}
// 切断用関数
function close() {
global $db;
mysqli_close( $db );
return (true);
}
003726
2006/03/22(水) 13:08:07ID:???function read( $id ) {
global $db;
// 対象IDのレコードを取得
$sql = "SELECT sess_data FROM session WHERE id='$id'";
$result = mysqli_query( $db, $sql );
if ( !$result ) die ( "Query failed" );
list($sess_data) = mysqli_fetch_row( $result );
return $sess_data;
} // セッション情報保存用関数
function write ( $id, $sess_data ) {
global $db;
// 対象IDのレコードの存在をチェック
$sql = "SELECT id FROM session WHERE id='$id'";
$result = mysqli_query( $db, $sql );
if ( !$result ) die ( "Query failed" );
list( $check_id ) = mysqli_fetch_row( $result )
// 対象IDのレコードが存在する場合は更新、なければ追加
if ( $check_id )
$sql = "UPDATE session SET sess_data='$sess_data' WHERE id='$id'";
else
$sql = "INSERT INTO session (id, sess_data) VALUES ('$id', '$sess_data')";
$result = mysqli_query( $db, $sql );
if ( !$result ) die ( "Query failed" );
return true;
}
003826
2006/03/22(水) 13:08:56ID:???function destroy ( $id ) {
global $db;
// 対象IDのレコードを削除
$sql = "DELETE FROM session WHERE id='$id'";
$result = mysqli_query( $db, $sql );
if ( !$result ) die ( "Query failed" );
return true;
}
// ガーベッジコレクション用関数
function gc ( $maxlifetime ) {
global $db;
// 保存期間を経過したレコードを削除
$sql = "DELETE FROM session WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(timestamp) > {$maxlifetime}";
$result = mysqli_query( $db, $sql );
if ( !$result ) die ( "Query failed" );
return true;
}
// ユーザ定義関数の設定
session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");
// セッションの初期化
session_start();
?>
0041nobodyさん
2006/03/22(水) 16:52:39ID:???0042nobodyさん
2006/03/22(水) 17:34:22ID:zHYrOojklibmysql.dllをPHP付属のものから、MySQLについてくるものに差し替えるとphp_infoで見られるクライアントAPIのバージョンも上がるのでしょうか。
当方PHP4.4.2に付属のDLLから、MySQL4.1.18のDLLに換えたのですが、クライアントAPIバージョンが3.23.49のままなのです。
0044nobodyさん
2006/03/22(水) 17:56:58ID:???サラッと見た感じではいけるような気がするんだが、
取り敢えず原因追求のための小さな単純なスクリプト書いてみなよ。
function open()で
$db = mysqli_connect( "host", "user", "pass", "session_test" );
した後、$dbをvar_dump()してみ。
004542
2006/03/22(水) 18:07:14ID:???Windows版PHP4.4.2ではMySQLなどのサポートはビルドインになっており、DLLは同梱されていないのですが・・・
それはつまり、WindowsでクライアントAPIバージョンを上げることは出来ないという事なのでしょうか。
0049nobodyさん
2006/03/22(水) 18:28:35ID:???Windows用のソースって公開されてましたっけ。
MySQLをアンインストールして、ZIPパッケージで入れてみることにしました。
005026
2006/03/22(水) 18:38:41ID:???レスありがとうございます。
function open()で接続した直後、$dbをダンプして見ると
object(mysqli)#1 (0) { }
となります。
空のオブジェクトが帰ってきておかしいなと思っていたんですが、
単純にmysqliを使用してデータを引っ張ってくるプログラムでも、
やはり空のオブジェクトが戻ってきます。でも、データは取得できるのです。
以下(※)のプログラムでも空のオブジェクトが戻ってきますがデータは取得できます。
なので、$dbの値は特に気にしていませんでした。
やはり、session_db.inc.phpのプログラムの組み方に問題があるのでしょうか・・・
005126
2006/03/22(水) 18:39:29ID:???-- データは取得できる --
<?php
$db = mysqli_connect( "host", "user", "pass", "session_test" );
if ( mysqli_connect_errno() ) {
die( "Connect failed" );
}
$query = "SELECT * FROM persons WHERE person_seq = 1344";
if ( $result = mysqli_query( $db, $query ) ) {
while ( $row = mysqli_fetch_assoc( $result ) ) {
$arrResult[] = $row;
}
mysqli_free_result( $result );
}
mysqli_close( $db );
var_dump( $arrResult );
?>
※※※※※※※※※※※※※※※※※※※※※※※※※※※※
0053nobodyさん
2006/03/22(水) 21:41:34ID:???mysqli_connectでobject(mysqli)#numが返るのは正常(別に空というわけじゃない)。
mysql_connectだとresource(mysql_link)#numが返るんだけどね。
コネクトが失敗して$dbにFALSEが入ってるのに、mysqli_connect_errno()に
値が入らない(エラー処理にならない)おかしな挙動になってないか疑っただけ。
んで、同じくエラーになってるfunction write()とfunction close()とで
$dbのコネクションが受け取れてるのか見てもらいたかったんだが...
http://jp.php.net/manual/ja/function.session-set-save-handler.php
|警告
|PHP 5.0.5 以降、Write ハンドラおよび Close ハンドラは
|オブジェクトが 破棄されたあとにコールされます。
じゃないのか?
005426
2006/03/22(水) 22:26:26ID:???function write()とfunction close()での$dbのコネクションの受け取りですが、
まず、function write()とfunction close()が呼ばれた直後に
$dbをグローバル宣言していますが、宣言直後$dbをダンプしてみると
open()の時と同じように、
object(mysqli)#1 (0) { }
となります。
>http://jp.php.net/manual/ja/function.session-set-save-handler.php
>|警告
>|PHP 5.0.5 以降、Write ハンドラおよび Close ハンドラは
>|オブジェクトが 破棄されたあとにコールされます。
すみません、これは見落としていました。確認してみます。
005526
2006/03/22(水) 22:40:38ID:???session_db.inc.phpを以下のようにかえたら、エラーはでなくなりました。
セッションデータも無事読み書きができるようになりました。
// ユーザ定義関数の設定
session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");
/* 追加処理 */
register_shutdown_function('session_write_close');
// セッションの初期化
session_start();
どうやらご指摘のあったあたりが関係しているようです。
まだ動いたとはいえ、よくわからない部分が多いので引き続き調べてみたいと思います。
ありがとうございました。
0056nobodyさん
2006/03/23(木) 01:39:30ID:???予想と違った。
>まず、function write()とfunction close()が呼ばれた直後に
>$dbをグローバル宣言していますが、宣言直後$dbをダンプしてみると
>object(mysqli)#1 (0) { }
これだと「オブジェクトが破棄されたあとにコールされます」の説明と辻褄が合わない。
挙動としては、どこかでmysqli_close(object(mysqli)#1)相当の処理がされて、既にコネクションが
切断されている状態で、mysqli_query/close(object(mysqli)#1)を掛けてエラーになっている。
# mysql_close($r)だと前後で$rがresource(mysql_link)→resource(unknown)と変化するんだが
# mysqli_close($o)だと前後でobject(mysqli)のままで変化が無い(ということをさっき知った)。
# だから$dbをダンプしても目視では変わらず、意味がなかった。
全然判らん...何か判ったらその時でも、このスレにレポ宜しく。
0057nobodyさん
2006/03/23(木) 03:00:24ID:???0058nobodyさん
2006/03/23(木) 03:13:45ID:???0059nobodyさん
2006/03/23(木) 06:12:11ID:???0060nobodyさん
2006/03/23(木) 09:43:12ID:b+jb9vQkecho $str, "\n";
$bit = base_convert(bin2hex($str), 16, 2);
echo $bit, "\n";
$bin = pack('H*', base_convert($bit, 2, 16));
echo $bin;
echo "\n";
echo "</Body>\n";
echo "</Html>\n";
これは出来ません・・・・・・・・・・・・・・・・・・・・・・
0062nobodyさん
2006/03/23(木) 11:05:32ID:???0063nobodyさん
2006/03/23(木) 12:27:47ID:???もちろんユーザーノートも
0064nobodyさん
2006/03/24(金) 00:50:46ID:6sJ7Sx7Qに変換しようとしているのですが出来ません。
mb_convert_encording($res[0], "UTF-8", "EUC-JP");
echo mb_detect_encoding($res[0]);
で「EUC-JP」と返ってきます。(クエリの実行結果が$res配列に入ってます)
教えて下さい。よろしくお願いします。
0065nobodyさん
2006/03/24(金) 00:55:27ID:???0066nobodyさん
2006/03/24(金) 01:04:52ID:6sJ7Sx7Q$hoge = mb_convert_encording($res[0], "UTF-8", "EUC-JP");
echo mb_detect_encoding($hoge);
出来たありがとう
慣れないMac環境、あんまり知らない言語、過労でおかしくなってましたスマソ
0067nobodyさん
NGNGecho mb_convert_encording($res[0], "UTF-8", "EUC-JP");
006866
2006/03/24(金) 01:08:56ID:???もう一つだけ
配列の中身を一気にEUC→UTF変換する関数っていうのは無いですか?
本当に申し訳ない。
0071nobodyさん
2006/03/24(金) 17:00:36ID:qx9pzy7Ddaemon
になってしまうんですが、ここにちゃんと名前を
入れるにはどうすればいいでしょうか?
環境は
・redhat9
・php5.1.2
です。
0072nobodyさん
2006/03/24(金) 17:28:21ID:???php.iniのsendmail_from
Win32 Onlyとか書いてあるけど…ini_setできるかどうかは自分で調べて
0073nobodyさん
2006/03/24(金) 17:47:49ID:???なんか、すごい回答だなw
>>71
メールヘッダを勉強したほうが良いと思う。
あと、マニュアルも。 http://jp.php.net/manual/ja/function.mail.php
007466
2006/03/24(金) 17:53:51ID:???ありがとう
その関数の戻りだとキーが整数になっちゃうみたいなんで↓こうしますた
function mb_array_encoding(&$array, $tocode, $fromcode){
foreach($array as $key => $value){
$array[$key] = mb_convert_encoding($array[$key], $tocode, $fromcode);
}
}
>70
スマソ (; ̄ω ̄)ゞ
0075nobodyさん
2006/03/24(金) 19:11:57ID:???array_walk($array, create_function('&$v,$k', '$v=mb_convert_encoding($v, "UTF-8", "EUC-JP");'));
注:未テスト
0076nobodyさん
2006/03/25(土) 00:36:26ID:KigVlv+dGoFパターンをPHPでどのように実現しているのか、諸先輩方のご意見をいただければと。
参考にさせていただきたく。
ちなみにPHPでInterFace型みたいな感じの変数って使えるの??
FactoryMethodをどうやってPHPで実現するの??
なんて事を日々考えてます。
0079nobodyさん
2006/03/25(土) 08:19:09ID:???Interface型って何物?
FactoryMethodはそのまんまメソッド内でreturn new 〜みたいなのでおk。
PHPの場合new $classNameとかやって楽するのが一般的。
0080nobodyさん
2006/03/25(土) 16:56:32ID:???物理的に違うサーバでもセッションを共有することがわかったのですが、
なんか不安です。
しかし、何度実験しても同じドメイン内ならひとつのセッションを共有しています。
これは session.cookie_domain を設定すると設定ドメイン内なら、
物理的に違うサーバでも同じセッションを共有していると考えていいのでしょうか?
0081nobodyさん
2006/03/25(土) 17:51:44ID:???難問だな・・・
手元に実験できる環境がないからわかんないけど、セッションを共有できてるってことはセッション情報をバックグラウンドでやりとりしてるってことなのかな?
どんな値(文字列・配列・オブジェクト問わず)でも別のサーバ側で復元できるの?
0082nobodyさん
2006/03/25(土) 18:34:37ID:???例えばA,Bという物理的に違うサーバを用意します。ドメイン名はtest.co.jp
サーバ バーチャルドメイン ファイル
A 01.test.co.jp 01.php
02.test.co.jp 02.php
B 03.test.co.jp 03.php
04.tets.co.jp 04.php
// ファイル内処理
01.php
$_SESSION['name'] = "name";
02.php
$_SESSION['mail'] = "mail";
03.php
$_SESSION['pass'] = "pass";
04.php
$_SESSION['sex'] = "sex";
// アクセス手順
01.php → 02.php → 03.php → 04.php
0083nobodyさん
2006/03/25(土) 18:35:23ID:???01.phpにアクセスしたときsess_0123456789というセッションファイル?がAサーバにできます。
セッションデータは "name"
次に02.phpにアクセスしたときsess_0123456789にセッションデータ "mail" が追加されます。
セッションデータは "name" "mail"
次に03.phpにアクセスしたときsess_0123456789というセッションファイル?がBサーバにできます。
セッションデータは "name" "mail" "pass"
次に04.phpにアクセスしたときsess_0123456789にセッションデータ "sex" が追加されます。
セッションデータは "name" "mail" "pass" "sex"
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
実験結果です。
ローカル側から送られる情報を参照して
php.iniの設定によりセッションを共有しているとしか思えないんですが・・・
アクセスしたサーバごとに違うセッションキーが発行され、
データも共有できないと思っていたのでこの動きを信用していいものか悩んでいます。
008480
2006/03/25(土) 18:40:11ID:???session.cookie_domain = test.co.jp
となっています。
0085nobodyさん
2006/03/25(土) 19:47:01ID:???0086nobodyさん
2006/03/25(土) 23:52:07ID:???0089nobodyさん
2006/03/26(日) 01:40:48ID:???あと $_ENV とか。
0091nobodyさん
2006/03/26(日) 04:35:18ID:???foreach($array as &$value){
$value = mb_convert_encoding($value, $tocode, $fromcode
}
$valueを参照にすればこんな風に書けるよね
0094nobodyさん
2006/03/26(日) 10:54:57ID:???0096nobodyさん
2006/03/26(日) 11:16:07ID:???一理あるけど如何せん人がそこまで多いわけではないので分離は難しいかと。
次スレ立てる奴が勝手に【PHP5】質問スレッドとかにしたらいつの間にかPHP4スレも立つかもね。
もしくはくだ質がPHP4になるとか。
まあその時に誰がいるかによって変わるでしょう。
0097nobodyさん
2006/03/26(日) 12:45:29ID:???PHP5の環境も整えようと思ったけど、Windowsだとphp.iniの入れ替えがめんどいんだよな。
何かいい方法ないか?
0098nobodyさん
2006/03/26(日) 12:51:33ID:???4,5の同時起動はできないけど、バッチファイル(php-switch.bat)で切り替えの面倒を見てくれる。
0099nobodyさん
2006/03/26(日) 13:00:54ID:???忘れてたがhttpd.confの書き換えも必要なんだな。
まぁいいか。とりあえずPHP5の設定していつでも使えるようにしておく。
0100nobodyさん
2006/03/26(日) 13:32:00ID:???php-switch.batはcli版のphp(xamppに含まれている)を使って実際の切り替え処理をphp-switch.phpでやってるんだが、
それを見た感じだと php.ini httpd.conf 各バージョンのDLL 拡張モジュールのDLLあたりを切り替えてる。
0102nobodyさん
2006/03/26(日) 14:13:31ID:???0103nobodyさん
2006/03/26(日) 14:38:41ID:???PHP5 は 80、PHP4 は 8080 のように。
0104nobodyさん
2006/03/26(日) 14:50:33ID:???0105nobodyさん
2006/03/26(日) 19:33:57ID:???modphpに手を入れて二つ動かせるようにした法が良くないか?
/php4以下ならphp4が動いて、
/php5以下ならphp5が動くように。
0106nobodyさん
2006/03/26(日) 19:39:46ID:???0108nobodyさん
2006/03/27(月) 17:09:51ID:S2DOnOnv0002
0003
と桁数の決まっている数字で簡単に数字を1ずつ上げる方法はないでしょうか?
0109108
2006/03/27(月) 17:14:19ID:S2DOnOnv$num = '0010';
print $num . '<br>';
$num++;
print $num . '<br>';
print str_pad($num, 4, "0", STR_PAD_LEFT);
0110nobodyさん
2006/03/27(月) 17:57:30ID:???printf('%0'.strlen($num).'d', (int)++$num);
0111nobodyさん
2006/03/27(月) 18:02:58ID:???Q. '0001'、'0002'、'0003'・・・とインクリメントしたい
A. 数値(int)で計算した後str_padかsprintf等で整形
なにげにPHPにはどんな文字列でもインクリメントできる変な隠し機能があるけど、>>108-109のようにintへの暗黙の型変換が働いて0埋めができないので結局は数値で計算するのが最善かな。
0112nobodyさん
2006/03/27(月) 18:14:05ID:???0114nobodyさん
2006/03/27(月) 18:18:45ID:???perlだと試してみたら
$num = '0001'; $num ++;
でちゃんと'0002'になるんだね。
phpありえなす・・・
0115nobodyさん
2006/03/27(月) 18:22:41ID:???0118nobodyさん
2006/03/27(月) 20:42:30ID:???$a = 'a';
$a++;
で $a が b になるしな。
0120nobodyさん
2006/03/27(月) 20:53:52ID:???0121nobodyさん
2006/03/27(月) 20:58:24ID:???0122nobodyさん
2006/03/27(月) 21:00:32ID:???さすがに
$a = "azz";
$a ++;
で $a が "baa" になったりはしないけどな >CやJava
0123nobodyさん
2006/03/27(月) 21:18:24ID:???0124nobodyさん
2006/03/27(月) 21:28:12ID:???PHP5.0のsqliteみたいに、将来標準から脱退になったりしませんか?
0126nobodyさん
2006/03/27(月) 22:23:40ID:???0127nobodyさん
2006/03/27(月) 23:36:54ID:???0128nobodyさん
2006/03/28(火) 00:24:08ID:???0130nobodyさん
2006/03/28(火) 02:05:12ID:???0132nobodyさん
2006/03/28(火) 12:23:20ID:???まあ0001の次は、0010かもしれんし(w
0133nobodyさん
2006/03/28(火) 12:46:32ID:???そのへんはphpもperlも基本的に各桁で数字なら数字、大文字なら大文字、小文字なら小文字でループしながら、繰上げは右から左に伝播するように統一されてるみたいだ。
ただphpの場合は自動型変換が最悪の事態を引き起こす。
$n = '1d7';
$n++; // '1d8'
$n++; // '1d9'
$n++; // '1e0'
$n++; // 2 ・・・あれ?
$n++; // 3
:
この機能、使わないのが一番かと思われます。
0134nobodyさん
2006/03/28(火) 13:36:45ID:???0135nobodyさん
2006/03/28(火) 15:28:44ID:???0136nobodyさん
2006/03/28(火) 16:12:05ID:qFPc77vuどうにも、こうにも、結果が面白くなくて、、困っています。
以前 php.iniを単独で作るって言う方法があったとおもうので、
資料や、その紹介サイトだけでもいいの、
ご存知でしたら、教えていただければ、幸いです。
もしくは、方法教えていただければ、幸いです。お願いします。
0137nobodyさん
2006/03/28(火) 16:26:32ID:???aaa<>bbb<>ccc<>ddd
bbb<>ccc<>ddd<>eee
・・・・
のようになっていて、これを縦の値でソートしたいんですが
何か方法はないものでしょうか?
0138nobodyさん
2006/03/28(火) 16:42:57ID:qFPc77vuaaa bbb<>ccc<>ddd
bbb ccc<>ddd<>eee
と引っ張って、 aaaを配列のキーにしてみては?
0140nobodyさん
2006/03/28(火) 17:22:22ID:???大変申し訳ないです。もっと具体的に書きます。
id1<>1000<>2000<>3000
id2<>5000<>4000<>6000
id3<>3000<>8000<>1000
・・・・・
のようなテキストファイルが存在する時、
縦方向を見て、大小を比較してソートしたいのです。
たとえば、2列目をソートするような命令があった場合、
1000、5000、3000の大小を比較し、
5000、3000、1000や、1000、3000、5000のようにソートしたいのです。
そのときにあわせて横一列丸ごと表示してほしい訳です。
つまり、表示するときは
id2 5000 4000 6000
id3 3000 8000 1000
id1 1000 2000 3000
のように。
お知恵を貸してくださいorz
0141nobodyさん
2006/03/28(火) 18:08:10ID:qFPc77vu近頃は区切り文字を <> にするのがはやり?
まあ、それはいいとして、とりあえず、、
検索する場所を配列のキーにして、そのrecordごと文字列として入れる
配列のキーをソートする
配列を順番に取り出す。
区切り文字で配列を変数化する
でよくないのかな?
すまん、、もっとスマートな方法はあるかもしれんが、、、、近頃CSVのソートなんてしないので、、
SQLに頼りっきりってのが、だめなのかのー
0145nobodyさん
2006/03/28(火) 18:31:44ID:???とてもじゃないがログファイル作る気になれn
0146nobodyさん
2006/03/28(火) 18:57:34ID:???PHPの過去の遺産(?)を使うとこんな感じ。
$k = 1; // 2列目
// 1. array_multisort
$data = array(); $columb = array();
foreach (file($file) as $line) if ($line = rtrim($line)) {
$record = explode('<>', $line); $data[] = $record; $columb[] = $record[$k];
}
array_multisort($columb, SORT_NUMERIC, $data);
foreach ($data as $record) echo implode(' ', $record), "\n";
// 2. usort
$data = array();
foreach (file($file) as $line) if ($line = rtrim($line)) {
$record = explode('<>', $line); $data[] = $record;
}
usort($data, create_function('$a, $b', 'global $k; return $a[$k] < $b[$k] ? -1 : $a[$k] > $b[$k];'));
foreach ($data as $record) echo implode(' ', $record), "\n";
// 3. ksort
$data = array();
foreach (file($file) as $line) if ($line = rtrim($line)) {
$record = explode('<>', $line); $data[$record[$k]] = $record;
}
ksort($data, SORT_NUMERIC); $data = array_values($data);
foreach ($data as $record) echo implode(' ', $record), "\n";
0147nobodyさん
2006/03/28(火) 19:04:31ID:???0148nobodyさん
2006/03/28(火) 21:57:46ID:???結構便利っぽかったのに。
0149nobodyさん
2006/03/28(火) 22:28:37ID:???sqlite2とsqlite3の互換性無かったはず。sqlite4に成ったらどうなるか予想出来るよね?
0150nobodyさん
2006/03/28(火) 22:37:26ID:???0151nobodyさん
2006/03/28(火) 22:39:00ID:???しかもライブラリは「覚えて使う」ようなものじゃねーぞ?
0153nobodyさん
2006/03/28(火) 22:56:51ID:j0f8wCQk自分でも調べた事はここに書く予定
0155nobodyさん
2006/03/29(水) 02:39:02ID:???1つ目の軸のグラフの後ろに隠れてしまう。
オーダーを変更して2軸目のグラフを前面に出したいけど
どうしたらいいかな?
0157nobodyさん
2006/03/29(水) 20:45:59ID:???0159nobodyさん
2006/03/29(水) 21:35:42ID:xErJGbSuお前自分が恥ずかしくないのか?
0160nobodyさん
2006/03/29(水) 21:41:49ID:???0163nobodyさん
2006/03/29(水) 22:34:02ID:Vy3b1LJ+1,,,,,,
1,,,4,,6,
1,,3,4,5,6,7
1,,3,4,,6,7
1,,3,4,,6,
な値(,で繋がってる値)の配列があって、この値を利用して以下の配列
を作りたいのです。
$count=array('1'=>1の合計,'2'=>2の合計,'3'=>3の合計・・・)
splitで1,2,3をバラバラにするとこまでは出来るのですが、後どうした
らよいかわかりません。だれかアドバイス下さい。お願いします!
0164nobodyさん
2006/03/29(水) 22:47:16ID:xErJGbSu0165nobodyさん
2006/03/29(水) 22:48:59ID:xErJGbSu0166nobodyさん
2006/03/29(水) 22:53:28ID:Vy3b1LJ+まちがってたらすいません。explode()だとsplit()と同じですよね?
array(1,2,3,4,5,6,7)
って配列が出来たとして、これを行分作って足さないといけないんで
しょうか?
0167nobodyさん
2006/03/29(水) 23:19:39ID:???質問がわかりにくい。
最初の配列は
$array = array(
'1,,,,,,',
'1,,,4,,6,',
'1,,3,4,5,6,7',
'1,,3,4,,6,7',
'1,,3,4,,6,'
);
で、結果の配列は
$count = array('1' => 5, '2' => 0, '3' => 3, '4' => 4, '5' => 1, '6' => 4, '7' => 2);
になりゃいいの?
7って数字は固定なの?それとも配列の情報から動的に計算しなきゃいけないの?
0168nobodyさん
2006/03/29(水) 23:28:55ID:Vy3b1LJ+わかりずらかったですね。すいません。
おっしゃる通りです。7って数字は固定ではなく動的です。
checkboxからの値を","でjoin()されて配列にユーザーごとに格納されて
います。
0169nobodyさん
2006/03/29(水) 23:59:17ID:???なんかよーわからんけど、とりあえず。
$array = array(
'1,,,,,,',
'1,,,4,,6,',
'1,,3,4,5,6,7',
'1,,3,4,,6,7',
'1,,3,4,,6,'
);
$count = array();
foreach ($array as $each) {
foreach (array_count_values(explode(',', $each)) as $n => $cnt) {
if ($n) {
@ $count["$n"] += $cnt;
if (@ $max < $n) $max = $n;
}
}
}
for ($i = 1; $i < $max; $i ++) {
if (! @ $count["$i"]) {
$count["$i"] = 0;
}
}
ksort($count);
print_r($count);
0170nobodyさん
2006/03/30(木) 00:14:03ID:???夜分遅くにアドバイスありがとうございます。
とりあえず、実装してみます。結果が出ましたらご報告させて頂きます。
本当にありがとうございます。
0172nobodyさん
2006/03/30(木) 03:39:49ID:D3mh+GN9テキストファイル(test.dat)
1=abc
2=def
3=ghi
があったとして
$str=file_get_contents("test.dat");
ereg('1=(.*)',$str,$reg);
print($reg[1]);
abcという結果を期待してるのだけど
abc 2=def 3=ghi
という結果になっちゃうんですが。
パターンを
1=(.*)\n
としても結果は同じになっちゃいます。
(.*)の中に途中の改行も入っちゃってる様子なんですが
どうしたらいいんでしょうか。
0176nobodyさん
2006/03/30(木) 09:07:15ID:rPy49/sd行単位で処理するならfile_get_contentsじゃなくてfile()で配列に読み込んだら
0177nobodyさん
2006/03/30(木) 10:11:55ID:???> パターンを
> 1=(.*)\n
> としても結果は同じになっちゃいます。
その場合の書き方は 1=(.*?)\n だ。
?をつけて最短マッチにさせないと、1番後ろの\nを探しにいってしまう。
0178nobodyさん
2006/03/30(木) 12:15:52ID:???/ :::::::。::::::;;;;;;>
/::::::::::::;;;www
)ヽ/ とノ (,,゚д゚)つ < みんなジョーズだな
メノ'\ /
U"U
0179nobodyさん
2006/03/30(木) 13:14:17ID:???>>177で答えは出てるが、別の点で。
ereg系関数は速度的に難があるから使わないほうがいい。
Perl互換正規表現関数のpreg系関数の方が10倍ほど高速。
あとはマニュアル参照
0180nobodyさん
2006/03/30(木) 13:26:32ID:???じゃ、俺も別の点で。
preg系のパターンではドットが改行を含まないのでpreg_match_all('/[0-9]+=(.*)/', $str, $m)あたりで意図した結果になるかな。
(逆に改行も含めたいときはsオプションで)
まあ>>172の言うように(特にpregを使うなら)fileやfgetsで一行ずつ処理するほうがやりやすい気はする。
0182nobodyさん
2006/03/30(木) 14:01:21ID:???でももう非推奨関数になったんじゃなかったっけ
0183nobodyさん
2006/03/30(木) 14:21:52ID:D3mh+GN9みなさんありがとうございました。
preg_matchを使うようにしたいと思います。
0184nobodyさん
2006/03/30(木) 19:25:05ID:???0186nobodyさん
2006/03/30(木) 22:18:20ID:???0187nobodyさん
2006/03/31(金) 00:43:40ID:???0188nobodyさん
2006/03/31(金) 00:57:09ID:???0189nobodyさん
2006/03/31(金) 01:02:24ID:???0190nobodyさん
2006/03/31(金) 01:05:16ID:???0192nobodyさん
2006/03/31(金) 13:56:53ID:???Apache+PHP+MySQLの環境で非商用のサービスを提供してるんだけど、
サーバ機のパーティションの意識しなくていいの?って言われた。
これまでどれも普通にCドライブにインストールしてたんだけど、
ここの人たちは実行ファイルやPHP・HTMLデータでパーティション意識してる?
0193nobodyさん
2006/03/31(金) 14:00:03ID:???0194nobodyさん
2006/03/31(金) 14:39:16ID:???おれはパーティションは意識しないが、提供サービスとDB関連は別ドライブに
おいてRAID組んでる。
A.P.M.はメンテとかインスコしやすいなどの都合から同じドライブ(winで
いうところのC:ドライブ)だが。
0196nobodyさん
2006/03/31(金) 16:51:07ID:???0197nobodyさん
2006/03/31(金) 16:57:36ID:???彼女にINSERT権限がありません
http://pc8.2ch.net/test/read.cgi/db/1057289721/
0198nobodyさん
2006/03/31(金) 20:18:11ID:???全裸がいいか着衣のままがいいかは個人の趣味だな。
容量が増えてくるのは、DBファイル置いてる所かな?
DBファイルが大きくなったらどうなるかぐらいは考えて鯖建てすべき。
0199nobodyさん
2006/03/31(金) 20:45:02ID:???0203nobodyさん
2006/03/32(土) 00:44:03ID:???0204nobodyさん
2006/03/32(土) 01:38:41ID:???0205nobodyさん
2006/03/32(土) 11:46:23ID:???NHKでポロリ画像!!
0206nobodyさん
2006/03/32(土) 13:08:55ID:???function getPost() は、DBから投稿を取って配列を返す関数なのですが、
DB取得に失敗した場合、return falseにしています。
これだと、成功時に配列、失敗時にfalseというわけのわからない関数になってしまうのですが
みなさんはどうしていますか?
0208nobodyさん
2006/03/32(土) 13:44:24ID:???ま、マジですか???
呼び出し側で使いづらい…
PHP4なんですが、例外をthrowってできるんでしょうか…
0209nobodyさん
2006/03/32(土) 13:52:16ID:???例外はPHP4じゃできない。
呼び出すときは
if ($result === false)
みたいなコードを必ず入れる。
PHPは標準関数だってそういうのだらけでしょ。
別に0件取得できたのと失敗で取得できなかったのとの間に何の違いも必要ないならarray()を返してもいいけど。
いちおう一般的な方法はfalseを返すってことだけ言っておく。
あとは好きにして。
0210nobodyさん
2006/03/32(土) 14:06:33ID:???丁寧にありがとうございます。
すごくよくわかりました。
#そっか、0件と失敗は違うか…ヤバイな俺
その通りやってみます。
0211nobodyさん
2006/03/32(土) 15:32:40ID:???配列処理関数(countとか)も引数にスカラーを
受け付けるようにして欲しいよな。(array()と同じ扱いで)
エラー判定マンドクセ
0212nobodyさん
2006/03/32(土) 17:02:14ID:???@ foreach とか書ければましだったのに。
0213nobodyさん
2006/03/32(土) 18:25:31ID:???0214213
2006/03/32(土) 18:26:21ID:???0215nobodyさん
2006/03/32(土) 18:57:46ID:???たかだか2行ぐらい書くのも出来ないのか?
if ($filelist = glob()) {
foreach($filelist as $file) {
}
}
0218nobodyさん
2006/04/02(日) 14:17:12ID:???「PHP側でHTTPコネクションを接続状態のまま維持しつづけることについて」のご意見をお聞きしたいのです。
やりたいことはレスポンスがほぼリアルタイムなWebチャットです。
現在のWebチャットは、ブラウザが5秒毎や10秒毎にサーバーにHTTP接続し、更新が無いかチェックしていますよね。
それを↓こうすることによって、ほぼ即レスポンスなチャットを実現したいのです。
writeTalk($str); // 自分の発言を記録
while(true)
{
Sleep(1); // 1秒くらいは流石にスリープさせよう。
if (checkRenew()) // 更新チェック。
{
// 更新があったので、更新内容を受け取らせる
print readRenew();
return;
}
}
実際はクライアント側がタイムアウトしてしまうので、30秒に一度くらいは接続張りなおしが必要になると思いますが、概念的にはこんな感じです。
これなら、理論上1秒ちょい程度の遅れでほぼ即レスポンスなチャットが作れます。
実際にこれで作ってみて、そうなることも確認しました。
ただ、サーバー負荷が非常に心配です。10000人とか接続したらどうなることやら。
更新内容を1秒毎に読みに行っており、例えばfopenでtxtを扱っているとしたらファイル読み込みが頻繁に起こります。
しかもHTTPコネクション張りっぱなしですし。(Apacheはそんなに大量にコネクションを張れるのかな?)
これを軽減する良い知恵はないものでしょうか。
0219nobodyさん
2006/04/02(日) 15:02:33ID:???まずベータテストを実施して負荷を計測。
負荷がひどいならサーバを増設するとかキャッシュするとか更新チェックの頻度を減らすとかの処置をする。
0220nobodyさん
2006/04/02(日) 15:56:58ID:???1万人が一斉に書き込んで1万人に同時配信するだけでもかなりの帯域が必要。
ログもすぐ溢れるね。
0221nobodyさん
2006/04/02(日) 16:05:47ID:???ふつうのサーバでApache使ってちまちまやってる場合じゃなくて分散システムとか導入しないと無理じゃないの?
つーかそんなシステムをPHPで書く時点ですごい度胸だ・・・
0222nobodyさん
2006/04/02(日) 17:33:27ID:???0223nobodyさん
2006/04/02(日) 17:54:33ID:???0224nobodyさん
2006/04/02(日) 18:20:25ID:???お返事ありがとうございます。
やっぱり実施してみるしかないですかね。
>>221
通常のチャットですと、10000人が利用していても10秒間隔とかだからいいんですけどね。
これでやると実人数と等しい数のコネクトが行われているわけで
>>222
Ajaxは裏でHTTP通信するだけのシステムですから。
実際これのテストはAjaxを使ったチャット+ボードゲームでした。なかなかいいレスポンスでいいんですよね。
大規模に持っていければ商売にと思ってるんですが…
0225nobodyさん
2006/04/02(日) 22:45:31ID:???0226nobodyさん
2006/04/02(日) 23:53:58ID:???0227nobodyさん
2006/04/03(月) 01:51:15ID:???0228nobodyさん
2006/04/03(月) 01:57:26ID:???0230nobodyさん
2006/04/03(月) 02:31:50ID:???0231nobodyさん
2006/04/03(月) 04:22:01ID:???0232nobodyさん
2006/04/03(月) 06:55:49ID:???0233nobodyさん
2006/04/03(月) 08:32:05ID:???「ぜひ買いたいこの一冊(脆弱性コードレビュー練習用その1)」
http://takagi-hiromitsu.jp/diary/20060114.html#p01
> p.340 に書いてあった。
> function indi_check($p_string, $p_name) {
> if (strlen($p_string) == 0) {
> $this->disp_err_message($p_name." は必ず入力してください");
> }
> }
> 脱力。SQLインジェクション脆弱性だ。
なぜこれがSQLインジェクションになるのかわかりません。その上のコード(SQLを生成している部分)なら話はわかるのですが。
0234nobodyさん
2006/04/03(月) 09:07:11ID:???その上のコードでindi_checkとやらを呼び出しているけど、その定義部分で「p.340 に書いてあった〜」のようなチェックしかしていないからSQLインジェクション脆弱性だと言いたいんじゃないの?
0235nobodyさん
2006/04/03(月) 10:36:17ID:???SQLインジェクション対策をしているんだろうと思われる関数を見たら文字数しかチェックしてないんで脱力したんだろ。
0236nobodyさん
2006/04/03(月) 10:45:25ID:???ああなるほど。じゃあfunction indi_check()自体にSQLインジェクションがあるのではないということですね。しかしわかりにくい文章だな。
解答ありがとうございました。
0237nobodyさん
2006/04/04(火) 09:37:31ID:???0238nobodyさん
2006/04/04(火) 09:50:03ID:???0239nobodyさん
2006/04/04(火) 09:53:43ID:???必死すぎて笑えるのもいるけど。
0240nobodyさん
2006/04/04(火) 10:13:12ID:???趣味で書いたコードばら撒いてごめんね。
0241nobodyさん
2006/04/04(火) 10:14:23ID:???仕事くれれば「いくらでもやりますよ」なんて奴が多い業界は終わるだろ。
0242nobodyさん
2006/04/04(火) 13:03:45ID:???phpもオープンソースだから無料だよね。じゃあハード代だけでいいよね。
究極は、ハードディスク代出すから、phpのサイトコピーして納品してじゃね?
ソフトウェアは将来無料になるな。
0243nobodyさん
2006/04/04(火) 13:34:22ID:???0244nobodyさん
2006/04/04(火) 14:00:54ID:???無料無料に集中しすぎで労力が対価にあってない
0245nobodyさん
2006/04/04(火) 15:06:44ID:???利用者が納得しない。時代の流れってものがある
テクノロジーの進化、スキルの進化、出来ない企業は淘汰されてゆく
0246nobodyさん
2006/04/04(火) 19:55:15ID:???WindowsとASPでもいいじゃん。
帯域は、一般向けは安く定額でも、大規模鯖でIXとかに1Gbpsとかで繋ぐと従量課金だからなあ。
0247nobodyさん
2006/04/05(水) 01:17:08ID:???0248nobodyさん
2006/04/05(水) 03:16:31ID:???経済なんか自然界なみに激しいぜ
0249nobodyさん
2006/04/05(水) 17:52:10ID:zzYD4Tt9webで実行する時は、$_SERVER['HTTP_HOST'] で知ることができるのですが…。
0250nobodyさん
2006/04/05(水) 18:07:57ID:???CGIならともかくCLIでは判らんと思うよ。
CGIにCLI版を使ってるなら、環境変数に入ってると思うけど。
0251nobodyさん
2006/04/05(水) 18:13:46ID:DBudPhX7どういうことかというと、ASP(A8とかcross-A等)がIMGタグで呼び出されたphpファイルからcookieを読み込んでいるようなので、
顧客からの要望でそれと同じことをやりたいんですが・・・。
よろしくお願いします。
0253nobodyさん
2006/04/05(水) 18:43:08ID:???お! php -r 'var_dump($_ENV);' は、 array(0){} で空っぽでした。
が、 php -r 'echo `hostname`;' では、ホスト名取れました!
OSはFreeBSDです。
0254nobodyさん
2006/04/05(水) 18:55:17ID:???状況が全然わからん。
ユーザーから実際に送られたクッキーは全て$_COOKIEに入っているし、$_COOKIEで取得できないものはどうあがいても取得できないよ。
PHP内でさらに別のドメインにリクエストを送ってたりするってこと?
0255251
2006/04/05(水) 19:15:46ID:DBudPhX7レスありがとうございます。分かりにくい説明ですいません。
自分のサイトAと顧客のサイトBがあるとして、
サイトAでクッキーを発行して、その後サイトBでサイトAのPHPファイルをIMGタグで呼び出してもらいます。
この際に、発行したクッキーを$_COOKIEで読み込むことができないんです。
ただASPはこの方法でクッキー読み込んでいるようなので、
技術的には可能だと思います。
色々調べてみたのですが、分かりませんでした。
宜しくお願いします。
0258nobodyさん
2006/04/05(水) 20:13:50ID:???サイトA - hakkou.php
<?php setcookie(〜) ?>
サイトB - page.html
<img src="http://サイトA/image.php" />
サイトA - image.php
<?php $_COOKIE ?>
これで取得できないってこと?
ユーザーはクッキーを発行するページには前もってアクセスしてるの?
0259nobodyさん
2006/04/05(水) 20:30:49ID:???0260nobodyさん
2006/04/05(水) 21:19:43ID:???A8って自サイトでCookie発行して自サイトで読み込んでるじゃん。
いつから別ドメインで発行するようになったのよ。
0261nobodyさん
2006/04/05(水) 23:34:05ID:m1J71QWp< Query Result >
hoge | fuga
--------------
1 | AA
1 | BB
1 | CCC
2 | AA
このようなクエリを返すようにSQLを発酵し、fetchallで全件を$resultに格納しました。
このクエリ結果をsmartyを使ってテンプレートに貼り付けたいのですが、
1 : AA , BB , CCC
2 : AA
と表示するようにしたいのです。
そこで、次のようにしてみたのですが、何故か$hogeの最後にスペースが入ってしまい、
テンプレート側で「存在しないインデックス」だと怒られてしまいます。
どうしたら仕様のように表示できるのでしょうか。
0262nobodyさん
2006/04/05(水) 23:36:09ID:m1J71QWp// 以下ソース
for($i = 0 ; $i < count($result) ; $i++) {
while(list($key , $val) = each($result[$i])) {
if($key == "hoge") {
if(empty($hoge) || ($hoge != $val)) { $hoge = $val; }
}
if($key == "fuga") {
if(empty($data{$hoge})) { $data{$hoge} = $val; }
else { $data{$hoge} .= " , " . $val; }
}
}
}
$arr = array("1" => "あ" , "2" => "い");
$smatry->assign("result_data" , $data);
$smatry->assign("array_data" , $arr);
//----テンプレートファイル
{foreach from $result_data key="key" item="item"}
{$array_data.$key} : {$item}<br>
{/foreach}
0263nobodyさん
2006/04/05(水) 23:39:00ID:m1J71QWpあ : AA , BB , CCC
い : AA
と、表示したいのです
0264nobodyさん
2006/04/05(水) 23:55:38ID:???多分これが要因かな→$data{$hoge}
基本的な配列の使い方の間違い
if($key == "fuga") {
if(empty($data[$hoge])) { $data[$hoge] = $val; }
else { $data[$hoge] .= " , " . $val; }
}
検証してないが
0265nobodyさん
2006/04/06(木) 00:01:44ID:m1J71QWp$array[1]とかと同じように、$array[1](1は文字列)ってできるんですか?
殆どの参考文献では、$array{'apple'}みたいな書き方をしていたので・・・
$key = 'apple'; $array{$key} = "red";
みたいな。
0266nobodyさん
2006/04/06(木) 00:07:24ID:???http://pc8.2ch.net/test/read.cgi/php/1118799352/
0267nobodyさん
2006/04/06(木) 00:20:22ID:94BcmyXjなぜか$hogeの値が「"1"」でなく「"1 "」になってしまっているんです。
おかげで、$array_data.$keyが「存在しないインデックス」としてエラーになっちゃって・・・
smartyスレにしようかと悩んだのですが、エラー的な部分がsmartyでなく
PHP自体のほうにあると思ったので、こちらで質問させていただいた次第です。
一応、自分なりの解決策として、chop($hoge); を行ってみたのですが、効果はありませんでした。
0268nobodyさん
2006/04/06(木) 00:23:55ID:d/Co19xeどこかPHPの正規表現の解説&サンプルがあるサイトしりませんか?
なければperlでもいいです。
0271nobodyさん
2006/04/06(木) 00:58:21ID:???> あー・・・書いてなかったけど、hogeフィールドに入っている値はchar型なのです・・・
> $array[1]とかと同じように、$array[1](1は文字列)ってできるんですか?
$array["1"]って書けばOK。
> 殆どの参考文献では、$array{'apple'}みたいな書き方をしていたので・・・
それはPerlの書き方。
0272nobodyさん
2006/04/06(木) 01:01:21ID:???262のソースちゃんと読まないで言うが、
array(2) {
["あ"]=>
array(3) {
[0]=>
string(2) "AA"
[1]=>
string(2) "BB"
[2]=>
string(2) "CC"
}
["い"]=>
array(1) {
[0]=>
string(2) "AA"
}
}
こういった配列に集計されるように作った方が良いんではない。
0273nobodyさん
2006/04/06(木) 04:52:30ID:???実は$array['1']と$array[1]は同じなんだな。
自動変換が入るので区別するのは無理。
つか
>殆どの参考文献では、$array{'apple'}みたいな書き方をしていたので・・・
の時点で、PHPの参考文献を読み直す時点からやり直し
0274nobodyさん
2006/04/06(木) 06:07:05ID:???0276nobodyさん
2006/04/06(木) 20:36:07ID:eXsgEawwエラー時やデバッグ用にログファイルに情報を出力するLogクラスを作りました。
プログラムのどこからでもこのメソッドを簡単に呼べるように
インスタンスを生成することなしに
Log::write_log();
のようにしてアクセスできるようにと考えました。
1つ問題があって
出力先のログファイルを実行時に指定できるようにしたかったのですが
そのためには
インスタンスを生成するようにして
そのインスタンスのメンバ変数を変更するような実装にしないと
実現できませんよね?
ただそれだと、そのインスタンスを
プログラム内のログ処理を行う多くの関数で
グローバル宣言が必要になるので面倒で悩んでます。
よくある処理だと思うのですが
このログ出力のような実装はどのようにするべきなのでしょうか?
・クラスを使わずにただの関数として実装
・インスタンスなしのクラス + ファイル名などの設定値はグローバル変数で実装
一応思いついたのは上の2つですがどうもすっきりしません。
よろしくおねがいします
0278nobodyさん
2006/04/06(木) 22:07:12ID:???0279nobodyさん
2006/04/06(木) 22:54:00ID:???private static $fileName, $fp;
みたいにしといてLog::fileName()メソッドでファイル名を設定+fopen。
Log::writeLog()メソッドでは、ファイル名が指定されていない場合は例外投げるとかtrigger_error呼ぶとか。
あとクラス使わない他の方法としては、trigger_errorとphp.iniのlog_errorsで対応するとか、ログを取る場所をプログラム内であちこちに分散させないように設計するとか色々。
もちろん普通に関数やメソッドの引数でファイル名指定とかでもいいと思うし。
0280nobodyさん
2006/04/06(木) 23:56:36ID:94BcmyXj頂いたアドバイスをヒントに考慮した結果、無事に求めていた表示を出すことが出来ました。
0281nobodyさん
2006/04/07(金) 00:00:28ID:???0282nobodyさん
2006/04/07(金) 00:15:11ID:???$array[intval($item)]としてみたら空白が消えた。
よくよく考えたら「数字の文字列」なんだから、数字に変換しても問題ないんじゃないかな、とおもって。
お騒がせしました・・・・orz
0283nobodyさん
2006/04/07(金) 03:03:34ID:???続きなら以前のレス番を書くなり、アンカーなり付けてくれ
0284nobodyさん
2006/04/07(金) 05:46:44ID:???鯖の設定ミスでソース見れちゃうような言語はダメ。
0285nobodyさん
2006/04/07(金) 06:46:45ID:???0286276
2006/04/07(金) 10:20:43ID:???ありがとうございます
試してみてうまくいきました
こういうときはメンバ変数もstaticで宣言すればよかったんですね
これですっきり実装できそうです
0287nobodyさん
2006/04/07(金) 11:49:59ID:jJE5oi/7ある値について、「その値が文字列型であり、かつ、空文字列ではない」かどうかを
手っ取り早く判別する方法があれば教えてください。
単純に boolean 型にキャストするだけだと、'0' が FALSE として扱われるので駄目なのです。
自分が考えたのは、例えば
・ (boolean)strlen($var)
・ (is_string($var) && $var !== '')
などです。
ただし、前者の場合は、文字数を正確に数えるだけ処理が無駄ですし、
後者の場合はやや煩雑であるのが欠点です。
その他に何か良い方法がありますでしょうか?
0289nobodyさん
2006/04/07(金) 14:02:32ID:???0290nobodyさん
2006/04/07(金) 14:37:53ID:???「その値が文字列型であり、かつ、空文字列ではない」かどうかを調べたいんだから、素直に書いておくのが良いと思う。
(is_string($var) && $var !== '')
よりも良い書き方はなさそう。
あとstrlenが文字数を「数える」と思ってるらしいけど、そんなことはないから安心しなよ。
0291nobodyさん
2006/04/07(金) 14:44:13ID:???名前空間が汚れないってこととか、必要ならprivateなメソッドを増やして拡張できること、ってのもあるんじゃない?
あと例えばログのフォーマットをするメソッドをうまく分離しておけば、後々他人が使わざるを得ないときに、継承して楽に拡張できる可能性もある。
すばやくコーディングすることだけが目的ならばクラスは必要ないけどね。
備えあれば憂い無しってやつ。
0292nobodyさん
2006/04/07(金) 15:05:53ID:???>あとstrlenが文字数を「数える」と思ってるらしいけど、そんなことはないから安心しなよ。
そうなの?数えないんだ?
mb_strlen() はどうでしょう?こっちは数えますか?
0293nobodyさん
2006/04/07(金) 15:25:18ID:???> mb_strlen() はどうでしょう?こっちは数えますか?
エンコーディングの種類に応じて数える。
いろんな長さの文字列で時間測ってみればわかる。
ちなみに手元にあるPHP/4.3.3のソースでは
strlen - Zend/zend_builtin_functions.c:256 zend_if_strlen()
mb_strlen - ext/mbstring/mbfilter.c:7599 mbfl_strlen()
PHP5でもmbstring系のファイル分けで移動されてるけど内容はまったく同じ。
0296 ◆Ve5JH752sw
2006/04/07(金) 20:34:50ID:uvHuopgEdefine(PATH, pathtopath);
PHP勉強してる初心者ですが、
変数と定数の機能は同じに思えるのですが
どう違うんでしょうか?
0297nobodyさん
2006/04/07(金) 20:41:19ID:???> 定数を定義することができるのは、define()関数 のみです。単なる代入による定義はできません。
> 定数は、定義することができ、変数のスコープ規則に関係なく、あら ゆる場所からアクセス可能です。
> 定数は一度設定されると再定義または未定義とすることはできません。
> 定数は、スカラー値としてのみ評価可能です。
0298nobodyさん
2006/04/07(金) 20:42:47ID:???http://www.shigeweb.jp/php/project_p/?section=first&page=const
0299nobodyさん
2006/04/07(金) 21:19:11ID:???俺も最初同じじゃん、定数いらないじゃんと思っていた。
ポイントは>>297にあるように
1.書き換えられない
2.あらゆる場所からアクセス可能
ってところじゃない
0300nobodyさん
2006/04/08(土) 05:19:01ID:???定数って、例えば掲示板なら、ログのパスとか保存件数とかタイトルとか…そういう設定を定義する際に使ってた。
変数と違ってスコープとか関係ないから、関数の中からでもすぐに呼び出せて便利だなとか思ってた。
perlから入ったのでなおさらそう感じていた。(perlでは変数は特に宣言しなければグローバルなので)
ところが、例えばヒアドキュメント内に使いたければ一度変数に入れてから展開しなければいけないとか、
変数と違って"hage{$hoge}fuge"とか出来ないし、web用の設計してるとどうも不便な事が多い(特に出力面で)と感じ始めた。
結局、設定値は$CFGという連想配列作って
$CFG['xxx'] = 'yyy';
$CFG['aaa'] = 'bbb';
という具合に設定するやり方に帰結した。
お前らはどうしてますか?
0301nobodyさん
2006/04/08(土) 07:05:30ID:???定数の必要性を感じたことがないなあ。
歴史上の人物みたいな過去のものは変わらないので(たまに変わるから侮れない)
定数のほうが便利そう。。。じゃないなやっぱり。
PHP5のオブジェクト定数ならぜひ使いたい!!!のか?
記述は面倒だし一括処理には向いてないし定数自体に魅力がないもん。
global $val を多用する人には便利なんだろうとは思う。
0302nobodyさん
2006/04/08(土) 07:31:42ID:???意味のない数字をわかりやすくするために使うもんだろ
0303nobodyさん
2006/04/08(土) 12:40:29ID:???自分は定数は余り使わないのだが、出力の際の面倒さというのは
テンプレートシステムを使ってるので殆ど感じない。
0304nobodyさん
2006/04/08(土) 12:50:54ID:???設定に何でも定数を使う傾向があるのはどうだろうね。
変更されたくない値に使うのはいいと思うけど…。
0305nobodyさん
2006/04/08(土) 14:09:58ID:???0306nobodyさん
2006/04/08(土) 14:44:42ID:CBLWHBmwPHP5.0.4-2
を使っています。
PHPでファイルをアップロードするスクリプトを作っているのですが
1MBあたりを超えるとファイル自体はアップロードされるのですが、
壊れてしまって参照することが出来ません。
php.iniやphp.confのpost_max_size,upload_max_filesize,memory_limitの
数字を大きくしてみてもダメでした。PHP5になってから他に設定する
場所等が増えたのでしょうか?
phpinfo();で確認しても設定は反映されていました。
0307nobodyさん
2006/04/08(土) 16:22:06ID:???ブラウザのダイアログで表示・ダウンロードさせたいんだけど、
よい方法ないでしょうか?
別場所に tar.gz で一旦作ってから
ダウンロードするのなら簡単にできたんだけど
容量の関係でこれはやりたくないのです。
0308nobodyさん
2006/04/08(土) 16:28:13ID:???0309nobodyさん
2006/04/08(土) 17:41:51ID:???ところでgzip圧縮って、いきなり途中を読める圧縮だっけ?
毎回頭から読むのはちょっと現実的じゃないねぇ。
0310nobodyさん
2006/04/08(土) 18:34:25ID:???0311nobodyさん
2006/04/08(土) 22:27:49ID:???header('Content-type: application/octet-stream');
header('Content-disposition: attachment; filename="'.basename($dir).'.tar.gz"');
`tar -cz $dir`;
とかでいいんじゃない?
0312nobodyさん
2006/04/08(土) 22:44:56ID:lXTRpuzLごるぁする所知らんので誰かやってくださる親切な人はおられんかのぉ?
まったく、dev版じゃないとちゃんと動かんつーのさえ何とかなってくれれば orz
0313nobodyさん
2006/04/08(土) 22:45:34ID:???0314初心者
2006/04/09(日) 00:01:38ID:???保存する方法はあるのでしょうか?
最近perlからphpに移って超初心者です…。
0315nobodyさん
2006/04/09(日) 00:17:31ID:???フォームの内容ってのはフォームで送信された内容、ってことでいいの?
だったら$_REQUESTに最初から保存されてる。
0317nobodyさん
2006/04/09(日) 02:19:08ID:???0318nobodyさん
2006/04/09(日) 02:21:05ID:???0319nobodyさん
2006/04/09(日) 02:40:45ID:???0320nobodyさん
2006/04/09(日) 02:46:33ID:???file_get_contentsのように全て読み込まないで、特定の文字列が来たら終わりというようにしたいのですが。
0323nobodyさん
2006/04/09(日) 03:12:58ID:???fgetsだと標準で改行まで読んでくれますが、
仮に特定の文字列が3文字だった場合などはどうすればいいですか?
その行を取り込んで更に処理するしかないでしょうか?
0324nobodyさん
2006/04/09(日) 03:16:04ID:???普通なら読むだけ読んで不要なデータを捨てた方が
結果的に処理が速いケースの気がするが、
読み込み自体を防ぎたいという目的(理由が分からんが)なら
freadで1バイトずつ読み込んで該当文字列を探せばいいと思う。
0325nobodyさん
2006/04/09(日) 03:28:30ID:XN61lwuX$d="2006-04-25";
という形式で保存されているデータがあるとして、この翌月を「5」ではなく「05」求めたい場合、
date("Y-m-d" , strtotime("+1 month",strtotime($d)));
これしか思いつかなかったんですが、もっとスマートな方法はありますか…?
0326nobodyさん
2006/04/09(日) 04:47:34ID:???date("Y-m-d",strtotime($d ."00:00:00 +1 month"));
細かいところにはあえてこだわらない
05の月部分を求めるなら date("m", だろう。
0327nobodyさん
2006/04/09(日) 21:24:55ID:???(
[0] => hogehoge
)
このようなオブジェクトの0プロパティ(?)にアクセスするにはどうすればいいですか?
$obj->0 としても数字使うなって怒られます。
0328nobodyさん
2006/04/09(日) 21:52:21ID:???0329nobodyさん
2006/04/09(日) 21:55:38ID:???シングルクオーテーションですか?それでやってもエラーになってしまいます。
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting T_STRING or T_VARIABLE or '{' or '$'
0331nobodyさん
2006/04/10(月) 02:48:26ID:???本当にプロパティ名が 0 で値を持つなんていうオブジェクト作れるのか……?
まぁもし本当にあったら俺は get_object_vars 使って中身を配列で取得するな。
0332nobodyさん
2006/04/10(月) 03:41:33ID:???どうやればいいですか?
0334nobodyさん
2006/04/10(月) 04:05:15ID:???プロパティ名を数字にすること自体はPHP4でもPHP5でも可能ですよ。
常用してると後で取り返しの付かないことになりそうだけど。
$ちんぽ = array('10cm', '20cm', '30cm');
$中出し = (object)$ちんぽ;
print_r($中出し);
0335nobodyさん
2006/04/11(火) 03:56:23ID:???例えばソースや内部エンコードをEUCに統一していたとしても、どうやらSJISでしか出力しないようで。
昔1を使用していた時は問題なくできたのですが、今はPHP5では2しか使えないようで困っています。
0337nobodyさん
2006/04/11(火) 10:54:39ID:???0338nobodyさん
2006/04/11(火) 12:04:35ID:???0339nobodyさん
2006/04/11(火) 13:40:40ID:???mb_convert_encodingをかければちゃんと出るみたいなのですが、
全ての箇所にかけるのは手間がかかりますし文字コードの設定で直るならそっちがベターかなと
0340nobodyさん
2006/04/11(火) 22:19:23ID:2AXtnnt+出力の方は忘れた。
0341nobodyさん
2006/04/11(火) 22:20:41ID:2AXtnnt+0343nobodyさん
2006/04/12(水) 10:30:37ID:p8Vzvn2B0344nobodyさん
2006/04/12(水) 18:50:59ID:???原因がわかるでしょうか?
とりあえず、phpinfoではpngは使えるけどjpegは使えないです
0346nobodyさん
2006/04/12(水) 18:57:51ID:6+o4oJzb0347nobodyさん
2006/04/12(水) 19:06:20ID:???--with-gdでjpegも全部使えるはずだけどね。
jpeg-6bとかgdの再インストールとか試してみたら?
0348nobodyさん
2006/04/12(水) 19:10:08ID:6+o4oJzbgd library install
http://www.hizlab.net/app/install/gd.html
とかみながら再インストール試したりしてるんですがダメなんです…
一度消さないとダメですかねぇ。あんまり環境変えたくないんで
なるべく被害すくないのがいいんですけど。
--with-gd
はつけてます…ダメな場合とこかにエラーでたりとかしますでしょうか?
0349344
2006/04/12(水) 19:13:36ID:6+o4oJzbzlib-1.1.4-8
libjpeg-6b-26
がRPMで入ってるます
0351nobodyさん
2006/04/12(水) 19:56:23ID:???http://www.php.net/image
ここに
> jpeg-6b To enable support for jpeg-6b add --with-jpeg-dir=DIR.
って書いてあるけど、この--with-jpeg-dir=DIRってやついれてphpのconfigureからしなおしてみたらどうだろう?
(元のconfigureオプションはphpinfoに出てるから、その通りやればたぶん環境が変になったりはしないでしょう)
それでも解決しないなら俺にはちょっとわからんかも。
つーかjpegが使えないってことはfunction_exists('imagejpeg')とかがfalseになるの?
phpinfoはJPG Supportの欄がなかったりdisabledになってたりするの?
0352344
2006/04/12(水) 19:58:06ID:6+o4oJzb>phpinfoはJPG Supportの欄がなかったり
の状態です。欄がないっす
>>351さんの方法を試してみます
0353nobodyさん
2006/04/12(水) 20:40:44ID:???たとえば、$_SERVERを書き込もうとして
fputs( $fp, $_SERVER);
のようなことをしたら、最初の一行しか書き込まれませんでした
0356nobodyさん
2006/04/12(水) 21:54:51ID:???apache 2.0.52を使用しています。
phpはutf8で記述しています。
HTMLのフォーム(euc-jp)からフィールドに""の文字をポストして、
echo mb_detect_encoding($_POST['field']);
とすると、EUC-JP と表示されます。
echo mb_convert_encoding($_POST['field'], "UTF-8", "EUC-JP");
とすると ASCII と表示されます。
echo mb_convert_encoding($_POST['field'], "UTF-8", "SJIS");
としたら UTF-8 と表示されましたが、
echo $_POST['field'];
したところ "鐔?"こんな風に表示されました。
どうしたら 汲ェ表示できるのでしょうか。
ちなみにmb_language( 'Japanese' );を設定しています。
0358nobodyさん
2006/04/12(水) 22:09:44ID:???0359nobodyさん
2006/04/12(水) 23:17:40ID:???次のようなテーブルがあり、ブラウザで内容を表示して
該当レコードを削除する処理を行っているのですが、
何故か一致しないレコードまで消えてしまいます。
仕様上、HTML・PHP・DB(PostgreSQL)の文字コードは変更できないため、
Unicodeでクエリを送信することができません。
(HTMLはSJIS、PHPはEUC、DBはUTF-8)
何かいい方法がありましたら、教えて下さい。
/ table / / ブラウザ /
+---+----+ +--------------------+
| old | new | | |
+---+----+ | old | new | del |
| あ | い | |----+----+-----|
| 龍 | 竜 | | あ | い | del|
| 國 | 国 | | 龍 | 竜 | del|
| 齊 | 斉 | | 國 | 国 | del|
| 邊 | 辺 | | 齊 | 斉 | del|
+---+----+ | 邊 | 辺 | del|
+------+---+---------+
※delに張っているリンク
<a href="javascript:del_rec('あ','い')">del</a>
<a href="javascript:del_rec('龍','竜')">del</a>
0360nobodyさん
2006/04/12(水) 23:18:24ID:Rd5VnMi6function del_rec(old_value,new_value){
var frm=document.forms[0];
if(!confirm("このレコードを削除します。")){ return }
frm.ov.value=old_value; // ┐
frm.nv.value=new_value; // ┴hidden要素に格納
frm.action="del.php"; // レコードを削除するPHP
frm.submit();
}
※PHPでの削除部分(若干省略)
$item=cnv_enc_arr($_POST,ENC_EUC,ENC_SJIS); // $_POSTをSJISからEUCにエンコード
$item=sp_char_arr($item,ENT_QUOTES,ENC_EUC); // $itemのHTMLエンティティ文字を変
換
$old_v=$item['old_value'];$new_v=$item['new_value'];
$sql="DELETE FROM table WHERE old=:old and new=:new";
$stmt=$db->prepare($sql);
$stmt->bindParam(":old",$old_v);
$stmt->bindParam(":new",$new_v);
$stmt->execute();
/ 実行結果 /
「old=あ , new=い」のレコードをdelしたところ、
「old=龍 , new=竜」のレコード以外が削除される
表がズレた & ID忘れてましたorz
0361356
2006/04/12(水) 23:23:08ID:???mb_convert_encoding( "" , "JIS", "UTF-8");
メールで梶A汲ネどを送信する場合はどうするのでしょうか。
0362344
2006/04/12(水) 23:32:27ID:6+o4oJzb別鯖で設定してみたらあっさりできたのに、入れたい鯖だけはいってくれないー
JPEGサポートだけだめってどういうことなんだー
0365361
2006/04/13(木) 00:10:49ID:???メールってjisいがいでおくれるの?
0366344
2006/04/13(木) 00:33:25ID:KnVEm6m2configure:34024: checking for the location of libjpeg
の跡にnot found がでてなければみつかってるはずですよね・・・
あとは何をチェックすればいいんでしょうか・・・
0367nobodyさん
2006/04/13(木) 00:42:32ID:???送れなくはないが、ちゃんと表示できるかは相手次第。
というか、それを言い出したら汲ニかの機種依存文字自体、送っちゃダメ。
0368344
2006/04/13(木) 01:44:41ID:KnVEm6m2ご存知のかたいませんか?
GDを別にセットアップしても
2.0.28のままで新しくいれたはずの2.0.33にかわらないので・・・
0370nobodyさん
2006/04/13(木) 03:49:08ID:???とやると、demo.phpは正しく読み込まれるのですが
<img src="<?php echo $_SERVER['DOCUMENT_ROOT'] . "/img/powered-by.png" ; ?>" title="powered-by.png" alt="powered-by.png" >
だと、ソースを見ると正しく
<img src="/www/img/powered-by.png" title="powered-by.png" alt="powered-by.png" >
に正しく変換されているのですが、絵が出ません
これは何が悪いのでしょうか?
PHPは正しく動いているのでPHPの問題じゃないと思うのですが
ほかにどこで聞けばいいのかわからないのでここで質問させてもらいます
すいませんがわかる方いればよろしくお願いいたします
0371nobodyさん
2006/04/13(木) 03:59:35ID:???$_SERVER['DOCUMENT_ROOT'] はサーバ上のディスク上のパス
/www なんだろうけど
imgタグに指定するパスはHTTP上のパス例えば
src="http://〜/img/hoge.jpg"
またはドキュメントルートに/imgがあるなら単に
src="/img/hoge.jpg"
でよろし
0372nobodyさん
2006/04/13(木) 04:11:09ID:???ありがとうございます・・。
単に src=/img/powered-by.png で、できました。
これに4時間近く悩んでました・・・。 orz
なんで、requireする時はフルパスで・・・
うぅーーむ、わからん。y
0373344
2006/04/13(木) 05:13:08ID:KnVEm6m22.0.28ってのはrh9に最初から入ってたみたいでどこにあるか
よくわからないままに、落としてきた33をコンパイルしていれたので
同じところなのかどうかわからないっす
0374nobodyさん
2006/04/13(木) 05:26:46ID:???ブラウザというか外から見るときはApacheのドキュメントルートが一番上になるわけ。
だから /wwwの下がブラウザから見るとルートになる。
ブラウザで/varとかして外から見られちゃまずいでしょ。
requireだって相対パスで見れる。例えば/www/demo.phpで読みたいスクリプトも同じとこならなら
require "./demo.php"でOK。ドキュメントルートからの絶対パスで指定すると他のサーバに持っていって
パスが変わると面倒、と言う理由で相対パスを使うことが多いけど。
0375nobodyさん
2006/04/13(木) 07:45:44ID:???php付属のやつだろ
php***/ext/gd/libgd
libgd.soを使うなら
./configure --with-gd=/usr
0376nobodyさん
2006/04/13(木) 08:13:44ID:???識者のご意見をお聞かせ下さい。
1.$FOO
2.$_FOO
3.$_foo
0377nobodyさん
2006/04/13(木) 08:51:12ID:???自分が(他に開発者居るならその人達と相談の上で)分かりやすいのを選べばいい。
俺は1だな。
>>359
テーブルの設計がおかしい。
ID
0378377
2006/04/13(木) 09:00:18ID:???>>376
自分が(他に開発者居るならその人達と相談の上で)分かりやすいのを選べばいい。
俺は1だな。
>>359
テーブルの設計がおかしい。
IDをふってそのIDを指定して削除処理を行うべき。
挙動の理由については↓でも見て。
http://www.kanzaki.com/docs/jcode.html
PHPの話しではないが↓とかも参考になるかと。
http://www.din.or.jp/~ohzaki/perl.htm#JP_Match
>>353
fputs($fp, implode("\n", $_SERVER));
要するに$_SERVERの中身を改行で繋いで1行にしてからfputs()って事。
>>354,355
どこがエスパーなのやら。。
0379nobodyさん
2006/04/13(木) 10:00:07ID:???>>353
>たとえば、$_SERVERを書き込もうとして
>fputs( $fp, $_SERVER);
>のようなことをしたら、最初の一行しか書き込まれませんでした
本当に($_SERVER以外も含めた何かの)最初の1行なのか?
試してないが、全く無関係に「Array」だと思うんだが・・・
0380nobodyさん
2006/04/13(木) 12:47:19ID:y+t9041BROOT
├LIBLARY
│├ARRAY
││├_array.php
││└arrayFunction.php
││
│└error_code.php
│
└WEB
├ABOUT
│└about.php
│
└index.php
------------------
●_array.php
include_once '../error_code.php'; //★
include_once 'arrayFunction.php';
●about.php
include_once '../../LIBLARY/_array.php';
●index.php
include_once '../LIBLARY/_array.php';
------------------
ファイルの配置と中身なのですが、★の部分でエラーが出ます。
理由は分かっており、includeしたファイルで更にincludeした場合、
カレントディレクトリ→一回目のincludeファイルのディレクトリ
という順でファイルを探すため、error_code.phpが見つからないからです。
それを承知の上での質問なのですが、
上記と同じ処理をできるだけ簡単に実現するには
どうすればいいでしょうか?
今の環境はWindowsXP、PHP4です。
0381nobodyさん
2006/04/13(木) 13:00:02ID:???・絶対パスを使う。(よくある方法は「ROOT」にあたる絶対パスを共通のconfigファイル的な部分でdefineしておく)
・php.iniのinclude_pathを利用する。
・どうしても相対的じゃなきゃ嫌な場合はdirname(__FILE__) . '/../error_code.php'のように指定する。
0382nobodyさん
2006/04/13(木) 13:01:48ID:???俺だったらconfigファイル作ってパスを定数で宣言しておく。
config.php------------------------
define("DOCUMENT_ROOT", "ROOTのパス");
---------------------------------
about.php-------------------------
include_once("../../CONFIG/config.php");
include_once(DOCUMENT_ROOT."'LIBLARY/_array.php');
---------------------------------
index.php-------------------------
include_once("../CONFIG/config.php");
include_once(DOCUMENT_ROOT."LIBLARY/_array.php");
---------------------------------
_array.php-------------------------
include_once(DOCUMENT_ROOT."LIBLARY/error_code.php");
include_once(DOCUMENT_ROOT."LIBLARY/ARRAY/arrayFunction.php");
---------------------------------
0383380
2006/04/13(木) 13:32:36ID:???>>382
絶対パスで実装するのが単純でよさそうですが、
相対パスで実装したいので「dirname(__FILE__)」について調べてみます。
ありがとうございました。
0384380
2006/04/13(木) 14:00:31ID:???「dirname(__FILE__)」でカレントディレクトリ名が取得できました。
応用して「dirname(dirname(__FILE__))」で親ディレクトリ名を取得し、
error_code.phpをincldeすることで解決しました。
>>381さんの「dirname(__FILE__) . '/../error_code.php'」では
途中の../の部分でエラーが出たので…。
0385nobodyさん
2006/04/13(木) 14:18:20ID:???0386nobodyさん
2006/04/13(木) 14:38:32ID:???0388nobodyさん
2006/04/13(木) 14:40:32ID:???ヒアドキュメント内で定数は使用できなかったと思う
どうしても定数を使用したいなら、いちど変数に入れなおすか
ヒアドキュメントを辞めて必要な部分だけ
?>
<html>
<?php
echo 定数;
?>
</html>
<?php
って感じでやる方が…
0389nobodyさん
2006/04/13(木) 15:32:41ID:???あと、Perl や Ruby みたいに
文字列のクォートも指定できるようにしてほしい。
print qq|<a href="$link">{$array['index']}</a>|;
みたいに。
0391nobodyさん
2006/04/13(木) 18:14:36ID:???ここはPHPを使っているらしいのですが、
どうやって、ないところはnoneにしてるんですか?
0392nobodyさん
2006/04/13(木) 19:04:59ID:KnVEm6m2phpinfoででてくるバージョンが
かわらないままなんですが、どこのgdを入れ替えたら
いいんでしょうか?
libgd.so
のバージョンに依存する?
0393nobodyさん
2006/04/13(木) 19:36:38ID:PiezBhsDなかなか上手くいきません。良い方法があればご教授いただけませんでしょうか。
宜しくお願いします
0395nobodyさん
2006/04/13(木) 19:55:52ID:PiezBhsDご親切にありがとうございます。調べてやってみます♪
0396392
2006/04/13(木) 21:27:38ID:IrbHDKpJ0397359
2006/04/13(木) 22:25:17ID:???ですよね('A`)
IDがあれば削除しやすいんですが・・・
ひとまず、WHERE句の条件を = から Like に変更したら正常に動きました・・・・・('A`)
なんなんだよいったい・・・・・・・
0398nobodyさん
2006/04/13(木) 23:36:07ID:???PHPは自分がコンパイル時に指定されたディレクトリ上のライブラリファイルを読み込むから、
同じディレクトリで上ライブラリを書きするか、別のディレクトリを指定してPHPを再コンパイルするか
どっちかしないとそのライブラリは認識できないよ。
0400nobodyさん
2006/04/14(金) 01:02:21ID:lStBexrZ$keyword ="$_POST[keyword]";
$count=count($fi);
$fi = file("search.txt");
for($i=0;$i<$count;$i++){
$kekka="$fi[$i]";
if($keyword=="$kekka"){ print"$kekka"; }
}
search.txtには
テレビ
パソコン
と入っているとします。form.htmlで「テレビ」と入力した時、検索結果に「テレビ」と
表示して欲しいのですが、何も表示されません。search.txt内が1行の時は表示されます。
search.txtが複数行の場合、どうしたらいいのでしょうか?
0402nobodyさん
2006/04/14(金) 01:08:52ID:???さらに詳しく説明すると、
マニュアルにも書いてあるが、file()は改行文字も各配列要素に取り込まれる事になる。
なので、
if(テレビ == テレビ(+改行文字)) となり、一致しない。
0403400
2006/04/14(金) 01:22:47ID:???私も改行コードについて気になっていました。
しかし、どうやって改行コード(\n)を取り除いて出力するのかわかりません・・。
0405nobodyさん
2006/04/14(金) 02:56:28ID:???$fi = file("search.txt");
$count=count($fi);
だろ。
0406344,392
2006/04/14(金) 04:16:40ID:xKvM6FxT再コンパイルするときって前コンパイルに使ったところでもう一回
./configure
からやっても無駄なのね。
ダウンロードして、解凍しなおしたものでやりなおしたらできますた。
回答してくださった方、ありがとうございました。<m(_)m>
0407nobodyさん
2006/04/14(金) 09:58:42ID:nvaHi/Q00408nobodyさん
2006/04/14(金) 10:02:18ID:???大文字、小文字関係なく、なら見つけたのですが。
あまりにも全角英数字入力する人が多くて。
一旦変数を半角に変換して、ということも考えましたが、
その他の文字列も含むので行えませんでした。
全てが全角ならまだしも一部だけ半角とかで検索する人がいるんで
やっかいです
0409nobodyさん
2006/04/14(金) 10:14:48ID:???それは単なる写し間違いだと思ってたから気にもしてなかった。
だって、本物がそれだったら中身1行でも全く出力されてないはずじゃん。
0411nobodyさん
2006/04/14(金) 10:32:20ID:???$_SERVERの中身を出力してるだけだけど、それの何が分からないのかが分からない。
>>397
お節介だとは思うけど、やはりテーブルの設計(というかDBの設定)からやり直した方がいいよ。急がば回れっていうでしょ。
Likeにしたら正常に動いたってのは偶然の話し。ヒントはUTF-8。
UTF-8とは何なのか理解できてるのかな?
http://e-words.jp/w/UTF-8.html (UTF-8の簡単な説明)
そもそもあえてDBをUTF-8にしてる理由は何なのかが俺には疑問です。きっと理由はあるのでしょうが。
>>400
$fi = array_map('trim', file('search.txt'));
if (in_array($keyword, $fi)) { echo($keyword); }
全く同じ挙動でいいなら2行で書ける。
PHPって何でも関数が用意されてるので、関数リファレンス本を一冊買ってざっと読んでみるといいよ。(trim系の関数も知らないみたいなので)
>>408
>>410に賛成。半角に変換する方法が分からないならmb_convert_kana()を参照。
PHPって本当に楽ちん。
0412nobodyさん
2006/04/14(金) 10:59:38ID:???別にDBは扱いが容易な文字コードであれば何だっていいと思うんだが
(そのPHPプログラムからしか使わないとは限らないんだしな)
それより気になるのは
>>359
> 仕様上、HTML・PHP・DB(PostgreSQL)の文字コードは変更できないため、
> Unicodeでクエリを送信することができません。
> (HTMLはSJIS、PHPはEUC、DBはUTF-8)
なんでUTF-8でクエリを発行できないのかということだよ。
普通にPOSTデータをUTF-8に変換してクエリを組み立てれば済む話じゃん。
ソースコードがEUCだからってデータがEUCしか扱えないわけじゃあるまいし。
0413nobodyさん
2006/04/14(金) 11:06:25ID:???またこの形式の文字を他の文字に変換したいのですがどうすればいいですか?
よろしくお願いします。
0415nobodyさん
2006/04/14(金) 11:14:57ID:???> なんていうんですか?
「数値文字参照」
> この形式の文字を他の文字に変換したい
preg_replace辺りで好きに変換すれば?
0416413
2006/04/14(金) 11:21:53ID:???ご回答ありがとうございます。
そういう変換関数はないということですか?
0417nobodyさん
2006/04/14(金) 11:23:40ID:???preg_replaceはそういう変換関数だと思うが?
0418413
2006/04/14(金) 11:28:51ID:???欲しい関数は
"シ" → "シ"
というような関数です。
0420nobodyさん
2006/04/14(金) 11:34:38ID:???0421420
2006/04/14(金) 11:35:50ID:???0422nobodyさん
2006/04/14(金) 11:49:56ID:???マニュアルを探して無いようならば作るしかあるまい
以前範囲限定で作ったのが
$out=preg_replace('/&#(63\d{3});/e', 'pack("n", "$1")', $out);
$out=preg_replace('/&#x?(f[\da-f]{3});/ie', 'pack("H4", "$1")', $out);// 絵文字実体参照の変換
413の脳を収縮させる悪い漏れ('A`)
0423400
2006/04/14(金) 11:54:36ID:???関数をもっと勉強致します。
0424413
2006/04/14(金) 12:02:25ID:???「数値参照文字」でML等をググってみたところ
mb_decode_numericentityという関数があって数値参照文字を変換できるみたいです。
ただ、mb_decode_numericentityは16進数には対応していないので一度16進数を10進数に変換してあげないといけないみたいです。
以下、サンプルです。
$str_x16 = "システム"
$str_num = preg_replace( '/?x([0-9a-fA-F]+);/e', '"?" . hexdec( "\\1" ) . ";"', $str_x16);
$str = mb_decode_numericentity($str_num, array(0, 0xffff, 0, 0xffff), "euc-jp");
ありがとうございました。
0425nobodyさん
2006/04/14(金) 12:04:22ID:???だからそういう関数→特定の形式のパターンを任意の文字に変換→正規表現置換関数。
文字参照の文字は実際の文字データで表記できないものもあるから標準では用意のしようがないかと。
0427nobodyさん
2006/04/14(金) 13:04:52ID:???どうしても上手く行きません。
phpに--with-opensslをつけ再コンパイルしてもRegistered PHP Streamsの項目にhttpsが追加されません。
各モジュールのインストール手順を以下に記述します。
opessl-0.9.7i
# ./config --prefix=/usr/local --openssldir=/usr/local/openssl -fPIC
# make
# make install
apache_1.3.34 + mod_ssl-2.8.25-1.3.34
# ./configure --with-apache=../apache_1.3.34 \
--with-ssl=../openssl-0.9.7i \
--prefix=/usr/local/apache \
--enable-shared=ssl \
--enable-module=so
# cd ../apache_1.3.34
# make
# make certificate
# make install
php-4.4.2
# ./configure --with-apxs=/usr/local/apache/bin/apxs \
--with-openssl \
--with-mysql \
--enable-mbstring \
--enable-mbstr-enc-trans
# make
# make install
0428427
2006/04/14(金) 13:06:55ID:???実際のHTTP_Requestを使用しているプログラム内容を以下に記述します。
<?php
include_once("class/Request.php");
$req =& new HTTP_Request("https://www.google.co.jp");
if(!PEAR::isError($req->sendRequest())){
echo $req->getResponseBody();
}else{
echo "エラー";
}
?>
出力はエラーのみ表示されてしまいます。
0429nobodyさん
2006/04/15(土) 00:56:45ID:???追加する処理は以下のようになっています。
$list = explode("\t", $sometextfile);
$arr = array();
foreach ($list as $line) {
$arr[] = $line;
}
しかし上記のようにしますと配列が以下のような連想配列になってしまいます。
$arr = array(0 => 'hoge', 1 => 'hage');
配列の希望は
$arr = array('hoge', 'hage');
です。
たぶん$arr[]のあたりの処理だと思うのですが、当方解決方法が分かりません。
おわかりになられる方がいらっしゃいましたらご教示下さい。
0431nobodyさん
2006/04/15(土) 01:41:08ID:???単なるファイル操作なら簡単にできそうですが、
途中でアップロードファイルの解析、例えばwordやpowerpointのファイルに含まれている概要情報
(作成者やタイトル)などをphpで取得する方法はありますか?
0433nobodyさん
2006/04/15(土) 02:55:21ID:???freadで中身を読み込んで特定のバイト位置のデータ内容を調べて
そのデータ形式になってるかどうかバイナリ判別。
データ形式とその判別法は頑張って情報を探しましょう。
0434nobodyさん
2006/04/15(土) 04:03:02ID:???PHPでは連想配列と通常の配列の区別は特に無い。
$arr = explode("\t", $sometextfile);
だけでOK。
0435nobodyさん
2006/04/15(土) 07:29:18ID:???<?php
$arr = array('hoge', 'hage');
print_r($arr);
echo "<br>\n";
$arr = array(0 => 'hoge', 1 => 'hage');
print_r($arr);
?>
0436nobodyさん
2006/04/15(土) 09:31:23ID:???さんざん出てるけど、「PHPの言語仕様」という事で希望の状況は無理
そもそも連想配列だと困る事があるの?
(´-`).。oO(珍しく「ご教示」だ・・・)
0437nobodyさん
2006/04/15(土) 15:36:11ID:???> 希望の状況は無理
違う。「最初から希望の状況になってる」が正しい。
$a = array("a", "b");
$b[] = "a";
$b[] = "b";
var_dump($a);
var_dump($b);
結果
array(2) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
}
array(2) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
}
0438nobodyさん
2006/04/15(土) 15:37:44ID:???> そもそも連想配列だと困る事があるの?
連想配列(キーが文字列)と普通の配列(キーが数値)では
配列のキーを操作する関数で動きが変わる場合があるね。
なので、両者は区別して扱わないと変なとこではまる。
$x[3] = "xxx";
array_unshift($x, "yyy");
$y["a"] = "xxx";
array_unshift($y, "yyy");
var_dump($x);
var_dump($y);
結果
array(2) {
[0]=>
string(3) "yyy"
[1]=>
string(3) "xxx"
}
array(2) {
[0]=>
string(3) "yyy"
["a"]=>
string(3) "xxx"
}
連想配列ならキーの振り直しは行われないが、ただの配列だとキーが変わる。
0439nobodyさん
2006/04/15(土) 17:17:51ID:???後ろに追加する方法って $array[]= しかない?
0440nobodyさん
2006/04/15(土) 18:19:21ID:???>>429は「添え字のつかない連想でないは配列が希望」なので希望通りではないよ
>>438
「>>429が困るのか?」の話であって、一般的な問題は聞いていない
>>439
pushじゃないの
つかarray_unshiftのマニュアルに参照が先として載ってるが・・・
0441nobodyさん
2006/04/16(日) 00:51:39ID:???ふつうセッションとか、setcookieつかうとHTTPレスポンスヘッダーに
Set-Cookie: ???????
がつくよね。
でもこのサイトwww.netprice.co.jp つかないんだけど
なんで?
0442nobodyさん
2006/04/16(日) 01:11:40ID:???> 添え字のつかない連想ではない配列
いつ>>429がそんなこと書いた?
429の希望はあくまで「$arr = array('hoge', 'hage');」であってそれ以外の希望は書いていない。
これは0と1の添え字を持つ連想ではない配列だ。
0443nobodyさん
2006/04/16(日) 01:54:19ID:???どうやって確認したのか知らんが、普通にSet-Cookieヘッダがついてたよ。
初回のクッキーはこんなんだった。
Set-Cookie: isAvailableCookie=ok; Domain=netprice.co.jp; Expires=Mon, 15-May-2006 16:50:53 GMT; Path=/
さらにこのヘッダではステータスで302が返ってLocationで次のページに飛ばされてて、
そこでこのクッキーが記録されているかを確認してクッキーがONかどうかを判定してる。
0447441
2006/04/16(日) 12:57:31ID:???してないです。
自分で作ったセッション使ったページ、他のサイトでは表示されます。
netpriceでは表示されないです。
>>444さんはどうやってレスポンスヘッダーを表示されましたか?
0449nobodyさん
2006/04/16(日) 13:40:29ID:???外部から接続できるなら
http://fula.jp/cgi-bin/head/
http://fula.jp/cgi-bin/head2/
これ使ってみれば
0450nobodyさん
2006/04/16(日) 13:51:33ID:???多分、ツールはどれでも関係なくて、>>447は
「セッションを使うサイトは最初のページでいきなりクッキーを発行してるはず」
というPHPサイトの固定概念に惑わされてるだけ。
netpriceでは要所要所、必要なポイントでしかクッキーを発行していない。
0451441
2006/04/16(日) 14:47:45ID:???session_start();
を実行すると思うのですが、netpriceはphp de セッションを
使用しているのに挙動が違うのが気になったのです。
カート情報 etc.を保持するならば全ページでsession_startしている
と思うのですが
0452nobodyさん
2006/04/16(日) 15:06:18ID:???0453441
2006/04/16(日) 15:08:59ID:???セッションを使うとsetcookieが使われますよね。
0454nobodyさん
2006/04/16(日) 15:33:37ID:???> カート情報 etc.を保持するならば全ページでsession_startしている
ここが誤解。別に全ページでそんなのする必要は無い。
0455nobodyさん
2006/04/16(日) 23:04:14ID:???繰り返し質問が出てくるね
0456nobodyさん
2006/04/17(月) 00:29:11ID:ivoWdWE50457nobodyさん
2006/04/17(月) 00:53:40ID:???http://pc8.2ch.net/test/read.cgi/php/1144513878/434
http://pc8.2ch.net/test/read.cgi/php/1144513878/438
カエレ
0458441
2006/04/17(月) 01:42:11ID:???セッションへ格納する際にsession_start()するとして
また、購入ページに戻ったときに$_SESSION['????']で
参照できません。
0459nobodyさん
2006/04/17(月) 02:16:55ID:???購入ページとカート内確認ページ&支払いページ以外でまで
セッションを読み書きする必要はないじゃん
そこだけsession_startしてるんでしょ
0461nobodyさん
2006/04/17(月) 08:37:34ID:ivoWdWE5ありがとう
0462441
2006/04/17(月) 08:53:47ID:???0463nobodyさん
2006/04/17(月) 10:29:15ID:???すまんがnetpriceのページ見てもどこでカート内容の表示なんてしてるのかが分からない。どこよそれ?
どう見ても、ページ上部の「カートを見る」をクリックしたときしか表示してないように見えるんだが…
(当然、ここをクリックするとクッキーが発行される)
0467nobodyさん
2006/04/17(月) 16:25:10ID:???【PHP】セッションについて語ろう!【PHP】
↑みたいなスレもあるみたいだがセッションだけの話しではないから駄目か?
0468nobodyさん
2006/04/17(月) 17:49:35ID:???0469441
2006/04/18(火) 09:20:14ID:???Set-Cookie: PHPSESSID=***************************; path=/
が付加されるよな。
そんでそのページ内だったら$_SESSで値を参照できると
思うのだが違うのか?
0470nobodyさん
2006/04/18(火) 11:55:20ID:???> そのページのHTTPレスポンスヘッダに
> HTTPレスポンスヘッダに
> レスポンス
そのとおりだね
> そんでそのページ内だったら$_SESSで値を参照できると
> 思うのだが違うのか?
事実違うんでしょ?
結論:>>468
0472nobodyさん
2006/04/18(火) 14:03:14ID:???netpriceがどういうプログラムを作ってるかはとりあえず置いといて概論で話をすると、
> session_start()すると、そのページのHTTPレスポンスヘッダに
> Set-Cookie: PHPSESSID=***************************; path=/
> が付加されるよな。
これはクッキーを使う設定の場合のみ。
> そんでそのページ内だったら$_SESSで値を参照できると
> 思うのだが違うのか?
クッキーを使わない設定にしてても発行済みのクッキーからセッションIDは読み取れるので
そこから$_SESSIONの参照は可能ではある。
netpriceに関しては、「クッキーを発行してないのに明らかに$_SESSIONの内容を表示してる」
とかいうページがどこなのか分からんので、そこを具体的に示してくれんことには話にならん。
0473nobodyさん
2006/04/18(火) 16:11:15ID:???diffみたいなものです。
0474nobodyさん
2006/04/18(火) 17:00:18ID:???日本語に対応してるかは知らんけど
0475nobodyさん
2006/04/19(水) 00:55:56ID:X+QcIjUE今までPHPのmail()でlocalhostから送信してたのですが、
これをメールサーバから送信するようにするにはどうしたら良いのでしょうか?
もしかしてmail()じゃ無理っすか?
もう動いちゃってるのでプログラムの変更は最小限にしたいと思っております。
サーバの設定等でできるとうれしいです。
環境は
CentOS
Apache2
Php4.3.10
Qmail
です。
0477nobodyさん
2006/04/19(水) 07:18:21ID:???php.iniのSMTPが有効なのは、win32環境の時のみ。
>>475
fsockopen()を使って自力でSMTPを喋るか、pearのmailパッケージあたりを使うのがいいんじゃないかな。
てか、localhostでもいいと思うんだが。
0478nobodyさん
2006/04/19(水) 11:58:00ID:???IDやパスもいらなかった
0481nobodyさん
2006/04/19(水) 13:44:43ID:???今時オープンリレーなんて豪気だなと思って、
その懐の豊かさを晒してやれ(w
ただ、喪前は積極的には使うなよ。
0482nobodyさん
2006/04/19(水) 13:53:59ID:???ふと思った。太っ腹オープンリレー鯖のことかもしれないけど。
0483ぺこり
2006/04/19(水) 17:17:30ID:QMAjoMk/m(_ _)m
0484ぺこり
2006/04/19(水) 17:18:03ID:QMAjoMk/このファイルから1行ずつ文字を読み込み,(2_3), (2_4),(2_5)のように
表示するプログラムを,各々再帰関数を用いて作成せよ.
なお,プログラム中で配列を用いてはならない.
indata.dat
1
2
3
4
5
6
7
8
9
(2_3):(正順に表示する)
1 2 3 4 5 6 7 8 9
(2_4):(逆順に表示する)
9 8 7 6 5 4 3 2 1
(2_5):(3組ずつ逆順に表示する)
3 2 1 6 5 4 9 8 7
0485nobodyさん
2006/04/19(水) 17:26:11ID:???宿題は自分で考えましょう。
出来ないからといって、他人を頼ってはいけません。
「出来ない」それが今のあなたの評価なのですから。
0486nobodyさん
2006/04/19(水) 17:38:59ID:???配列使用不可とか目的が分からん
0488nobodyさん
2006/04/19(水) 17:45:06ID:???そこを>>484みたいな馬鹿は楽しようとするから
うちのY野みたいに使えない奴が平気でプログラマーを名乗るんだわorz
0490えび
2006/04/19(水) 18:22:48ID:iaJ4T1lt時計の長針と短針が初めて直角になる時刻
k時m分n秒を出力するプログラム」
を作るにはどうしたらいいのでしょうか?
教えてください!(>_<)
0492nobodyさん
2006/04/19(水) 19:08:25ID:???野上
0493nobodyさん
2006/04/19(水) 19:14:42ID:???中上
0494nobodyさん
2006/04/19(水) 20:24:44ID:???HP
0495475
2006/04/20(木) 02:08:23ID:qPD81MYcレスありがとうございます。
あわよくばサーバの設定でどうにかならんのかとも思ったのですが無理みたいですね。
pear使うように変更します。
会員向けの全配信を行っていてlocalhostだとちょっと負荷がかかりすぎてしまうんです。
スパムじゃないっす。
0496nobodyさん
2006/04/20(木) 05:55:41ID:???MySQLの特定データベースに接続してテーブルを作成して・・・というのは出来るのですが、
MySQLに接続してPHPからデータベース自体を作成する関数・コマンドがわかりません。
もしご存じであれば、説明しているサイトややり方を教えていただければと思います。
0497nobodyさん
2006/04/20(木) 06:12:41ID:???確認してないんだけどmysql_queryでCREATE TABLE実行できない?
mysqli->queryはマニュアルにサンプルがあるけど。
ちなみにXOOPSがテーブル作成をやってたと思う。
0498nobodyさん
2006/04/20(木) 06:26:49ID:???確認してないんだけど、それって「テーブルを作る」方法であって、
「データベース自体を作成する関数・コマンド」では無いよね?
>>496
シラネ
0500nobodyさん
2006/04/20(木) 07:25:42ID:???0501nobodyさん
2006/04/20(木) 08:24:03ID:???そんなアホみたいに簡単なことでも専用のmysql_create_db()てのがあるぞ!
て言おうと思ったら廃止予定だってw誰も遣ってなかったって事屋根。
0502496
2006/04/20(木) 13:12:41ID:???>>501
てことは、もう使えないんですかね?
テスト環境はPHP5.1+MySQL5.0.18なんです。
だから確実に古い関数は消えているかと・・。
どうしたら良いんだろうな・・・
0504nobodyさん
2006/04/20(木) 13:39:41ID:???こんな関数あるの?
0505496
2006/04/20(木) 13:56:58ID:???以下のようなソースでOKだったんですね。。勉強になりました。
$DBSERVER="localhost";
$DBUSER="test";
$DBPASSWORD="test";
$DBNAME="hoge";
$con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD);
$rst = mysql_query("create database $DBNAME");
if($rst){
print"$DBNAMEを作成しました。";
}else{
print"失敗しました";
}
0507nobodyさん
2006/04/20(木) 16:24:06ID:iuRzPwTnffmpeg_animated_gif オブジェクトを new で作成すると、セグメンテーションフォルトでプロセスがダウンしてしまいます。
Apacheモジュール版でも、CLI版でも同じようになってしまいます。
これってなにか解決法はないでしょうか?
環境
Fedora Core 5 (カーネル 2.6.15-1.2054_FC5)
Apache 2.2.0 (自前ビルド)
PHP 5.1.2 (Zend Thread Safetyなし 自前ビルド)
ffmpeg 0.4.9-0.21.20051228.lvn5 (livnaのRPM)
ffmpeg-php 0.4.6
0508507
2006/04/20(木) 21:57:54ID:RzC6bNe0ffmpeg-phpの最新版をCVSから取得してコンパイル・インストールしたら、問題が起こらなくなりました。
0510nobodyさん
2006/04/23(日) 08:13:06ID:paGhm8t3WinXPなので、c:\windowsフォルダにphp.iniを入れたのですが
読み込んでくれなくて困ってます。
考えられる原因はなんでしょうか?
Apacheで動作確認すると、一応PHPは動きます。
phpinfoも表示されます。
phpinfoでのphp.iniの場所はc:\windowsになってます
php.iniを削除しても↑のままです
けど、あってもなくても、中身はみられてなくて、デフォルト設定のままです
他の場所を検索してもphp.iniは見当たりませんでした
0513nobodyさん
2006/04/23(日) 10:50:30ID:62aZMTpX0514nobodyさん
2006/04/23(日) 10:51:33ID:???よく読んでナカータ。。。
0515nobodyさん
2006/04/23(日) 11:47:09ID:paGhm8t3再起動してます。PCごと再起動もやってみましたがダメでした
php.iniの構文エラーのチェック方法ってありますでしょうか?
http.confはチェックプログラムありましたけど・・・
>>512
ファイル名は確認しました
拡張子表示してるので、こっそり.txtとかってこともないです
0516nobodyさん
2006/04/23(日) 12:05:25ID:???ハードディスクの中全部でphp.iniがどこにあるか検索しちゃどう?
phpinfoでのパスが合ってるということなのでアレですが、以下はphp.iniの探す順番
http://www.php.net/manual/ja/configuration.php#configuration.file
0517nobodyさん
2006/04/23(日) 12:52:11ID:???0519nobodyさん
2006/04/23(日) 13:21:21ID:???「読み込んでいない」っていうのはそもそもどういう状態?
別の部分の動作確認してて、php.iniを読んでないような「気がしてるだけ」ってことない?
0520nobodyさん
2006/04/23(日) 13:44:45ID:???構文チェックツールがあるかどうかは知らない。GUIで作成するツールはなんかあった希ガス。
>>519と被るが、どうやって「反映されない」事を確認したのかが気になるな。
0521nobodyさん
2006/04/23(日) 15:38:21ID:LKBdtcmunusoap.phpを使用したソース2のように変更したところ
116.555と表示されていたものが、
0と表示されてしまいます。
どこが駄目なのかわからないのですが。
【ソース1】
-------------------------------------------------
<?php
$client = new soapclient("http://www.webservicex.com/CurrencyConvertor.asmx?wsdl");
$param = array('FromCurrency'=>'USD','ToCurrency' =>'JPY');
$result = $client->ConversionRate($param);
echo $result->ConversionRateResult;
?>
-------------------------------------------------
【ソース2】
-------------------------------------------------
<?php
include("nusoap.php");
$client = new nusoapclient("http://www.webservicex.com/CurrencyConvertor.asmx?wsdl",TRUE);
$objPx=$client->getProxy();
$param = array('FromCurrency'=>'USD','ToCurrency'=>'JPY');
$result = $objPx->ConversionRate($param);
echo $result['ConversionRateResult'];
?>
-------------------------------------------------
0522nobodyさん
2006/04/23(日) 17:16:19ID:???たぶんapacheの設定が足りないと思うんだけど、なにをしたらいいんでしょうか。
今は
LoadModule php5_module modules/libphp5.so
という一行を追加しただけ。
Apache2.0はこれでうまくいったんだけどなー。
0523nobodyさん
2006/04/23(日) 17:22:06ID:???AddType application/x-httpd-php .php
たぶん2.0もこれ入れないと動かないような気が・・・
0524nobodyさん
2006/04/23(日) 17:22:31ID:???AddType application/x-httpd-php .php
が足りませんでした。お恥ずかしい。
0525nobodyさん
2006/04/24(月) 03:51:43ID:VfLSu+M7データの実体参照化は
htmlspecialchars
htmlentities
どちらを使った方がいいでしょうか?
0527nobodyさん
2006/04/24(月) 11:37:04ID:PGhFNhwXで、全角が一個もないのでスパム! って判定をしたいのですが
判定が成功しません。どなたか教えてください
環境:UTF-8 $messageに内容が文字列がはいってます。
if(mb_strlen($message) >400){ #400文字以上の場合チェック
if (ereg('~ /[\xc0-\xf7][\x80-\xbf]/',$message)) {
広告ではない
}else{
きっとSPAM
}
}
参考にした文字コード
ttp://ash.jp/code/code.htm
0529527
2006/04/24(月) 12:06:59ID:???やたのですが
if (ereg('/[\xc0-\xf7][\x80-\xbf]/',$message)) {
でもだめでした。
0531527
2006/04/24(月) 12:24:34ID:???駄目でした。。 (ノ◇≦。) ビェーン!!
0533527
2006/04/24(月) 12:49:18ID:???先週までPerlやってたので混乱してました
if (preg_match('/[\xc0-\xf7][\x80-\xbf]/',$message)) {
で、OKでした。。 氏にたくなった。。
これから飯喰いに逝って来ます。
ああ、、時間が。。 カロリーメイトだな。。。゜゜(>ヘ<)゜ ゜
ありがとうございました。
0534nobodyさん
2006/04/24(月) 14:41:16ID:???0535527
2006/04/24(月) 14:53:41ID:???でも、そうだよね。ハマるよな
少し離れて冷静に、、ありがとね。
0536nobodyさん
2006/04/24(月) 15:49:24ID:???0537527
2006/04/24(月) 16:27:30ID:???ところで、改行コード(行数)を数えるのに
substr_count($message,'\n'); は、駄目で
substr_count($message,"\n"); で、OKなのは、なんで?
ダブルクォーテーションとシングルなんて、意識しないで使ってました。
これで、3時間悩んだ。 詳しい人がいないとつらいです。
腹減った。
0539nobodyさん
2006/04/24(月) 16:33:49ID:???詳しい詳しくない以前に、ちょっとは調べようよ。
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=php+%E3%82%B7%E3%83%B3%E3%82%B0%E3%83%AB%E3%82%AF%E3%82%A9%E3%83%BC%E3%83%88+%E3%83%80%E3%83%96%E3%83%AB%E3%82%AF%E3%82%A9%E3%83%BC%E3%83%88&num=50
で、一番上にくるのがこれ
↓
ttp://php.s3.to/man/security.magicquotes.html
0540nobodyさん
2006/04/24(月) 16:49:20ID:???こっちだってw
http://php.s3.to/man/language.types.string.html
0541527
2006/04/24(月) 16:56:35ID:???$text = "<BR>" . $meg ;
も
$text = '<BR>' . $meg ; も、結果が同じなので、意識せずに使ってたので
・・と、いうか、
いま手を加えているプログラムBy前任者(転職)が、混ぜ混ぜに書かれている・
で、同じのかと..(・Θ・;)
行数数える 、substr_count($message,'\n'); でハマっちゃいました。
’を疑いもしなかった自分は厨だと気づいたしだいです。
今は大丈夫です。
腹減ったんで、飯くいに行きます。
0543nobodyさん
2006/04/24(月) 17:41:43ID:???0544nobodyさん
2006/04/24(月) 17:51:23ID:???いきなり正規表現なんて書いてるんじゃねーよ、と。
0545nobodyさん
2006/04/24(月) 18:05:13ID:???0546nobodyさん
2006/04/24(月) 21:27:56ID:???Shiftキーいちいち入力するの面倒くさいし
0547nobodyさん
2006/04/24(月) 21:45:34ID:QMCT6jyE?
0548nobodyさん
2006/04/24(月) 21:57:29ID:???0549527
2006/04/24(月) 23:51:26ID:???明日から nobody に戻ります。
これから帰宅と...
0550nobodyさん
2006/04/25(火) 06:46:22ID:???例えば 0.0.0.0-0.0.10.0
の様な書式を認識させる簡単な方法はないでしょうか?
0553sage
2006/04/25(火) 11:55:50ID:5pP/wi9o急に永久ループに陥りました。
プログラムの内容は永久ループ前と変更していないのですが
それまで使えていたものが急に永久ループになることはあるのでしょうか。
それとちなみに永久ループになった場合はApacheを再起動させれば復活するんですよね?
0554nobodyさん
2006/04/25(火) 11:57:11ID:???0556おっぱい
2006/04/25(火) 13:53:15ID:VQos3Exk0560nobodyさん
2006/04/25(火) 23:30:50ID:???phpeclipseでもあるのかな・・
0561nobodyさん
2006/04/25(火) 23:56:06ID:N5syBJe4gdで作った画像を変数に取り込んでおいて、ページ表示時に表示したい場所に表示する事は可能でしょうか?
例えばgdで作った画像を
$x = imagePng($image);
としておいて、あとで
$fp = fopen('読み込むテンプレートHTMLページ.html', 'r');
while ($x = fgets($fp, 1092)) {
$x = ereg_replace('%%pict%%', $x , mb_convert_encoding($x, 'SJIS','SJIS'));
echo $x;
}
みたいな感じで。
どなたかご存知の方。お教えください
0562nobodyさん
2006/04/25(火) 23:57:46ID:N5syBJe4$image = imagePng($image);
としておいて、あとで
$fp = fopen('読み込むテンプレートHTMLページ.html', 'r');
while ($x = fgets($fp, 1092)) {
$x = ereg_replace('%%pict%%', $image , mb_convert_encoding($x, 'SJIS','SJIS'));
echo $x;
}
って感じです。よろしくお願いいたします。
0563nobodyさん
2006/04/26(水) 00:58:35ID:???無理。
HTML上にあるのはIMGタグだけで画像本体はブラウザがまた個別に呼び出すから。
HTML表示の段階では画像データは使わない。
0565nobodyさん
2006/04/26(水) 07:32:44ID:???SJISからSJISにコンバートするのは何か理由があるのでしょうか
それと正規表現使ってないのにereg_replaceを使うのも何か理由が
0566nobodyさん
2006/04/26(水) 09:21:26ID:???0567nobodyさん
2006/04/26(水) 09:27:19ID:QZAjiKq9PHPを使ってメールを送信するプログラムを作成し、動作確認を行いました。
送信タイプをTEXTかHTMLか選べる項目があり、
HTMLを指定してHTMLファイルを選択して送信すると、そのHTMLファイルの内容でHTMLメールを送信します。
何事も問題なく送信・受信され、次の作業に入ろうとしたとき、ふとしたことに気づきました。
HTMLソースに「sample.php?num=40」という文字列があるのですが、
受信したときによくみてみたら「sample.php?num@」になっていました。
調べたところ、「@」のASCIIコードが「0x40」らしく、そのせいじゃないかと思ってます。
ほかの2バイト文字(漢字・ひらがな等)はちゃんと表示されています。
文字コードのあたりだとは思うのですが、化けているのがこのあたりだけなので、
どの文字コードにすればいいのかがわかりません。
何かいい対処法等がありましたら、教えてください。
0568nobodyさん
2006/04/26(水) 10:08:22ID:???文字コードっつーかBase64エンコーディングのミスかなんかじゃないの
HTMLメールをどうやって作って送信したのかも分からんのに何を回答しろと
0569nobodyさん
2006/04/26(水) 11:34:55ID:???この FAQ もなくなるのにね。
0571nobodyさん
2006/04/26(水) 13:21:28ID:???0572nobodyさん
2006/04/26(水) 13:51:12ID:???再びログインしてもログイン状態が保持されているサイトがあります。
あれってクッキーをしようしているんですよね?
最初のログイン時にクッキーを作成して、次のログイン時に自動的に
フォームに値が入る(もしくはログインの状態になる)ような。
セッションだとブラウザを閉じたら無効になりますし。。ただ、クッキーでどうやって
ずっとログイン状態にするのか、いまいち掴めません。
何かアドバイスでも良いので教えて下さい。
0573nobodyさん
2006/04/26(水) 14:00:57ID:???ログインフォーム(値無し)入力→ログイン→なんかする
二回目
ログインフォーム(一回目の値が入っている)入力→ログイン→なんかする
ということか?あんたの言い方だとログイン後にまたフォームがあるみたいだが?
0574nobodyさん
2006/04/26(水) 14:13:59ID:RN5imsk+これは思い込みだ。
0575573
2006/04/26(水) 14:17:42ID:???573が書いてくれているパターンです。
>>574
たまに残りますが、PCを再起動したりすると消えます。
今まで作っていたのは、ログインが正常に行われた時に$_SESSION['name']などで
ログイン状態を保持していました。しかし、再度アクセスした時に573さんのような状態や、
元からログイン済みの状態にしたいと思いまして。
0576572
2006/04/26(水) 14:18:39ID:???0578nobodyさん
2006/04/26(水) 14:51:14ID:???セッションIDをワンタイムクッキーで保持するか期日指定のクッキーで保持するかは
好き勝手できるんだから、ブラウザ閉じたらクッキーと共にセッションIDも消えるなんてのは
あくまでデフォルトの実装に従った場合だけ。ってことじゃない?
0579nobodyさん
2006/04/26(水) 15:19:27ID:???その情報が、セッションIDだろうが、ログインアカウントだろうが関係ない。
0581nobodyさん
2006/04/26(水) 15:22:29ID:???実装するのがスマートなんでしょうか?
phpからメールボックスに定期的に確認しにいって
反映させるとか?
メールなげたらなるべく早く反映してほしいのがユーザー心理ですし
定期的にしたら遅そうですよね。サーバ負荷も気になるし。
いい方法があったら教えてください
0582nobodyさん
2006/04/26(水) 15:24:16ID:???メール受信即反映ならMTAの設定で指定アカウントの受信メールのフォワード先に
PHPプログラムをパイプ渡しで設定しとくだけ。
これで1通ずつ自動的にプログラムが起動する。
0584nobodyさん
2006/04/27(木) 10:39:36ID:???ディレクトリ全体にログインページをかませたいのですが、どのような作りがあるのでしょうか?
BASIC認証のログインページ版があればいいのですが、それらしいのが見つかりませんでした。
mod_auth_script ... denyやpromptを返さなかった場合はどうなるのかわからん。。。
mod_auth_pgsql, mod_auth_mysql ,mod_auth_external ... う〜ん、違うかんじ
単純に全てphpを通せばいいのだから、mod_aliasのようなものなんでしょうか?
0585584
2006/04/27(木) 10:41:15ID:6Nv6WHAT0586nobodyさん
2006/04/27(木) 11:49:16ID:???BASIC認証のログインページ版 ってなんだ?
BASIC認証のアカウントならPHPから利用可能なわけだが?
ってか、BASIC認証自体PHPで行えばいい訳で・・・
0587584
2006/04/27(木) 12:34:25ID:6Nv6WHATレスありがとうございます。
通常のクライアントブラウザの提供するポップアップが嫌だったので
HTMLで整形したログインページをかませないものかな〜と考えておりました。
認証の必要なディレクトリ以下にある文書に直接リンクされていた場合、
必ず認証ページをかますようにするにはどうしたらいいのかなと。。。
0589nobodyさん
2006/04/27(木) 15:08:32ID:???0591584
2006/04/27(木) 20:50:30ID:???0592nobodyさん
2006/04/28(金) 07:29:06ID:/7GydfKtfsockopenを使用しようとしているのですが、なぜかリソースとして受け取れていないようなのです。
$rs = fsockopen('***', '80', $err, $errno, '10');
var_dump($sock);
とすると、bool(true)となっていて、
var_dump(get_resource_type($sock));
とすると、
Warning: get_resource_type(): supplied argument is not a valid stream resource in...
となっています。
どうして通信が出来ないのかいまいちよくわかりません。どなたか解る方がいましたら教えてください。。
0593nobodyさん
2006/04/28(金) 09:04:06ID:???0595nobodyさん
2006/04/28(金) 12:52:14ID:QM49d57BPHPでディレクトリ内のファイルを取得して配列に格納したいのですが、うまくいかないので質問させてください
ディレクトリの中にさらにディレクトリがあった場合の処理がどうしてもうまくいきません
スクリプトは書くと迷惑になるかもしれないので控えます
もしよろしければお教えください
0596nobodyさん
2006/04/28(金) 12:59:36ID:???> スクリプトは書くと迷惑になるかもしれないので控えます
そう思うのならくだらない質問スレに行きなさい。
自分がどこまでやったか、どこまで調べたかも示さずに「全部作って」とは何事か。
0597nobodyさん
2006/04/28(金) 13:06:30ID:???0598nobodyさん
2006/04/28(金) 13:41:24ID:???0599nobodyさん
2006/04/28(金) 17:53:59ID:???0600nobodyさん
2006/04/28(金) 18:23:34ID:RQqf08Pg好きなだけ続けなさい
0601nobodyさん
2006/04/28(金) 22:24:24ID:???hoge.php から foo.php にデータを引数として送り、foo.php 内で処理をしたいんだ。
何がいけないのかがさっぱりわからない。誰かボスケテ。
[hoge.php]
for($i=0;$i<7;$i++){
$ret=system("/usr/bin/php -f foo.php?id=".$i." > /dev/null &");
echo $ret;
}
[foo.php]
$array=array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
$id=$_GET['id']; ←Undefined Indexになる。$_SERVER自体にもうまく渡っていないみたい。
$echo $array[$id];
0602nobodyさん
2006/04/28(金) 22:34:19ID:???CLIで動作する場合引数の渡し方を変える。
systemのとこは
php foo.php ".$i
として
$id = $argv[1];
でどう?
0604nobodyさん
2006/04/28(金) 22:39:36ID:???-f オプションに指定したファイル名をパースし、 実行します。このスイッチはオプションで省略することもできます。
実行するスクリプトを指定するだけで充分です。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0605nobodyさん
2006/04/28(金) 22:42:42ID:???604はあってもなくても同じってことね。
それと時間があるみたいだからここ読んどけ。パラメータの渡し方な。
http://jp.php.net/manual/ja/features.commandline.php
例 43-1. コマンドラインから実行されることを意図したスクリプト(script.php)
0606nobodyさん
2006/04/28(金) 23:17:48ID:???なるほど 素直にスペースで区切って$argvで受け取ればいいのか・・・・
でも、確認してたときに
system("/usr/bin/php -f foo.php id=".$i." > /dev/null &");
としていたことがあったんだが、何も起きなかったような・・・
$argvで受け取れるってことは、$_SERVER['argv']にも値が入っているんだよね・・・?
それとも、/dev/nullが不要?
先方が指定してたSystem関数の引数がこうなってたから、
疑いもせずに使ってたけど・・・
0607nobodyさん
2006/04/28(金) 23:27:39ID:???$_SERVER["argv"]はarray
マニュアル読んどけ
http://jp.php.net/manual/ja/reserved.variables.php#reserved.variables.server
0608595
2006/04/29(土) 00:39:42ID:cDiLaugn1つ目のディレクトリはきちんともぐってくれるんですが、2,3となるともぐってくれない状況です
while($file = $dir_file[$i]->read()) {
if(!is_dir($dir_open ."/". $file) && $file != '.' && $file != '..') {
$file_w[] = $file;
}
0609nobodyさん
2006/04/29(土) 00:56:25ID:???再帰しないとメンドイ
マニュアルのパクリ
<?php
function getFiles($directory) {
if($dir = opendir($directory)) {
$tmp = Array();
while($file = readdir($dir)) {
if($file != "." && $file != ".." && $file[0] != '.') {
if(is_dir($directory . "/" . $file)) {
$tmp2 = getFiles($directory . "/" . $file);
if(is_array($tmp2)) {
$tmp = array_merge($tmp, $tmp2);
}
} else {
array_push($tmp, $file);
}
}
}
closedir($dir);
return $tmp;
}
}
print_r(getFiles('./'));
?>
0610609
2006/04/29(土) 00:59:57ID:???} else {
array_push($tmp, $file);
}
は
} else {
array_push($tmp, $directory . "/" . $file);
}
にしといて(ファイル名のみになってた)
0611nobodyさん
2006/04/29(土) 02:49:50ID:cDiLaugnご丁寧にありがとうございます。
無事動作いたしました
解決してすぐの質問になり申し訳ないのですが、
[function]について詳しく書かれているwebページをお教えしていただませんでしょうか?
マニュアルにはあまり詳しい説明がないようです
0612nobodyさん
2006/04/29(土) 03:20:14ID:???functionて「関数」のこと?マニュアルでわかんないと難しいかもね
http://e-words.jp/w/E996A2E695B0.html
http://jp.php.net/manual/ja/language.functions.php
phpのマニュアルの各関数の下にUser Contributed Notesというとこに有用なサンプルがあったりする。
ユーザ定義関数をかいつまんで説明すると何か処理をさせる単位。
function hoge(引数) { 命令群; } で一つのユーザ定義関数
<?php
//これはユーザ定義関数まずは何も実行されない
function hoge($a, $b) {
return $a * $b;
}
//hogeを呼ぶと上の関数が処理されてreturnで指定した値が返ってくる
echo hoge(2, 3); // 6
// echoは関数ではない(言語構造)
// printfとかstrlenとかは内部関数
?>
こんな感じ
0613nobodyさん
2006/04/29(土) 10:28:54ID:???をインストールしたのですが、テストページ (test.php) が表示できません。やったことは、
1) ports でインストール
# cd /usr/ports/www/mod_php4
# make install clean
2) php.ini のコピー・編集
# cp /usr/local/etc/php.ini-dist /usr/local/lib/php.ini
# vi /usr/local/lib/php.in
error_reporting = E_ALL & ~E_NOTICE
display_startup_errors = Off
display_errors = Off
log_errors = On
error_log = /var/log/php
;error_log = syslog
3) httpd.conf の編集
LoadModule php4_module libexec/libphp4.so
AddModule mod_php4.c
AddType application/x-httpd-php .php .phtml
4) apache の再起動
# apachectl restart
続く
0614613
2006/04/29(土) 10:33:27ID:???/public_html/ に test.phtml というファイルを用意しました。
<html><body>
<?
phpinfo();
?>
</body></html>
しかし、ブラウザでは何も表示されません。
/var/log/httpd-error には以下のようにありました。
[notice] Apache/1.3.33 (Unix) PHP/4.3.10 configured -- resuming normal operations
まだ情報不足かもしれませんが、よろしくお願いします。
0615613
2006/04/29(土) 10:35:05ID:???# vi /usr/local/lib/php.in
は php.ini の間違い (タイプミス) です。
0616nobodyさん
2006/04/29(土) 14:38:21ID:???その/public_htmlに
<html>
OK
</html>
という内容のtest.htmlを置いたとき、それはOKと表示されるのか?
0617nobodyさん
2006/04/29(土) 18:43:39ID:???if(なんたら) {
return;
}
というのを見たのですが、この場合 return; は何を返すのでしょうか?
0619nobodyさん
2006/04/29(土) 19:02:23ID:???0620nobodyさん
2006/04/29(土) 21:16:42ID:???apacheは正常に動いているので、OKは表示されます。
0621nobodyさん
2006/04/29(土) 21:32:58ID:???何が問題なんでしょうか??
あとみなさん、willcomって振り分けてます?
0623nobodyさん
2006/04/29(土) 21:48:36ID:???【モバイル】携帯電話向け開発について語るスレ
http://pc8.2ch.net/test/read.cgi/php/1144504375/
0625nobodyさん
2006/04/29(土) 22:29:55ID:???何も返してないので受け取り側はNULLを受け取る。
これを「NULLを返してる」と受け取りたいならそう受け取れば?
0626613
2006/04/30(日) 01:47:17ID:???おそらく何のオプションもつけずに configure してしまったのが
原因だと思います。
# cd /usr/ports/lang/php4
# make configure --with-apxs=/usr/local/sbin/apxs --with-mysql
# make install clean
で、apache の再起動ではだめだったんで、OS 自体を再起動させたら
普通に php のテストページがみれました。
ご迷惑おかけしました。m(__ __)m
0627nobodyさん
2006/04/30(日) 20:43:34ID:VjCRbLRm現在、以下のような想定をしています。
1:フォームのそれぞれの項目に対して値を与える
2:submitボタンを押すと、SESSION["price"]に値が入る
3:買い物カゴのページでその内容が表示(session_start();をする)
4:前に戻って再度2をする
5:SESSIONに値が追加される
6:購入処理(メールフォーム)
SESSIONに値を入れる辺りがどうも違う気がします。1つしかはいらないし・・。
0629nobodyさん
2006/05/01(月) 03:46:18ID:YO7NPy3zencodeURIComponentを使い
UTF-8にして送信
→phpでmb_convert_encodingを使い、SJISに変換して表示
というプログラムを書きましたが、
「_」を送ると「?」になってしまいます。
ちゃんと_として表示するためには
どこを直せばいいのでしょうか?
0630nobodyさん
2006/05/01(月) 03:47:09ID:???0631629
2006/05/01(月) 04:13:03ID:???>>630
_だけを記述してUTF-8で保存したテキストファイルも作れるので
あるようですね
0632nobodyさん
2006/05/01(月) 06:53:09ID:???EF BB BF E3 8D 89
らしい
0633nobodyさん
2006/05/01(月) 15:51:20ID:???0636nobodyさん
2006/05/01(月) 18:28:00ID:fXCmLkU00637nobodyさん
2006/05/01(月) 22:16:04ID:???開くと「取り消されたアクション」と出てしまいます。
他のページを見ると「ページを表示できません」と出ます。
何故でしょう?ちなみにウイルスソフトなどオフにしてもダメでした。
OSはXPです。
0638nobodyさん
2006/05/02(火) 10:14:22ID:???>>4
【簡易FAQ】
略
2. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
→ できません
のincludeについて下記URLのPHPマニュアルの「例 16-7. HTTP経由のinclude()」を
みるとできそうなこと書いてるんですよね。しかし実行すると変数がセットされずに
〜.phpが実行されるだけなんですよ。やはり無理と言うことなんでしょうか。
http://www.php.net/manual/ja/function.include.php
0639nobodyさん
2006/05/02(火) 10:17:34ID:HxbVnoAW関数を定義して、include/requireで読み込んで、関数を引数つきで呼び出すのが筋だろって思う
0640nobodyさん
2006/05/02(火) 10:20:03ID:???のようにHTTP経由 ("http://")でしてる?ローカルファイルではできないとかいてあるよ。
0641nobodyさん
2006/05/02(火) 12:10:48ID:???実現の仕方が多少違うけど、似たような事は出来るやり方は色々ある。
0642nobodyさん
2006/05/02(火) 14:28:24ID:CS7Fc+RR$_SERVER['DOCUMENT_ROOT']
をすると、借りているサーバのディレクトリパスになってしまいます
自分の借りているのは
http://www.example.jp/~hoge/
という感じでホームディレクトリ貰っています
調べたら、/usr/home/hogeなのですが
これをPHPで取得する方法はないでしょうか?
0644638
2006/05/02(火) 15:00:39ID:???他の方法を検討します。
0645nobodyさん
2006/05/02(火) 15:19:44ID:???ありがとうございます
/usr/home/hoge
この値がほしいです。
毎回これを書くと移動させるとややこしくなるので
なにか取得する方法があるのなら知りたいです。
0646nobodyさん
2006/05/02(火) 15:20:42ID:???お好きなものをどうぞ。
[1]print_r($_SERVER) の中から使えそうな奴を使う。
[2]__FILE__
[3]あと連想配列で色々返す関数あった気がするがど忘れした。
0649nobodyさん
2006/05/02(火) 17:17:48ID:???「自分のディレクトリパス」と「借りているサーバのディレクトリパス」の意味が分からん。
$_SERVER['DOCUMENT_ROOT']で何が返ってきてるんだ?
/usr/home/hogeってのはどうやって調べたんだ?
0650nobodyさん
2006/05/02(火) 17:28:50ID:???http://054.info/054_44749.zip.html
このヘルプなら見れると思う。パスはphp
0653nobodyさん
2006/05/02(火) 21:32:05ID:1egQQzgHPEAR::DBで、
$sql = "SELECT * FROM category WHERE id = '1'";
$rs = $db->query($sql);
は成功するのですが、
$sql = "UPDATE category SET hoge = 'huge' WHERE id = '2'";
$rs = $db->query($sql);
は、エラーは出ないもののUPDATEされません。
おなじSQL文をPHPMyAdminで実行させると、うまくいきます。
queryじゃない別の関数があるのかなとも思ったもののなさそうです。
こういう場合どうすればいいのでしょうか?
0654nobodyさん
2006/05/02(火) 22:21:39ID:???西暦から書式の異なる西暦(20060502→2006/05/02,2006/05/02→2006年5月2日など)
への変換などのクラスモジュールってありますか?
あったら教えて下さい
0656nobodyさん
2006/05/03(水) 00:16:50ID:???とか書いてますけど
strpos()にはバイナリセーフとかまったく書いてないのにバイナリ文字列使えます。
てことは最初からバイナリセーフだったってことですよね
最初から使える、今も使えないという関数の見分けはどうすればいいですか?
(使って調べるとかいうのは無しでお願いします)
0658653
2006/05/03(水) 01:51:04ID:RT4qdpx10659nobodyさん
2006/05/03(水) 04:20:12ID:???和暦変換は明治〜平成だけならPEAR::JpCalendarとかいうのがあるみたい。
ttp://pear.php.net/pepr/pepr-proposal-show.php?id=345
今年できたばっかで大して練られてないっぽい気もするが。
西暦書式変換は普通はstrtotime+dateの組み合わせでやっちゃうと思う。
0661nobodyさん
2006/05/03(水) 10:57:39ID:???西暦+660
0663nobodyさん
2006/05/03(水) 12:53:18ID:???正規表現じゃなくて、sscanf→strtotime→date or trftime
あたりがベターかと思う。
0665nobodyさん
2006/05/03(水) 16:26:01ID:???http://up.viploader.net/src/viploader23190.zip.html
はい。エロ広告が出てくるので注意
0666nobodyさん
2006/05/03(水) 17:02:04ID:???PHP Notice: Only variable references should be returned by reference in
なのですが、どういうことをしなければこのnoticeが出ないコーディングができますか?
0668nobodyさん
2006/05/03(水) 17:29:48ID:???参照返しの関数でnewで作成したオブジェクトを直接returnに指定している場合や
値を返しているのに参照代入にした場合に出る・・と思ふ
XOOPSなら
システム管理>一般設定(サイト一般設定)>一般設定>デバッグモードを有効にする>オフ
それ以外はパッチ当てるか、ソースでerror_reportingがあれば
error_reporting(E_ALL & ~E_NOTICE);とでもすれば
とりあえずエラーは消える
0669nobodyさん
2006/05/03(水) 17:32:58ID:???0670nobodyさん
2006/05/03(水) 17:39:22ID:???function & foo(){ return "value"; } ってのが典型的な例だな。
notice絡みでは、もう一つ
"Only variables should be assigned by reference" ってのもある。
違いが分っかるかなー?
0671666
2006/05/03(水) 17:49:27ID:???ありがとうございます。でもちょっと難しいですねぇ。
XOOPSの問題でなく自分でプログラムを組んで勉強中です。
参照返しの関数ってreturn $hoge の$hogeが参照って理解でいいですか?
それとも function &foo() ってことでしょうか?
もう一つの方も分からないです…
0672nobodyさん
2006/05/03(水) 18:46:58ID:???多分下だろう
0673666
2006/05/03(水) 19:45:40ID:???「参照返しの関数」の意味がわからなかったもので…
>>670さんの言う
"Only variables should be assigned by reference" の場合は、どうするべきなのですか?
0675666
2006/05/03(水) 21:23:50ID:???function & removeAttribute ($name) {
if (isset($this->attributes[$name]))
{
$value =& $this->attributes[$name];
unset($this->attributes[$name]);
return $value;
}
}
0676nobodyさん
2006/05/03(水) 21:53:24ID:???この場合だとissetでfalseになる場合はreturnを実行しないので何も返さないが、
関数は&付きなのでリファレンスを返すことになっていてNoticeになると思われ。
条件に該当しない場合でもダミーのデータのリファレンスを返しちゃえばNoticeは出なくなると思うが
それではたして誤動作しないかは、戻り値の受け取り側を確認しないと不明。
0677666
2006/05/03(水) 22:00:11ID:???$value =& NULL;
return $value;
でよろしいですか?
あと、function removeAttribute
と値渡しにするという解決方法があるかなぁと思ったのですが、まずいですか?
0678nobodyさん
2006/05/03(水) 22:21:42ID:???2.クラス内のメソッドのstaticはどういう利点があるの?
インスタンス作らないで呼べるってことくらいしかよくわからない。$this使えないし。
どういう場合に使い分けるものなの?
0679nobodyさん
2006/05/03(水) 22:33:51ID:???> Fixed "incorrect" reference passing for PHP 4.4.0 compatibility.
ってことで、それの修正がされている。
svnの導入が面倒かも知れないけど、まぁ他でも使うかも知れんしsvn入れて取得してみれ。
具体的にはこんな感じに修正されている。
function & removeAttribute ($name)
{
if (isset($this->attributes[$name]))
{
$value = $this->attributes[$name];
unset($this->attributes[$name]);
return $value;
}
$null = NULL;
return $null;
}
0680nobodyさん
2006/05/03(水) 22:35:50ID:???一個あれば充分
0682だいすけ
2006/05/04(木) 03:24:23ID:NNjSW7+f昔は余裕でできた、たんじゅんなメールフォームを、
一年ぶりにつくろうとしたら、動かなくなってしまいました。
ブラウザでは送信できているように見えるのですが、メールが到着しません。
なお、下記contactからmiyagawaへエイリアスしてるのですが、
ふつうのメーラでcontact@example.comへ送信したら、miyagawa@example.com へ転送されました。
以下コードです。
$body = "●お名前:{$_REQUEST['name']}\n";
$body .= "●メールアドレス:{$_REQUEST['email']}\n";
$body .= "●コメント:\n";
$body .= "{$_REQUEST["comment"]}\n";
$body .= "●UserAgent:{$_SERVER['HTTP_USER_AGENT']}";
$headers = 'From: webmaster@example.com';
mb_language("Japanese");
$rt = mb_send_mail("contact@example.com", "contact@example.com/お問い合わせ", $body, $headers);
print "***" . $rt . ***;
最終行の$rtは空白です(******)となってしまう。
解決方法おわかりの方、いらっしゃったら、教えていただければ幸いです。
なお、内部エンコーディングをutf8にしてるのですが、これは関係あるでしょうか?
0683nobodyさん
2006/05/04(木) 09:49:37ID:???あとは、MTAのログをみてみるとか。
0684nobodyさん
2006/05/04(木) 15:49:10ID:???--- var.php
<?php
$home_dir = "/home";
$root_dir = "/";
?>
のようなファイルをWebサイト上に置いておき
--- index.php
<?php include "http://www.example.jp/var.php"; ?>
<?php echo $home_dir; ?>
のようにして、読み込んで利用したいのですが
echoがうまく表示されません、こういう使い方はできないのでしょうか?
0685nobodyさん
2006/05/04(木) 16:12:32ID:???allow_url_fopen off とか?
よれよりネットからとってこないでローカルから取れ
0686684
2006/05/04(木) 16:21:30ID:???allow_url_fopenはonにしています
--- var.php
<?php
$home_dir = "/home";
$root_dir = "/";
echo $home_dir;
?>
とやったとき、
--- index.php
<?php include "http://www.example.jp/var.php"; ?>
とすると、$home_dirは表示されます。
0687nobodyさん
2006/05/04(木) 16:38:55ID:???0688nobodyさん
2006/05/04(木) 18:09:57ID:???リモートファイルはApacheでPHPとして実行された後のが呼び出されてるから
多分そのincludeの中身は空っぽ。
.incなり.txtなり、中身をそのまま表示する拡張子にしとけばおっけー
0689nobodyさん
2006/05/04(木) 19:53:50ID:???$limit = strpos(getenv("QUERY_STRING"), "/");
}
もうちょっとスマートに書く方法無い?
0690nobodyさん
2006/05/04(木) 19:58:03ID:???if(($l = strpos(getenv("QUERY_STRING"), "/")) !== False) $limit = $l;
0691nobodyさん
2006/05/04(木) 20:00:16ID:???list($limit) = explode('/', getenv('QUERY_STRING'), 2);
0692691
2006/05/04(木) 20:01:27ID:???忘れて。
0693682
2006/05/04(木) 23:34:23ID:NNjSW7+fひょっとして的なヒントでもいいので。。。
よろしくお願いします。
0694nobodyさん
2006/05/04(木) 23:51:44ID:???とりあえずそのスクリプト置いてるサーバで
mail("contact@example.com", "test", "test");
して届くかやってみたら
0696682
2006/05/05(金) 01:20:45ID:+fwaxrpTすいません。>>683をみすごしてました。
エラー表示はonにしても、エラー表示はウェブブラウザにでませんでした。
で、/var/log/maillogをみたら、
May 5 01:10:04 www sendmail[5775]: NOQUEUE: SYSERR(www): can not chdir(/var/spool/clientmqueue/): Permission denied
と言われました。
で、/var/spool/clientmqueue/ のパーミッションを755にしたら
May 5 01:18:37 www sendmail[8616]: k44GIbxh008616: SYSERR(www): queueup: cannot create queue file ./qfk44GIbxh008616, euid=80, fd=-1, fp=0x0: Permission denied
と言われてしまいました。sendmailの知識は詳しくないのですが、
このキューが入るのはどこのディレクトリで、パーミッションはいくつにすればよいのでしょうか?
0697682
2006/05/05(金) 01:57:05ID:???パーミッションについて、
/var/spool/clientmqueue/ については、
dangerous permissions=40755 on queue directory /var/spool/clientmqueue/
と言われてしまいました。
つけたしまでにて
0698nobodyさん
2006/05/05(金) 02:06:18ID:???SendmailのInstallation and Operation Guide に、
The directory /var/spool/clientmqueue should be created to hold the mail queue.
This directory should be mode 0770 and owned by user smmsp, group smmsp.
とあるよ。オーナーも確認が必要
0699682
2006/05/05(金) 02:18:59ID:???ありがとうございます。
>>698さんんの書き込みをもとに、
#chown smmsp:smmsp /var/spool/clientmqueue
# chmod 770 /var/spool/clientmqueue
# chmod 700 /var/spool/mqueue
したらエラーがMTAでなくなり、メールも正常にとどきました。
ありがとうございました。
0700nobodyさん
2006/05/05(金) 19:40:53ID:???これはどういう感じで作っていったらいいんですか?
皆目検討がつきません
0701nobodyさん
2006/05/05(金) 19:50:38ID:???kakasiやchasenで単語に切り分け、インデックス化しておき、抽出はインデックスからする。
…って、namazuそのものじゃん。
0702nobodyさん
2006/05/05(金) 23:39:40ID:???「形態素解析」っつー考え方があって、その処理によって日本語を単語分解する。
ttp://ja.wikipedia.org/wiki/%E5%BD%A2%E6%85%8B%E7%B4%A0%E8%A7%A3%E6%9E%90
ttp://www.unixuser.org/~euske/doc/nlpintro/
分解さえできればあとはキーワードごとにカウントするだけでしょ。
問題はこの形態素解析で、日本語の解析は真面目にやると極めて難しいよ。
この辺は何十年も昔から研究が続けられてる分野なので、その辺を勉強してみるとよろし。
具体的な実装例としては「自然言語による検索」や「日本語構文を意識した漢字変換」など。
0703nobodyさん
2006/05/06(土) 02:06:14ID:???0704nobodyさん
2006/05/06(土) 02:55:08ID:???0705nobodyさん
2006/05/06(土) 16:15:13ID:Lx+KF6I8いまswitchで条件分岐をするものを書いてます。
単純に
switch($_POST['type']) {
case '1' :
/*処理*/
break;
case '2' :
/*処理*/
break;
default :
/*処理*/
break;
}
といったものですが、どうやらcase 2 :に何か問題があるのか、このファイルを実行すると、
ブラウザいっぱいに意味のない文字列が並んでしまいます。
この現象は「/*case 2 : ・・・・ break;*/」といった感じにcase 2の部分を
コメントアウトしてもなおらず、完全に削除するとなおります。
どういう事なんでしょうか??
どなたか思い当たる事がある方いらっしゃったら、教えてください。
ちなみにphp-5.1.4を使用してます。5.1.4のバグでしょうか??
0706nobodyさん
2006/05/06(土) 16:53:58ID:???0708nobodyさん
2006/05/06(土) 17:48:02ID:???てかPDO mysqlのドライバもロード出来なくなった。こっちはちゃんとインストールされているのに・・・
0709nobodyさん
2006/05/06(土) 19:37:27ID:o9+nMx/2中身よりも自分としては/*〜*/でコメントアウトしてもおかしな動き(意味不明な文字群を表示する)
ことに驚きを覚えてます。
なんでコメントアウトしてもそいつが影響するの?
そしてその部分を削除すると、なぜ正常に動くの?
こういったケースって、皆さん経験ありますか?
0710nobodyさん
2006/05/06(土) 19:40:03ID:???0712nobodyさん
2006/05/06(土) 19:47:44ID:???バカかお前。
「中身よりも〜」などと自分で勝手に決め付けるのなら、ここで質問なんかするなボケ。
お前が勘違いしてるだけかもしれないだろう。
必要なソースを全部見なきゃこっちは分からん。エスパーじゃないんだから。
0713nobodyさん
2006/05/06(土) 19:58:09ID:???> 意味不明な文字群
ってのは具体的になんだ?ちょっとコピペして見せてみ。
実はNoticeエラーの類だったりしないか?
0714nobodyさん
2006/05/06(土) 20:36:16ID:CLVxxZvdarray(1 => 'a' => 'b', 2 => 'c' => 'd');
という配列が入っています。
foreachで$arrを回して値を変数に代入しているのですが、先頭の数字(1と2)が必要ないため
スキップさせたいのですが、何かよい方法はありませんか?
現在はforeach一回で第二引数までしか取得できないため、foreachで2回処理しています。
よろしくお願いします。
0716nobodyさん
2006/05/06(土) 20:40:09ID:o9+nMx/2こんなやつ
????唯???正效????????湯散???瑣??条?獵?桃??橢?????????湯散?潮???橢??????楮却慥?????植据
??潟据???????瑣??慳?慫敢?畴???歡?慨?????????湯散?潮???潯?潮??敷?牡??歡健灯???????慴??
????瑳牡????花菌腹???誉鋺???卓???????????欧?慳????卓??????????????????湯散?牡档???????
なんて感じで画面いっぱいにでる。
0717nobodyさん
2006/05/06(土) 20:51:38ID:???お前は適切な質問の仕方も知らなければマナーも知らない、
おまけにエンコードの基礎知識すら知らないのか。
精子から出直せ。
0718nobodyさん
2006/05/06(土) 21:05:58ID:???どんな形式の配列かさっぱり分からないので
$arrをvar_dumpした結果を書け。
あとforeachで取得できる「第二引数」って何のこと?
0719nobodyさん
2006/05/06(土) 21:06:44ID:???1度PHPをアンインストールしてインストールし直してみれば?
ライブラリファイルのどれかが壊れてたりするんじゃないのか。
0720nobodyさん
2006/05/06(土) 21:09:11ID:o9+nMx/2エンコードぐらいしってる。
他のページは普通に動く(このページも、case 2:の部分を完全に削除すれば普通に動く)
ただ、コメントアウトしただけだと、上記のような文字化けしたような文字で、画面がいっぱいになる。
全くもって始めての出来事。
>>717は、こんな事なったことあるの??
0721nobodyさん
2006/05/06(土) 21:14:41ID:???0722nobodyさん
2006/05/06(土) 21:21:35ID:???内緒のcase 2:にどんな謎があるのかも、>>716状態で何が困るのかもわからない。
0723nobodyさん
2006/05/06(土) 21:45:15ID:???コード晒せと言われてて晒さずにあーでもねーこーでもねー..おまえの質問の仕方最低だよ
まぁ別に解決しなくてもみんな不幸にはならないわけだが
0724nobodyさん
2006/05/06(土) 21:51:59ID:/tb17VG7「鏡の国」の2ch風掲示板のCGIを、
自分のレンタルサーバーにて利用させてもらおうと検討している者ですが、
投稿者のログ(投稿者のip、投稿日時、内容等を記録したもの)などは、
投稿自体が削除されても残るのでしょうか?
初歩的な質問で申し訳ありませんが、
知ってる方がいらっしゃれば、よろしくお願いいたします。
0726nobodyさん
2006/05/06(土) 21:55:59ID:???0728nobodyさん
2006/05/06(土) 22:26:44ID:eYJY8dWgincludeしまくってるからコードさらしてもしょうがないような気がしたもので・・・
とりあえず、以下のようなコード
case '2' :
//計算実施
include_once('nomade/object/keisan/answerObj.php');
$Aobj = new answerObj();
$Aobj -> qArr[0]['netuDendouRitu']['amt'] = $_POST['naibuNetuDentaturitu'];
if($_POST['naibuNetuDentaturituUnit'] == 'W/m2k'){
$Aobj -> qArr[0]['netuDendouRitu']['unit'] = 'W/mK';
} else {
$Aobj -> qArr[0]['netuDendouRitu']['unit'] = 'kcal/h・m・℃';
}
$Aobj -> qArr[0]['zaiAtu']['amt'] = '1';
$Aobj -> qArr[0]['zaiAtu']['unit'] = 'm';
$Aobj -> qArr[0]['netuDendouRitu']['unit'] = $_POST['naibuOndoUnit'];
//本文が長過ぎるみたいなので、一部省略
include_once('nomade/tool/keisan/netu/ondoPart.php');
$calcObj = new ondoPart();
$calcObj -> doKeisan($Aobj);
$Aobj -> printCalc('ondoPart0');
break;
これみてもわかんないでしょ。
0729nobodyさん
2006/05/06(土) 22:33:00ID:???>これみてもわかんないでしょ。
だったら聞くなよ。ソース晒せって言ってる人がいる、晒してもわからないでしょ
とあなたはほざく。なんか噛み合って無い
includeで何やってるかが問題だと思うのだがそういうことは考えないのね。
デバッグの手法も自分なりに考えるのが基本だと思うのだけどそれすらできないのね。
0731nobodyさん
2006/05/06(土) 22:47:59ID:???> $Aobj -> qArr[0]['netuDendouRitu']['unit'] = 'kcal/h・m・℃';
ソース中に「・」なんて半角カナ文字が入ってるみたいだけど、
それとphp.iniのインターナルエンコーディングがかみ合ってないとか?
0732nobodyさん
2006/05/06(土) 22:48:49ID:???0735nobodyさん
2006/05/06(土) 23:16:31ID:???けど、優しさが罪ってこともあるんだ。
0736nobodyさん
2006/05/06(土) 23:27:00ID:PirDF9V7その通りでした。
しかもよそからコピペしたため・だけUTF-8だったみたい。
(スクリプトはすべてsjisで書いてるのに)
ありがとう。
でも合ってないエンコードを一文字書いただけであんな画面になっちゃうんですね。
勉強になりました。
エラーメッセージにはなれてたけど、あんな文字化けだらけの画面は衝撃的でした。
>>734さん
ブラウザのエンコード換えても分けわかんない文字列の羅列でした。(ご報告まで)
お騒がせいたしました。
0737nobodyさん
2006/05/06(土) 23:41:23ID:???コメントアウトしてもダメって言ってたからincludeしてるファイルは関係ないと思ってたんだけど…
(変な文字コードが入ってたために、コメントもそこで崩れる状態になってたんだろうね)
インターナルとかみ合わない文字を入れてるとそこから文法解析が狂うから何が起きるか分からんよ。
最後にこれだけ
> これみてもわかんないでしょ。
思い込みはデバッグの大敵。
全体を削除しないとダメだったのなら、さらに1行ずつ減らしていくなど
どの部分がダメなのかを徹底的に洗い直すようじゃなきゃいかんかと。
0738nobodyさん
2006/05/07(日) 00:30:57ID:MBZ5M05Lそうですね。ある程度経験を積んでいるというおごり(とはいえ2年程度かな?)で、
勝手に問題を絞り込んでしまっていて、その絞り込んだ中に問題が潜んでなくってうろたえたみたいです。
勉強させていただきました。ありがとう。
0739nobodyさん
2006/05/07(日) 22:49:12ID:???どうすれば利用できますか?
functon outside() {
$model->init();
$hoge = 'hoge';
function inside() {
global $hoge; // これはできなかった
global $model; // できなかった
$model->init(); // これがしたい
$fuga = $hoge; // ここで$hogeを使いたい
}
}
0740nobodyさん
2006/05/07(日) 22:58:31ID:???0741nobodyさん
2006/05/07(日) 23:09:53ID:???直接html内に<?php>〜<?>を使ってphpを動作させることには成功したんですが
例えば掲示板を設置する場合、外部の掲示板スクリプトファイルをrequireで読み込めばいいんですよね?
その場合その掲示板スクリプトファイルはどのフォルダに置けばいいのでしょうか?apacheのフォルダ?phpフォルダ?
当たり前のことだろうけど、全く分かりません。適当に教えてもらえるとありがたいです。
あるいは、そういった一連の流れが書かれてある解説サイトを教えていただけると助かります。
0743nobodyさん
2006/05/07(日) 23:29:15ID:???「中のファンクション」なんてものは無いし。それは「中で定義してる」だけ。
だからこれならできるよ。
functon outside() {
global $hoge; //最初から全部
global $model; //globalにしちゃえばいいのよ
$model->init();
$hoge = 'hoge';
function inside() {
global $hoge; // これはできなかった
global $model; // できなかった
$model->init(); // これがしたい
$fuga = $hoge; // ここで$hogeを使いたい
}
}
0744nobodyさん
2006/05/07(日) 23:30:41ID:???これってクラスのメソッドなの?だったらextendすれば?
「いじれない関数」の意味がよく分からん。
容易にいじれるようにするためのオブジェクト指向じゃないのか。
0745nobodyさん
2006/05/07(日) 23:31:51ID:???> 例えば掲示板を設置する場合、外部の掲示板スクリプトファイルをrequireで読み込めばいいんですよね?
ちがう。
普通にその掲示板にリンクを張ってやるだけ。
0746nobodyさん
2006/05/08(月) 04:03:57ID:???お前、自分の発言を読み返して反省しろ&謝罪しろよ。
さんざん能書き垂れといて、結局お前の思い込み勘違いが原因じゃないか。
みんなの予想通りだ。
しかもそのソースは「よそからコピペ」って・・・、お前全て他力本願だな。
0747nobodyさん
2006/05/08(月) 06:08:15ID:???0748みかん
2006/05/08(月) 18:27:35ID:kXy5iJS4入力に応じてファイルの中身を読み込み、表示するCGIを作成しています。
ファイルの読み込みには file_get_contents を用いており、
読み込むファイルはドキュメントルートより上のディレクトリに置きたいと考えています。
ファイル置き場
/tmp/file/hoge.txt
プログラム(test.php)
<?php
$txt = file_get_contents("/tmp/file/hoge.txt");
var_dump($txt);
?>
この場合、コンソールから
# php test.php
とした場合にはhoge.txtの内容が表示されるのですが、
CGIとしてブラウザからアクセスした場合には
bool(false)
とだけ表示され、ファイルオープンに失敗しているようです。
hoge.txtをドキュメントルート以下に設置した場合は読み込むことができましたが、できればドキュメントルート下には置きたくないのです。
どのようにしたら、/tmp/file/などに置いたファイルをCGIから読み込めるように出来るのでしょうか。
0749nobodyさん
2006/05/08(月) 18:32:39ID:???0750nobodyさん
2006/05/08(月) 18:38:12ID:???0752みかん
2006/05/08(月) 19:12:52ID:kXy5iJS4ファイルの権限
-rw-r--r-- 1 mikan
CGIの権限
-rw-r--r-- 1 mikan
こんな感じに、共に自分の所有になっています。
>750
safe_modeはOff, open_basedirはコメントアウトしてあります。
>751
やはりそうなのでしょうか。
自分がルートのマシンなので、設定さえ適切なら可能なのかと思って質問させて頂きました。
ドキュメントルート下に設置して、そちらをブラウザからは見られないように制限をかける方向で進めてみようかと思います。
皆様、回答ありがとうございました。
0754nobodyさん
2006/05/08(月) 20:34:24ID:8RW8wwlkたとえばPEAR::DBならhttp://pear.php.net/package/DB
からまるごとダウンロードしてincludeするだけで
(つまりコンパイルとかする必要なく)
いちいちSSH接続する必要なく、共有サーバでも使えますか?
0755nobodyさん
2006/05/08(月) 20:46:56ID:w88YtdTU例えば
<?php
header('Location: http://~~~');
sleep (60);
system('touch /tmp/test');
?>
というスクリプトがあったとすると、
60秒ブラウザは待機してしまいます。
先にリダイレクトを行わせておいて、
サーバー側で処理を続行するには
どうすればよいのでしょうか?
時間のかかる処理があるのですが、
特にエラー等を表示させる必要がないため
ブラウザにリダイレクトさせておいておきたいのです。
よろしくお願いします。
0756nobodyさん
2006/05/08(月) 21:18:36ID:???試してねーけど
<?php
system('./touch.php /tmp/test > /dev/null &');
header('Location: http://~~~');
exit;
?>
にして
[touch.php]
<?php
sleep(60);
system("touch $argv[1]");
?>
とかしたらできねーか?
ひょっとしたら
system('./touch.php /tmp/test > /dev/null &');
ここは標準エラー出力も/dev/nullに捨てるようにしないとダメかもだが。
0757755
2006/05/08(月) 21:42:07ID:w88YtdTU使用するプログラムの内部なのですが、
POSTされてきたデータに変更を加えてPostgresSQLに保存ということを行っています。
なので、なるべく1スクリプトで済ませてしまいたいのですが、無理でしょうか。。
ob_start()とprintを組み合わせてみたりもしてみたのですが、全く対策にならず、、
0758nobodyさん
2006/05/08(月) 22:53:51ID:???基本的には「標準出力を閉じた」バックグラウンドプロセスを走らせた状態にして
親プログラムは即座に終了、という形を取らないと無理じゃないかと思う。
保守性を求めてスクリプトを1本にしたいだけだったら、両プログラムの機能を
同じincludeファイルの中に関数で定義しといてそれぞれで別々の部分を呼ぶとか、
あるいはsystemでの実行を自分自身をパラメータ付きで呼ぶようにして
パラメータ付加時はバックグラウンド処理を実行するよう切り替えるとか、
いくらでも手はあるんじゃない?
0759nobodyさん
2006/05/09(火) 02:41:56ID:???include 'Zend.php';
Zend::loadClass('Zend_Controller_Front');
$cnt = Zend_Controller_Front::getInstance();
$cnt->setControllerDirectory(' [Zend Frameworkのパス]/controllers');
$cnt->dispatch();
?>
とかにある :: ってなに?
0760nobodyさん
2006/05/09(火) 02:43:59ID:???なのね
0762759
2006/05/09(火) 03:03:39ID:???もうちょっと触ってみて覚えなあかんね
0763nobodyさん
2006/05/09(火) 08:40:20ID:???なんかいちいち<input type="text">で送るのめんどくさくて
一つのクラスにまとめて送信しちゃおうと思ったんですが、
どうもやり方がわからなくて。
0764nobodyさん
2006/05/09(火) 09:12:54ID:???あのね。POSTはHTTPの話なの。で、オブジェクトはPHPの話なの。
なんかフレームワークとか使わないと無理。
0765nobodyさん
2006/05/09(火) 09:16:36ID:???0766nobodyさん
2006/05/09(火) 09:46:19ID:???今はserialize()して、ファイルをアップロードして、
次のページでそのファイルをunserialize()するって
作業をしてるんですが、ファイルを作るのがどうも
ひっかかるんですよね。
http://jp.php.net/manual/ja/language.oop.serialization.php
0767763
2006/05/09(火) 09:47:59ID:???0771nobodyさん
2006/05/09(火) 11:36:45ID:???文章中の特定の語句を、「str_replace」を使って別の語句に一括置換する際、
htmlタグ内部の語句についてはエスケープさせたいのですがうまくいきません。
[文章例]
<a href="ttp://abc.def/" title="リンク先">某サイト</a>へリンクします。
上記例では、「 title="リンク先">」の「リンク」については置換せずに、
「リンクします。」の「リンク」だけを置換したいのです。
どなたかヒントを含め、何か教えていただけると助かります。
0772766
2006/05/09(火) 11:50:43ID:???マジ初心者ですみません。単にサーバ上でファイルに書き込むだけです。
>>769
serializeした文字列をPOSTしたあと、次のページで
http://jp.php.net/manual/ja/language.oop.serialization.php
の例の
$s = implode("", @file("store"));
$a = unserialize($s);
に対応する部分が書けず、仕方なく例と同じ手段をとってます。
>>770
まだセッションについて全く理解してないので調べてみます。
まさかこんなにレスが付くと思いませんでした。感謝です。
0773nobodyさん
2006/05/09(火) 12:15:28ID:???str_replaceでやるのは難しいんじゃないかい。
preg_replaceとかで正規表現駆使せんと。
0774nobodyさん
2006/05/09(火) 12:17:38ID:???普通にやりゃいいだけの話なのに自分が未熟だからコードが書けないだけで
> ファイルを作るのがどうもひっかかるんですよね。
とか言われても回答に窮するだけだと思うんだが。
0775771
2006/05/09(火) 14:16:59ID:???やはりそうですか。
少し考えたのですが、htmlタグをエスケープするのが難しいです。
置換前の語句を\wordとして、次のようなコードなどを含め何個か試したけど全滅。orz
$text = preg_replace('/^(<\/?)('.$word.')^([^>]*>)/e', '<a href="/link.php">\\2</a>', $text);
正規表現の才能が欲しいです。。
0776nobodyさん
2006/05/09(火) 14:48:06ID:hIUILZCE、そのようなことは可能でしょうか?
ファイルはコピーできたのですが、ディレクトリのコピーができません
0780nobodyさん
2006/05/09(火) 15:51:24ID:???>>754って日本語が変なんだもん。全部で1つの文になってて、
「共有サーバとかで、〜(中略)〜共有サーバでも使えますか?」
もうちょっと他人にわかるように書きなさいな。
0781nobodyさん
2006/05/09(火) 15:53:44ID:???まあ意地悪してやんなさんな。
大体わかるでしょ(間違ってたらしょんぼりだけど)
>>779
正しく設置、includeされていればいけるはず。
というか、なんで試さないの?
無料のところでもいいから試して見れば早いかと。
0783nobodyさん
2006/05/09(火) 18:32:44ID:???0785nobodyさん
2006/05/09(火) 22:59:03ID:???0786nobodyさん
2006/05/09(火) 23:31:47ID:???お前、質問する態度としては最低の部類に入るクチだな。
そういう態度ではなおさら答える気にもならん。
情報はタダで手に入るのが当然だ、と思ってる感じが気に入らない。
しかも自分でもロクに検索すらしてないようだし。
0787nobodyさん
2006/05/09(火) 23:45:55ID:???基本的には該当文字の両脇が>と<で挟まれてたらマッチ対象になると考えればいい
preg_replace("/(>[^<]*)$from([^>]*<)/", '$1'.$to.'$2', $text);
>>784
>745で答え貰ってるだろ
0788nobodyさん
2006/05/09(火) 23:51:41ID:???まず SELECT COUNT(*)して全体のレコード数を取得して
その値に+1したものをPRIMARYにしているのですが、
beginTransaction();
した後にはクエリーを1回しか発行できないようです。
beginTransaction();の前にPRIMARYを求めるのが普通なのでしょうか
0789nobodyさん
2006/05/10(水) 00:35:21ID:WURMeF5pという設定がphp.iniありますが、これはどうことをするためのものなんでしょうか?
0790nobodyさん
2006/05/10(水) 00:37:12ID:???>beginTransaction();
>した後にはクエリーを1回しか発行できないようです。
どうして
0791nobodyさん
2006/05/10(水) 00:38:21ID:???ttp://www.php.net/manual/ja/ref.mbstring.phpより
>シングルバイト対応の関数を mbstring 関数の対応する関数でオーバーロード (置換)します。
ドキュメントくらい読もうよ…
0794nobodyさん
2006/05/10(水) 01:23:33ID:EkcMnrpqxamppをインストーラーで全てインストールしました。
apacheを起動して
http://localhost/xampp/
や
http://localhost/
にも接続してみましたがxamppのコントロールパネルなどに接続できず、
テスト用のphpにもひょうじされません。
これはどのような原因が考えられますか?よろしくご指導ください。
環境はXP・IE6です。
0795nobodyさん
2006/05/10(水) 01:34:01ID:???PRIMARYキーとなる$idをSQL発行で取得。
そのごprepareを受け付けてくれないのです。
>>792
mysqlに依存しているので、できればauto_incrementは使いたくないですね。
0796794
2006/05/10(水) 01:49:33ID:EkcMnrpqとでてしまいます。
わかりにくい説明でもうしわけありませんが、よろしくお願いします。
0797nobodyさん
2006/05/10(水) 03:15:21ID:hRdDy7dia.phpとb.phpで共通利用する関数などは
common.php等に書いておいてincludeするものだと思いますが、
複数の共通関数があるとincludeしたものの使用しない関数もあると思います。
高アクセス条件下においてはメモリの消費も馬鹿には出来ません。
極論を言えば関数毎にファイルを分ければ良いのでしょうが、
それもなんだかめんどくさいので、何か良い知恵があれば
教えてください。
0798nobodyさん
2006/05/10(水) 03:37:14ID:???とりあえずそういう挙動は単にhttpdが動いてない時のもの
/logs/error.logに何か書いてあるかも
>>797
ベンチマークの取り方を覚えるといいんじゃないかな
0799nobodyさん
2006/05/10(水) 05:26:20ID:???Winのスタートメニューのアパッチに「Monitor Apache Servers」ってのもあるよ
アパッチがきちんと起動出来ているかこれで確認できる。
0801nobodyさん
2006/05/10(水) 09:19:05ID:???共通関数を別ファイル(ライブラリ化)するメリットは、メモリ消費云々よりも後々のメンテや生産性の向上の為であると思うけどね。
最近の鯖スペックなら多少の事なら誤差の範囲。
決め付けるわけではないが、そういう細かい事にこだわる人に限って、肝心な部分が見えてない人が多いと最近特に感じる。
0802nobodyさん
2006/05/10(水) 11:08:25ID:???コードキャッシュ型のアクセラレーターを使うのがいいんじゃないかな。
でもまず、commonとかに全部押し込まないで機能カテゴリー別にファイル分けれ、って思うけど。
まさか10個やそこらの関数でメモリ消費云々言うとも思えないし。
0803nobodyさん
2006/05/10(水) 12:34:18ID:ADlLU0Cj0805803
2006/05/10(水) 13:47:10ID:ADlLU0Cjレスありがとうございます。
関数ごとにベンチマークをとる場合、全ての関数に時間を測るコードを埋め込むしかないでしょうか?
0807nobodyさん
2006/05/10(水) 19:28:55ID:???xdebugでプロファイルすればー
ttp://www.glamenv-septzen.net/pukiwiki/index.php?PHP%2Fxdebug
0808794
2006/05/10(水) 21:44:19ID:qX9rDLEhありがとうございます。
ApacheMonitor.exeを立ち上げましたが、
running all apache services
と表示されて特に問題はなさそうです。
>>798
ありがとうございます。
ログですが、かなり溜まっているようです。77kBありました。
下の10行ほどを抜き出してみます。
C:\Program Files\xampp\apache\logsから
PHP Warning: Function registration failed - duplicate name - openssl_pkcs7_encrypt in Unknown on line 0
PHP Warning: Function registration failed - duplicate name - openssl_private_encrypt in Unknown on line 0
PHP Warning: Function registration failed - duplicate name - openssl_private_decrypt in Unknown on line 0
PHP Warning: Function registration failed - duplicate name - openssl_public_encrypt in Unknown on line 0
PHP Warning: Function registration failed - duplicate name - openssl_public_decrypt in Unknown on line 0
PHP Warning: Function registration failed - duplicate name - openssl_error_string in Unknown on line 0
PHP Warning: openssl: Unable to register functions, unable to load in Unknown on line 0
[Wed May 10 21:39:24 2006] [notice] Child 3656: Child process is running
[Wed May 10 21:39:24 2006] [notice] Child 3656: Acquired the start mutex.
[Wed May 10 21:39:24 2006] [notice] Child 3656: Starting 250 worker threads.
[Wed May 10 21:39:25 2006] [notice] Child 3656: Starting thread to listen on port 80.
[Wed May 10 21:39:25 2006] [notice] Child 3656: Starting thread to listen on port 443.
こんなエラーが出ているのですが、原因はなんなのでしょうか?
ご存知のかたいらっしゃいましたらどうかよろしくお願いします。
0809spam業者のアドレス
2006/05/10(水) 23:28:55ID:???apacheスレ池
0810nobodyさん
2006/05/11(木) 00:25:10ID:???0811nobodyさん
2006/05/11(木) 01:26:06ID:???0812nobodyさん
2006/05/11(木) 01:53:39ID:???htmlspecialcharをしてから格納をしたほうがいいですか?
それとも
DBから引き出した後にhtmlspecialcharしたほうがいいですか
0813nobodyさん
2006/05/11(木) 02:17:25ID:???お、お前・・・・・・・・。
その関数の働きや、それを使う意味を全く理解してないからこその質問だな。
まず一回氏んでこい。そしてとりあえず「サイテロ」でも読んでこい。
0815nobodyさん
2006/05/11(木) 08:47:25ID:Nnnm8SbYこれで一応動くのですが、カッコ悪いので。
使い方としては、ファイルの一レコード目にキーを書いておいて、
2レコード目以下の条件にあったものを連想配列でアクセスする
といったことを考えています。
$keys = array("id","name");
$value = array("99999","小泉純一郎",);
//-----
$count = count($keys);
for($i = 0;$i < $count;$i++){
$rensou [$keys[$i]] = $value[$i];
}
//-----
0816nobodyさん
2006/05/11(木) 08:53:26ID:???ずばりarray_combine。
つーかファイルから読み込んでる時点で$rensouにちゃんと入れてけばいいんでないの?
0817nobodyさん
2006/05/11(木) 09:21:14ID:???後者が良い。
>>813
初心者の内は誰もが疑問に思う事だと思うが、addslashes()とかと勘違いしてない?
0818nobodyさん
2006/05/11(木) 09:26:46ID:???でも使っているのは4.xだ。
ファイルで読み込むときは$rensouに直接放り込んでます。
サンクスです。
0819nobodyさん
2006/05/11(木) 10:23:28ID:???>>812じゃないけどDB格納後の方が良いメリットってある?
DB格納前にサニタイズしておけば
表示側でのサニタイズのコード入れてなくていいから
それはそれで楽でセキュアなような気もしなくもないんだけど
(HTMLコード自体を入れるカラムとは例外として)
0820nobodyさん
2006/05/11(木) 10:38:15ID:???0821nobodyさん
2006/05/11(木) 10:56:38ID:???>>817じゃないが、うちもそのままサニタイズして表示するようなものの場合は、基本的に処理後にDBに記録してるな。
動的動作のものが殆どなので、多少コストも緩和されるしね。
まぁ、前か後か1アプリ内で統一させておかないと後々ややこしい事になると思うけど。
メリットとしてはなんだろうね。
CSVとかで保存した時に、色んなものでログの使い回しが利くとか…?
0822nobodyさん
2006/05/11(木) 11:19:59ID:???必ずどこかで漏れが生じてセキュリティに問題が発生する。
HTMLにしろSQLにしろ、エスケープはとにかく「直前」&「確実」が基本。
0823nobodyさん
2006/05/11(木) 11:23:25ID:???ファイルの内容(ソース)を変数に格納するのに最も簡単な方法はなんでしょうか?
直接file_get_contents()みたいなものを使えればいいんですが、
一旦一時ファイルを作って、それをfopenしてftp_fgetみたいな方法しか
思いつきませんでした。
もっとシンプルな方法あったらお願いします
ttp://jp.php.net/manual/ja/ref.ftp.php
0824nobodyさん
2006/05/11(木) 11:32:12ID:???サニタイズって呼ぶなキャンペーン。って
http://takagi-hiromitsu.jp/diary/20051231.html
のことなんだけど。
正しくは『サニタイズ言うなキャンペーン』だったが。
0825nobodyさん
2006/05/11(木) 12:26:52ID:???不可逆変換して保存すると元のデータに戻せないから
後でデータから"<a"タグを検索して抜き出したいとか思ったときに"<a"が変換でそうなったのか元からそうなのか判断できない
0826nobodyさん
2006/05/11(木) 12:34:00ID:???DBに対する考え方の違いかな?
先の例でいうとhtmlspecialchar()で変換後のデータをDBに入れるとか俺的にはありえないな。生理的に気持ち悪い。
例えば検索処理で要らないものまで拾ったりしそうだしさ。
例えば少しでも負荷の軽減をと考えるのであれば、処理後のデータをキャッシュしておいて、
そのキャッシュを表示させると考えるのが普通だと思うのだけどね。DB接続も入らないし。
0827nobodyさん
2006/05/11(木) 12:48:25ID:???0828nobodyさん
2006/05/11(木) 13:15:26ID:0g4oanFp(細かいバージョンは今頃SEがつめてるはず)
特にデータを落とす先のファイルの形式指定はありませんが、
ファイルじたいにパスワードをかけなければなりません。
となると、やっぱエクセルか??、と。
エクセルの場合Spreadsheet_Excel_Writerが結構実用的じゃないかってとこは分かったのですが
パスワードがかけれる云々に言及した資料は未だ捜索中です。
この場合、皆さんならどういった開発方法を考えられますか?
よろしくお願いいたします
0829spam業者のアドレス
2006/05/11(木) 15:14:38ID:???落としたファイルをzip圧縮してパスワードとか。
頻繁に落とす意味もよくわからんけど
・・・phpの質問スレっていうのはスレ違い感があるような
0830nobodyさん
2006/05/11(木) 16:09:40ID:???、そのようなことは可能でしょうか?
再帰使ってたら頭こんがらがってきて…
無限ループ・無限ループ・無限ループ・・・・・・
0831828
2006/05/11(木) 16:15:30ID:0g4oanFpまぁ、微妙だけどPHPだしな〜〜と思ったので。すみません
ところで、Zipに圧縮ってPHPでできましたっけ?
・・・.netにしてくれりゃー一発で終了なのに・・・クソSE
0832nobodyさん
2006/05/11(木) 16:18:25ID:???0834830
2006/05/11(木) 16:34:26ID:???レスありがとうございます
>mv
もしよろしければ詳しく教えていただけないでしょうか?
830を分かりやすくいうと、ディレクトリAの中のディレクトリやファイルをBにそっくりそのまま移すという感じになります
0835nobodyさん
2006/05/11(木) 16:47:17ID:???http://www.php.net/manual/ja/function.rename.php
0836nobodyさん
2006/05/11(木) 16:47:43ID:???ディレクトリを移動させればいいわけだから
`mv -f $from $to`;
でいいんじゃない?
phpのrename()はディレクトリには使えないっぽいからね。
移動させるときに他の処理が必要なら頑張って再帰かな。
5.1以降ならSPLにRecursiveDirectoryIteratorなんてのがあるけど、これどうなんだろう?
0837836
2006/05/11(木) 16:52:07ID:???renameでもディレクトリ移動できたorz
0838830
2006/05/11(木) 17:18:20ID:???移動ではなくコピーです
言葉足らずで申し訳ありません
0839nobodyさん
2006/05/11(木) 17:31:13ID:???http://jp.php.net/manual/ja/function.copy.php
あのねぇ……
0841nobodyさん
2006/05/11(木) 17:43:24ID:???839じゃないがどこに目をつけてるんだ
頭は生きているうちに使うもんだ
つUser Contributed Notes
0842823
2006/05/11(木) 18:01:21ID:???0843nobodyさん
2006/05/11(木) 18:12:23ID:g/mQfyCdテーブル「name」が[hoge]の場合に表示する。
変数を$list[name]に置き換える。
$conn = mysql_connect(localhost, root, 1111);
$selectdb = mysql_select_db(list, $conn);
$sql = "select * from list where name=hoge";
$rst=mysql_query($sql,$conn);
while($list=mysql_fetch_array($rst)){
echo $list['name'];
}
しかし、whileの行がmysql_fetch_array(): supplied argument is not a valid MySQL result resource
というエラーが出ます。どうしたら良いのでしょうか?
0844nobodyさん
2006/05/11(木) 18:16:03ID:???ftp_fgetでやれや。どうしてもってんならSocket使えば?
>>843
mysql_queryでエラーになってんじゃ?
name = 'hoge'
0845nobodyさん
2006/05/11(木) 18:21:20ID:???リモートファイル開いて一行ずつ処理するか
http://jp.php.net/manual/ja/features.remote-files.php
ソケット関数で原始的に処理するか。
"簡単に"ということなので後者なら、お膳立てされたライブラリがないか
まずは探してみることだね。PEARのはftp関数と同じでファイルとして落とす必要がある。
0847844
2006/05/11(木) 18:34:02ID:???今しがたの思いつき
file_get_contents("ftp://user:password@example.com/pub/file.txt")
とかはどうよ。
0848843
2006/05/11(木) 18:40:03ID:???以下のようにしろと言うことですよね?
$sql = "select * from list where name='hoge'";
しかし、特に変化ありません・・。というか、何も表示されません
0850nobodyさん
2006/05/11(木) 18:45:20ID:???エラーはどうなったんだよ?
それとレコードはあるのか? nameがhogeのレコード
つか、デバッグの方法を覚えるというか考えろよな
$sql = "select * from list LIMIT 10";
にして最後に
echo "読み込んだ件数:".mysql_num_rows($rst);
とかしてみるとか
0853nobodyさん
2006/05/11(木) 20:49:14ID:???komagataさんに何があったんでしょうか・・・。
随分長い間blog更新しないなぁと思ってたらいきなり「退職しました」ですもの。
なんかすごい気になる・・・。
いつもblog楽しみにしてたので、何かマイナスな事があったのなら悲しいなぁ・・・。
0854nobodyさん
2006/05/12(金) 01:13:33ID:???whileの前でmysql_error()を表示すればいい。
$rstをvar_dumpしても載ってたと思う。
0857nobodyさん
2006/05/12(金) 12:58:53ID:???0859nobodyさん
2006/05/12(金) 17:22:14ID:???0860nobodyさん
2006/05/12(金) 17:50:08ID:???0862nobodyさん
2006/05/12(金) 20:08:50ID:???apacheを設定しないとだめなのでしょうか?
0863nobodyさん
2006/05/12(金) 21:09:48ID:???可能だけど、PHPでスクリプトを処理した後
その出力を更にSSIとしてhttpdに処理させなくてはならない。
ApacheなんかだとApache2じゃないと無理だし、設定も必要。
全部PHPで処理した方が良いよ。
0864nobodyさん
2006/05/12(金) 23:47:57ID:???効率悪すぎるけど・・・
その前に、phpではなくssiで処理する必要があることって何だろう?
0865nobodyさん
2006/05/13(土) 00:29:00ID:???というよりDBの内容をメールしたいとなった時どうするの?
データってHTMLだけに出すものじゃないでしょ?
検索したりさ。
0866nobodyさん
2006/05/13(土) 09:09:58ID:sR0lmg54PHPを自分のパソコンで動かそうとしたんですけど
Apacheをインスコしたのは良いものの、どうやってするか教えていただけませんか?
0867nobodyさん
2006/05/13(土) 09:16:34ID:???1.とりあえずApacheの動作を確認する
2.PHPのマニュアル、インストールの章を読む
3.手順に沿ってインストール
0868spam業者のアドレス
2006/05/13(土) 11:50:55ID:???グーグルで調べたらインストール方法ぐらいいくらでもでてくる
0869nobodyさん
2006/05/13(土) 13:03:48ID:???そのファイルサイズを取得する方法はないでしょうか?
0872nobodyさん
2006/05/13(土) 14:07:20ID:???0873nobodyさん
2006/05/13(土) 14:24:48ID:l8EeBxVx$_SERVER['QUERY_STRING'] は test になりますが、
#(ハッシュ?)移行の文字列の取得はどうすれば良いでしょうか?
0875873
2006/05/13(土) 15:04:34ID:l8EeBxVxありがとうございます。やはり取得不可能でしたか
*.php?test-id30 などにして下記で飛ばすようにします。
$query = str_replace("-","#",$_SERVER['QUERY_STRING']);
header("Location: http://example.com/test.php?" . $query);
0876nobodyさん
2006/05/13(土) 15:21:17ID:???'/(\w+?)\-(\w+?)/'
0878nobodyさん
2006/05/13(土) 19:35:06ID:jirCYTM40879nobodyさん
2006/05/13(土) 21:56:48ID:???設定ミスだ。dll加えてないだけだろ。
つーかくだ質レベルの質問するな。
0880nobodyさん
2006/05/13(土) 22:21:22ID:jirCYTM40882nobodyさん
2006/05/13(土) 22:45:36ID:sR0lmg54>>867
Apacheはちゃんと動きます。
でも、PHPを実行させたときにどうやってApacheを使うかわかりません
0884nobodyさん
2006/05/13(土) 23:04:46ID:sR0lmg54(http://www.apache.jp/dist/httpd/binaries/win32/apache_2.2.2-win32-x86-no_ssl.msi )
動作確認(http://localhost/)OK
PHPのインストール(PHP 4.4.2)
ApacheとPHPの連携
conf/httpd.confが見つからないので書き換えできない
とりあえずここまで作業進めたんですけど。
PHPを自分の鯖で実行というのはどうすればできるのですか?
0885nobodyさん
2006/05/13(土) 23:24:47ID:???上でも言われたように、マニュアル読もうぜ。
ttp://www.php.net/manual/ja/install.windows.php
それと、apache2.2系列は内部的に大きく変更があったので、PHP側の対応が追いついていない。
2.0系列を使うよろし。
(snapshot版の方は使えるが、普通のユーザはそこまでして使う理由はあるまい)
0886nobodyさん
2006/05/14(日) 00:47:47ID:fxMAnAYJ0887nobodyさん
2006/05/14(日) 00:50:00ID:w7OEC7Loごめんなさい、Apache2.0.58でした。
マニュアル読んでみたのですが、
CGI バイナリの使用じゃなくてApache モジュールの使用で大丈夫なのですよね?
php4apache2.dllがPHPにもApacheにもないんですけど、別途ダウソ必要なんですか?
0889nobodyさん
2006/05/14(日) 00:54:19ID:w7OEC7LoZIPすらありませぬ・・・
0891nobodyさん
2006/05/14(日) 00:56:48ID:w7OEC7LoApacheですか?
PHPの中にはフォルダが3つとファイルがちょこっとです。
0892nobodyさん
2006/05/14(日) 01:21:46ID:???ttp://www.php.net/downloads.php
Installer なんか使うな。CGI only ってわざわざ書かれてるだろう。
ZIP 版使ってインストールやり直せ。
つーかマニュアルちゃんと嫁
0893878
2006/05/14(日) 10:52:28ID:Kk5ImAZs0894nobodyさん
2006/05/14(日) 12:59:06ID:w7OEC7Loすんません。
設定はできました。
index.phpを作って実行したのですけど、IEで開いても何もおきません。
Sleipnilで開くと、index.phpのダウンロードになります。
実行されないです¨
0895nobodyさん
2006/05/14(日) 13:34:17ID:???0897nobodyさん
2006/05/14(日) 14:55:31ID:???Windows版では簡易的(本当に簡易的)にSMTPを話す機能が
組み込まれてるから別途MTAを用意しなくても構わない。
WindowsだとスタンダードなMTAを用意するの面倒でしょ。
0898nobodyさん
2006/05/14(日) 15:55:45ID:???ところでmysql_query()とかで得たSQLの結果を、そのままmysqlみたいに表示するにはどうすればいい?
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
ってのは、地道にmysql_field_name()とmysql_fetch_row()とechoを駆使するしか無い?
echo "+----------+\n"
echo "| ", mysql_field_name($result, 0), " |\n";
echo "+----------+\n"
while($i = mysql_fetch_row($result)) {
echo "| $i[0] |\n";
}
echo "+----------+\n"
なんか面倒だね(w
0899nobodyさん
2006/05/14(日) 16:30:11ID:???0900nobodyさん
2006/05/14(日) 16:43:16ID:???そのレベルで面倒とか言われると…
そもそもmysql形式での表示が面倒くさいんだよな。
while($data = mysql_fetch_assoc($result)) {
foreach($data as $k => $v) {
echo "$k: $v "
}
echo "\n";
}
こっちの方がよほど簡単で利便性も高いと思うんだがダメか?
0901nobodyさん
2006/05/14(日) 16:51:58ID:???0903nobodyさん
2006/05/14(日) 17:03:16ID:???0904nobodyさん
2006/05/14(日) 17:14:57ID:???Mail Transfer Agent。sendmail/qmail/postfixなんかの、主にメールの配送を行うソフトウェアのこと。
ついでにMDA, MUAなんかを調べておくといいよ。で、お前に言いたいのだが
, イ)ィ -─ ──- 、ミヽ
ノ /,.-‐'"´ `ヾj ii / Λ
,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
ノ/,/ミ三ニヲ´ ゙、ノi!
{V /ミ三二,イ , /, ,\ Yソ
レ'/三二彡イ .:ィこラ ;:こラ j{
V;;;::. ;ヲヾ!V ー '′ i ー ' ソ
Vニミ( 入 、 r j ,′
ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ
ヽ ヽ -''ニニ‐ /
| `、 ⌒ ,/
| >┻━┻'r‐'´
ヽ_ |
ヽ _ _ 」
ググレカス [ Gugurecus ]
( 2006 〜 没年不明 )
0905nobodyさん
2006/05/14(日) 17:39:32ID:???Database: mysql
Database: test
って表示か。
これって何形式? >>900形式フォーマット?
>>901
マジでやってそうな香具師が居る所が恐ス(w
パスワード変更を、$passwd_done = system('sudo mysqladmin -u user password new_password'); とか。
0907nobodyさん
2006/05/14(日) 17:47:30ID:???while($data = mysql_fetch_assoc($result)) print_r($data);
でじゅーぶん
0909nobodyさん
2006/05/14(日) 18:05:11ID:???(
[Database] => mysql
)
Array
(
[Database] => test
)
1行はいいね。デバック向けかも。でも表示はたくさんあると凄ス(w
0910nobodyさん
2006/05/14(日) 18:32:02ID:???0912nobodyさん
2006/05/14(日) 20:54:40ID:Kk5ImAZs0913nobodyさん
2006/05/14(日) 21:10:30ID:???windowsの場合、SMTPサーバにネットワーク接続してメールを送信する。
相手のSMTPサーバ名はphp.iniのSMTPで設定する。
(マニュアルのwindowsの場合は.. という但し書きは、このためのもの)
ローカルホストだけで運用するなら、ローカルホストでSMTPサーバを立ち上げる必要がある。
プロバイダのメールサーバを使う事もできるが、プロバイダ側の方針で
pop befor smtpなどを使う必要があるのならあきらめれ。
(pearのパッケージに対応したものはある)
Unix系の場合は、メール送信プログラムを直接起動している
(なので、sendmailへのファイルパスを適切に設定する必要がある)
0914nobodyさん
2006/05/14(日) 21:13:38ID:???adodbでデバッグしているのですが、<html>がはじまる前にprintでデバッグ情報を
出力します。これによりHTMLがくずれます。
できれば別ウィンドウなどでデバッグ情報を出力したいのですが、よい方法ってないで
しょうか?
できれば、その他の自分が書いたHTML以前に出力するデバッグprintをまとめて
別ウィンドウで出したいのですが、よい方法ってないですか?
0915nobodyさん
2006/05/14(日) 21:24:03ID:???0916nobodyさん
2006/05/14(日) 21:40:03ID:yvznY1na一行コメントをつけたいと考えています。
できれば自分でつくってみたいのですが、最低限の(コメントする)機能を
一から解説しているサイトはないでしょうか?
googleで調べたらみつからなかったので、ヒントなどでもよろしくお願いします。
0917nobodyさん
2006/05/14(日) 22:16:25ID:???0918nobodyさん
2006/05/14(日) 22:40:10ID:???まあウィンドウズだとアドミン権限実行は普通だろうけど。
別に、phpにこだわらず一行掲示板のCGIスクリプトを拾って来て設置したほうが速いと思う。
ググっても見つけられないとか、解説サイト求めてる程度だし。php本でも買って一から覚える気もないでしょ?
0919nobodyさん
2006/05/14(日) 22:44:35ID:???0921nobodyさん
2006/05/14(日) 23:32:56ID:???http://pc8.2ch.net/test/read.cgi/php/1097759967/l50
せっかくだからPHPで掲示板作ってみませんか?
http://pc8.2ch.net/test/read.cgi/php/982779383/l50
オマエラPHPで掲示板つくれませんか?
http://pc8.2ch.net/test/read.cgi/php/1026233119/l50
0922nobodyさん
2006/05/14(日) 23:39:34ID:yvznY1naお、ありがとうございます。
現在、実は既にcgiで掲示板も動いていて、ムーバブルタイプも動いてたりするのですが、
別にブログほど大げさじゃなくて、自宅サーバであんまり思いの処理させるのも嫌だったので
じゃ、phpでやってみようかなとなったわけです。
というわけで、いってみます
0924nobodyさん
2006/05/15(月) 06:31:02ID:???というのをしたいんですが
これってSQL使わないと処理が重くなりすぎますか?
1つのリンクを1つのxmlファイルにしちゃうのが楽そうだなあと思っているんですが。
0925nobodyさん
2006/05/15(月) 06:31:57ID:???0927924 925
2006/05/15(月) 06:40:18ID:???キーワードといったほうがいいんですかね。
ディレクトリみたいな分類方法ではなく、
一つのリンクに対して複数のキーワードを指定するタイプのものです。
0928nobodyさん
2006/05/15(月) 08:14:18ID:???アクセス数にもよる。まあRDBMS使うことになるだろう。
リンク数>>関連ワード種なら関連ワードでインデクシングすればファイルでもそんな重くならないと思う
0929nobodyさん
2006/05/15(月) 08:28:16ID:???滅多に更新しないようなのなら、手元のスクリプトでHTML生成させてうpさせるだけでも十分だし。
0930894
2006/05/15(月) 09:08:33ID:JZwWRF2VLoadModule php4_module "c:/php/php4apache2.dll"
# sapi ディレクトリから php4apache2.dll をコピーするのを忘れないこと!
AddType application/x-httpd-php .php
# PHP 5 の場合
LoadModule php5_module "c:/php/php5apache2.dll"
AddType application/x-httpd-php .php
# php.ini の場所を設定
PHPIniDir "C:/php"
これですよね。
ちゃんと設定したのですが・・・
0931nobodyさん
2006/05/15(月) 11:46:54ID:xX88XBiyあるドメイン名が既に取得されているか、まだ取得されていないかを
確かめるにはどのようにすればいいでしょうか?
たとえば、『abc.com』の場合は1を返し、『ouashoghasoifpoashfua.com』
の場合は0を返す、というようにしたいです。
OS・バージョン:CentOSのバージョン2
やってみたこと:『$result = `whois abc.com`;』の結果に"not found"や"no match"が
含まれているかどうか、という判断基準では思った結果が得られませんでした。
よろしくお願いします。
0933nobodyさん
2006/05/15(月) 12:35:24ID:???http://pear.php.net/package/Net_Whois
0934nobodyさん
2006/05/15(月) 13:13:07ID:JZwWRF2Vどこか、PHP+Apacheを詳しく紹介しているサイトありませんか?
0935nobodyさん
2006/05/15(月) 13:13:48ID:???0936nobodyさん
2006/05/15(月) 14:30:17ID:xX88XBiyありがとうございます。
しかし会社の都合でPearは使えないので、純粋にPHPだけでやりたいのですが…
無理でしょうか?
0937nobodyさん
2006/05/15(月) 14:34:48ID:???特にNet_whoisなんて.phpファイル1個しか無いんだから。
これって純粋にPHPだけじゃないのか?
0938nobodyさん
2006/05/15(月) 15:16:12ID:xX88XBiyなるほど、そうだったんですね。知りませんでした。
ttp://www.res-system.com/weblog/item/572
↑これを参考にやってみたのですが、どうもWhoisの結果を返してくれるだけのようなのですが…
『ドメインが取得済みかどうか』を調べることもできるのでしょうか?
英語が全然ダメなものですみません…
0939nobodyさん
2006/05/15(月) 15:25:18ID:???そもそも、
>やってみたこと:『$result = `whois abc.com`;』の結果に"not found"や"no match"が
> 含まれているかどうか、という判断基準では思った結果が得られませんでした。
思った結果とはなに?
0940nobodyさん
2006/05/15(月) 15:34:51ID:xX88XBiy> あるドメイン名が既に取得されているか、まだ取得されていないかを確かめる
という部分です。たとえば、
if(eregi("not found") || eregi("no match")){
return 0;
}else{
return 1;
}
とした場合には、取得済みドメインのWhoisの結果でも「not found」という文字が含まれている場合があるため、
『取得されているかどうかの判定』にはならなかった、という意味で書きました。
わかりにくくてすみません。
0941nobodyさん
2006/05/15(月) 15:35:25ID:???>※ レジストリデータベースに該当するデータが存在しないだけであり、
>そのドメイン名などの登録を保証するものではありません。
>登録可能かどうかを確認する場合はhttp://jpsearch.jp/ をご覧ください。
なんてあるから、http://jpsearch.jp/にクエリー投げて、レスポンスを分析すれば
いいんじゃない?
0942nobodyさん
2006/05/15(月) 15:49:52ID:xX88XBiyやはり返ってきたデータを分析するしかないんですかね…
.comや.twなど様々なドメインに対応する必要があるので、レジストリごとに分析してやる必要がありそうです。
かなりめんどくさいですががんばります。
ありがとうございました。
0943nobodyさん
2006/05/15(月) 16:21:10ID:???ディレクトリ内に3つのファイルがあった場合、
unlink(a.gif);
unlink(b.gif);
unlink(c.gif);
rmdir(hoge);
で、ディレクトリ内のファイルは削除されますが、ファイルが5つあるけど
実際にデータベースに登録されているファイルは3つの場合、2つ削除出来ないから
エラーになります。
つまり、ディレクトリごとすべて削除する場合、どうすればいいのでしょうか?
0944nobodyさん
2006/05/15(月) 16:28:14ID:???何が難しいの?ハテ??
0945943
2006/05/15(月) 16:48:39ID:???ありがとうございます。下記のように書いてみたのですが、
unlink(.../files/hoge..): Is a directory in
というようなエラーが出ます。しかし、ディレクトリは削除出来ています。
どこがおかしいのでしょうか?
<?
$name="hoge";
$dir_name="../files/$name/";
$dh=opendir($dir_name);
while($file=readdir($dh)){
unlink($dir_name . $file);
}
rmdir("../files/$name");
closedir($dh);
?>
0946nobodyさん
2006/05/15(月) 17:09:21ID:???opendir($dir_name);した時点でカレント移動してて
ディレクトリのズレが生じてる気がする
相対パスじゃなくて絶対でやってみて
0947943
2006/05/15(月) 17:17:55ID:???$dir_name="../files/$name/";
↓
$dir_name="http://***.com/files/$name/";
しかし、こうするとfailed to open dir: not implemented inというエラーが出ます。
0948nobodyさん
2006/05/15(月) 17:43:43ID:???鯖によって違うと思うけど↓みたいなやつ
/virtual/user/public_html/
0949nobodyさん
2006/05/15(月) 17:46:34ID:???ディレクトリ関数つかったら
. カレント
.. 親ディレクトリ
のパスのあとにファイル名とかくるから
is_file()でファイルが確認してからunlinkして
0950nobodyさん
2006/05/15(月) 18:12:52ID:???イカすライブラリはありませんか?
0951943
2006/05/15(月) 18:20:41ID:???ちょっと変ですが、以下のソースで出来ました!アドバイスありがとうございました。
<?
$name="hoge";
$dir_name="../files/";
$dh=opendir("$dir_name/$name/");
$dir_name_path="$file_name/$c_id/";
while($file=readdir($dh)){
if(is_file($file)){
unlink($dir_name_path . $file);
}
}
rmdir("$dir_name/$name");
closedir($dh);
?>
0952nobodyさん
2006/05/15(月) 20:56:00ID:???解決したみたいだけど、ディレクトリの中の全ファイル削除ならそれで問題ないと思う。
ディレクトリの中に更にディレクトリとかあるのなら話しは別だけど。
>>945のエラーについては、$fileを出力すればエラーの理由が分かると思うよ。
0953943
2006/05/15(月) 21:33:59ID:???readdirを使うと0があるファイル名を読み込む時、FALSEと見なして
意図しない動作になると、リファレンスに記述がありました。
事実、それでずっと特定のファイルが削除されずに悩んでいたのですが、
ローマ字だけのファイルなどは問題なく削除されるので、0の問題があると思います。
上記のソースで、0を含むファイル名の場合の対処法をご存じであれば教えて下さい
0956nobodyさん
2006/05/15(月) 21:51:39ID:???readdirで正常動作しないのは「0」という名前のファイルのときであって
0を含むというだけなら全然関係ない。
別の問題があるんじゃないか?具体的にどんなファイル名が表示できてないのよ。
0957943
2006/05/15(月) 22:03:00ID:???マイクロタイム形式の「1140930321.jpg」こういうファイルです。
例えばtest.jpgとかindex.phpとかのファイルの場合は、問題なく削除出来ます。
同じソースでそういうわけなので、「0」の問題かと思っています。
かれこれ2時間悩んであれこれテストしてみたのですが、いきつく結果は
それかと思っているのですが・・。
0958nobodyさん
2006/05/15(月) 22:05:36ID:???それは0は関係ない。
ソースってこれか?
while($file=readdir($dh)){
if(is_file($file)){
unlink($dir_name_path . $file);
}
}
> if(is_file($file)){
を
if(is_file($dir_name_path . $file)){
にしてもダメか?
0959nobodyさん
2006/05/15(月) 22:07:24ID:???$dh=opendir("$dir_name/$name/");
$dir_name_path="$file_name/$c_id/";
なんでopendirの引数と$dir_name_pathの内容が違うの?
0960943
2006/05/15(月) 22:08:18ID:???if(is_file($dir_name_path . $file)){
これにしたら出来ました!!
自分ではどうしてかよくわからないのですが、、もう一度調べてみます。
何度もありがとうございました。
0961nobodyさん
2006/05/15(月) 22:09:34ID:???0962943
2006/05/15(月) 22:10:12ID:???すみません、色々とやってたので変更せずにそのまま投稿してしまいました・・。
ただしくは
$dh=opendir("$dir_name/$name/");
$dir_name_path="$dir_name/$name/";
です。。
0963943
2006/05/15(月) 22:11:45ID:???何か理由があるんですかね?全く持って不思議ですが・・。
私の書き方にも問題あると思いますが、動作しない理由が
よくわからないことがあります。リファレンス見ながらやっているのですが・・。
とりあえず、大変参考になりました。これでディレクトリ内一括削除はできそうです。
0964nobodyさん
2006/05/15(月) 22:15:46ID:???is_file($file)だとパスなしのファイル名になるから
実際はカレントディレクトリにそのファイルがあるかどうか、を判別してる。
多分、削除できてたローマ字ファイル名とやらは該当のディレクトリだけじゃなく
プログラムと同じ場所にも同名ファイルが置いてあって、
数字のファイル名は該当のディレクトリにしか無かったというオチ。
0965nobodyさん
2006/05/16(火) 02:12:09ID:luYBLTx6これでApacheとPHPを連携させるのですよね。
これで、localhostは見れたのですけど
C:\Program Files\Apache Group\Apache\htdocsに
test.phpを入れてhttp://localhost/test.php
でアクセスすると、
test.phpをダウンロードしますか?と出ます
何の設定が足りていないのでしょうか
0966nobodyさん
2006/05/16(火) 02:15:04ID:luYBLTx60967nobodyさん
2006/05/16(火) 02:15:16ID:???別のコンボボックスのデータを変えたいのですが、
どこもかしこも「onChange=""」でJavaScriptの関数を呼び出せ、
としか書いてありません。
JavaScriptに一切頼らず、PHPの処理だけでこれを実現することは不可能なのでしょうか?
0968nobodyさん
2006/05/16(火) 03:51:08ID:???これで、localhostは見れたのですけど
C:\Program Files\Apache Group\Apache\htdocsに
test.phpを入れてhttp://localhost/test.php
>localhostは見れた
どういうこと?何が見れたの?
0969nobodyさん
2006/05/16(火) 03:55:33ID:???phpはサーバサイドなので一度サーバになんらか送信しないと表示している画面を変更することはできません。
で、JavaScript(onchange)を使いたくないというなら「無理」
0970nobodyさん
2006/05/16(火) 04:07:31ID:???えと、寝る前に気がついたので再度(968っす)
http://localhost/でindex.htmlが見れたってことかな
であれば.phpが何で動くかって指定してないのではないかと
AddType application/x-httpd-php .php
とかをhttpd.confに設定してないんじゃない?
0973nobodyさん
2006/05/16(火) 07:56:03ID:???必要ねぇよ。嘘教えてんなよ。
サンプルのhttpd.confはClearModuleListを使って順序を決めなおしてるから
ちょっと冗長なんだよ。
0974nobodyさん
2006/05/16(火) 09:06:05ID:???コンボボックスってのはセレクトボックス+テキストボックスで
与えられた選択対象に目的のものがない場合に、ユーザが入力できるUIのことだ。
JavaScriptのライブラリでも使って特別に実装しない限り、コンボボックスにはなり得ない。
0975nobodyさん
2006/05/16(火) 09:07:20ID:XeHcc5dBAddType application/x-httpd-php .php
と、もうひとつの行は書き込んであります。
>>972
AddModuleが上の設定ではないのですか?
>>973
('A`)ヴァー
0976965(975)
2006/05/16(火) 09:09:54ID:XeHcc5dBLoadModule php4_module "C:/php/php4apache.dll"
AddModule mod_php4.c
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
↑これはhttpd.confに設定しました。
Action application/x-httpd-php "/php/php.exe"
SetEnv PHPRC C:/php
上記の2行は必要ですか?
0977nobodyさん
2006/05/16(火) 09:27:07ID:???Apache2.0+Winだけど、俺はこれだけ。
LoadModule php4_module "D:/path/to/php4apache2.dll"
AddType application/x-httpd-php .php
Apache再起動したの?
0978965(975)
2006/05/16(火) 09:33:27ID:XeHcc5dBしました、でも無理でした。
DLLをWINDOWS/system32/にコピーってのは必要なのですか?
0979965(975)
2006/05/16(火) 09:39:13ID:XeHcc5dB0981nobodyさん
2006/05/16(火) 10:36:24ID:???ここの通りにやれば動くよ
ttp://allabout.co.jp/internet/database/closeup/CU20031114/
0982965(975)
2006/05/16(火) 10:49:37ID:XeHcc5dBApache2?
0983nobodyさん
2006/05/16(火) 11:25:21ID:???これはやった事ないけどなぁ。
0984965(975)
2006/05/16(火) 11:28:37ID:XeHcc5dBttp://allabout.co.jp/internet/database/closeup/CU20031114
これのPHP設定に書いてあったんだが
必要ないのかな?
0985nobodyさん
2006/05/16(火) 11:33:17ID:???>>981
もうその情報は過去のものだお。ちゃんとマニュアル嫁。
>古いバージョンのマニュアルでは、ini ファイルおよび DLL ファイルをシステムフォルダ (C:\WINDOWS など) へ移動させることを推奨していました。
>新しいバージョンのインストールにあたっては、これら移動させたファイル(システムフォルダ内の php.ini や PHP 関連の DLLなど)をすべて削除することを推奨します。
0986nobodyさん
2006/05/16(火) 12:03:19ID:???http://php.s3.to/man/install.windows.apache2.html
0987965(975)
2006/05/16(火) 12:06:53ID:XeHcc5dB一つは、CGI バイナリを使用する方法、もう一つ は Apache モジュール DLL を使用する方法です。
どちらの場合も httpd.conf を編集して Apache が PHP を利用できるようにした後、 Apache サーバを再起動する必要があります。
この2種類は何が違うんですか?
0988spam業者のアドレス
2006/05/16(火) 12:21:26ID:???0989nobodyさん
2006/05/16(火) 12:32:38ID:???0990nobodyさん
2006/05/16(火) 13:25:12ID:???マニュアルにちゃんと記載してあるのだが・・・
>ロックは fclose() でも解放されます (スクリプトが終了した場合も自動的にコールされます) 。
故にfcloseの直前で明示的にロックを開放する必要はないし、しない方がいい
0991nobodyさん
2006/05/16(火) 13:33:38ID:???0992nobodyさん
2006/05/16(火) 13:55:26ID:???$info['user'][$i]['age']
$info['user'][$i]['sex']
のような配列を使っていたのですが、途中に数字が入るのにどうも違和感があったので
$info['user']['name'][$i]
$info['user']['age'][$i]
$info['user']['sex'][$i]
のような形に変えました。
しかしageでソートするのに以前の形式ではusort()を使って簡単にできたのですが、
変更後ではageしかソートされず困っています。
こういう場合どうすればいでしょうか?
0993nobodyさん
2006/05/16(火) 15:38:33ID:???php.iniではなくプログラム側で指定する方法はありませんか?
0994nobodyさん
2006/05/16(火) 16:07:20ID:???0995nobodyさん
2006/05/16(火) 16:13:28ID:???【PHP】下らねぇ質問はここに書き込みやがれpart20
http://pc8.2ch.net/test/read.cgi/php/1146165153/
こっち行け。やさしく対応して貰えるかもよ。
0996nobodyさん
2006/05/16(火) 18:26:49ID:???0997965(975)
2006/05/16(火) 18:53:46ID:luYBLTx6原因はphp.iniへのパスのミスでした…
本当に何度も何度も迷惑かけてすみませんでした。
0998nobodyさん
2006/05/16(火) 19:20:35ID:???0999nobodyさん
2006/05/16(火) 19:21:43ID:???10001000
2006/05/16(火) 19:22:13ID:???10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。