【PHP】質問スレッドpart19【php】
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
04/07/16 07:12ID:KvHeypq/・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-4
抜けているものがあったら補足願います
0002nobodyさん
04/07/16 07:13ID:KvHeypq/【PHP】質問スレッドpart18【php】
http://pc5.2ch.net/test/read.cgi/php/1087191395/
0003997
04/07/16 08:08ID:G5BXIcySpreg_replace_callback関数の勉強のために上記のHPより以下のものを引用させて使ってみようと試してみたのですが
どうもうまく動作いたしません。
$html = preg_replace_callback( '/\[\[(.+):(.+)\]\]/', 'makeLink', '[[title:url]]' );
function makeLink($m){
return '<a href="'. rawurlencode($match[2]). '">'. htmlspecialchars($match[1]). '</a>';
}
error messageは
Warning: preg_replace_callback() requires argument 2, 'makeLink', to be a valid callback in
これは関数の定義がおかしいという解釈でよろしいのでしょうか?もしよろしければどこがおかしいのかご指摘お願いいたします。
0004nobodyさん
04/07/16 09:19ID:???危険なスクリプトがstrip_tags()を通過できてしまう。
↑ってあるけどさぁ、PHP 4.3.7以前のバージョンでも通らないんだけど。
嘘のアナウンスながすなよなぁ
0005994
04/07/16 09:56ID:???$html = preg_replace_callback( '/\[\[([^:]+):([^]]+)\]\]/', 'makeLink', '[[title:url]]' );
function makeLink($match){
return '<a href="'. rawurlencode($match[2]). '">'. htmlspecialchars($match[1]). '</a>';
}
$mで引数で受けているのに$matchになってるよ
0006nobodyさん
04/07/16 10:15ID:???strip_tags() に第2引数を指定したときの問題。
echo strip_tags("<\0script>alert()</script>", "<s>");
として確認。
XSS が可能かどうかはユーザが使用しているブラウザによるけど。
IE は XSS が可能だったかな。
0007994
04/07/16 10:36ID:???セキュリティうんこ過ぎヌルポ(゚д゚)<シメジ
0008nobodyさん
04/07/16 11:12ID:VHr1659rがっ
0009nobodyさん
04/07/16 12:09ID:G5BXIcySfunction henkan($str) {
$int = $str[1];
//--取得された数字で処理
return $int;
}
text配列内に文字列が格納されておりその中から ’>num(数字)’ にあてはまる部分を正規表現詮索し
<P title="<?php print("説明文"); ?>"> >num(数字) </p> このように置換させたいのですが
functionをどう定義すればよいのかよくわかりません。どなたか詳しく教えていただけないでしょうか?
0010nobodyさん
04/07/16 12:33ID:???$_SERVER['PHP_AUTH_PW'] は取得できるのですが、
$_SERVER['PHP_AUTH_USER'] は取得できません。
なぜでしょうか?
クリーンインストールしたほうがいいのでしょうか。
##############################
## php-5.0.0
'./configure' '--enable-mbstring' '--enable-zend-multibyte' '--without-sqlite' '--with-pgsql=/usr/local/pgsql' '--disable-libxml' '--disable-dom' '--disable-simplexml' '--disable-xml'
'--without-pear' '--with-gd' '--with-zlib-dir' '--with-png-dir' '--with-jpeg-dir' '--with-xpm-dir' '--with-freetype-dir' '--with-apxs=/usr/local/apache/bin/apxs'
# SJIS ユーザ用の php.ini の設定 (http://www.php.net/manual/ja/ref.mbstring.php)
##############################
## openssl-0.9.7d
## mod_ssl-2.8.17-1.3.31
## apache_1.3.31
./configure --with-apache=../apache_1.3.31 --with-ssl=../openssl-0.9.7d --enable-shared=ssl
##############################
## OS 情報
## Vine Linux 2.6r4
# インストールの種類
カスタム
# パッケージグループの設定
X Window システム GNOME / Emacs エディタ / メール/WWW ツール / ファイルサーバ (NFS/SMB) / ネットワークワークステーション / 開発ツール / ドキュメント
0011nobodyさん
04/07/16 13:09ID:???Apache 1.3.x との組み合わせで起きるバグです。
ttp://bugs.php.net/bug.php?id=29132
ttp://news.php.net/php.internals/11223
0013nobodyさん
04/07/16 13:26ID:???したい時は皆さんどうされてます?複数のPCで同時に送信!とか
しか思いつかないんですが○| ̄|_
$time = ceil(time() / 120) * 120
sleep($time - time());
などと行頭に入れてみて、20個ほど起動すればいかがでしょう。
ふと思いついたことなんで参考までに。
$time = ceil(time() / 120) * 120;
sleep($time - time());
1行目でちょうどよい時間(次の偶数分00秒を決定する)
2行目でそのときまでsleepする。
運悪く偶数分00秒とかそういうのにあたらなければ大丈夫なはずです。
誤差は1秒ほどありますが、
0016nobodyさん
04/07/16 14:05ID:xpSWVZ91touchなどでファイルを作成すると所有者がapacheになります。
chownは無効なので他に変更する方法はないでしょうか?
今のところ umask(0); で動作は問題ありませんが、
何か手がありましたらお願いします。
レンタル鯖 Linux Apache/1.3.29 (Unix) PHP/4.2.4-dev safe_mode:off
0017nobodyさん
04/07/16 14:21ID:???の取り扱いで躓いてしまいました。
<input type='file' name='file[]'>でPOSTあげしたのですが、
print_r($_FILES['file']);及びprint_r($_FILES['file'][0]);には何も変数がセットされて
おらずエラーになります。
print_r($_POST['file']);ではArray ( [0] => \"/home/hoge/hoge.tgz\" )となります。
execやvirtual関数を使いcgiを通してファイルを作成する方法しかないようです。
# execでログインすることもできるかも・・・
002017
04/07/16 14:29ID:???0021nobodyさん
04/07/16 15:15ID:???なるほど、その手法でトランザクション処理のテスタークラスなんか
作ってみて実験してみたいと思います。ありがとです(*´ω`*)b
002216
04/07/16 15:24ID:vSsgWICnレスありがとうございます。
その方向で調べてみます。
0023nobodyさん
04/07/16 16:29ID:???変数名を得る方法は無いでしょうか?
こういうこと?
print_r($GLOBALS);
0027nobodyさん
04/07/16 17:42ID:???全角・半角を無視して検索文字列をハイライトするいい方法ありませんかね?
パフォーマンスが悪いのは承知で、
$hage = mb_convert_case($hoge, 'asKV')
$hage = preg_replace('/pattern/', '<span class="match">$0</span>', $hage);
$part = preg_split('/(<.+?>)/', $hage, 0, PREG_SPLIT_DELIM_CAPTURE);
$result = '';
$pos = 0;
foreach ($part as $key => $value) {
if ($key % 2 == 0) {
if (($len = mb_strlen($value)) > 0) {
$result .= mb_substr($hoge, $pos, $len);
$pos .= $len;
}
} else {
$result .= $value;
}
}
というのも考えてみたけど半角の濁点の処理などをさらに追加せねばならず、大変。
他に思いつくのは検索パターンを'a' => '[aAaA]', 'が' => '(?:ガ|が|ガ)'などに
予め置換しておくのもあるけど、置換用の配列を書くのがダルい。
mb_ereg_replaceかpreg_replaceのオプションで全角半角を無視ってのできないかなあ。
0028nobodyさん
04/07/16 17:43ID:23o0JgNKphpinfo()で見ると
SERVER_SOFTWAREにはApache/2.0.49 (Win32) PHP/4.3.8
と表示されてているものの
一番上のバージョン表記とHTTP Response HeadersのX-Powered-Byは
4..3.7のままです
バージョンアップ方法は
phpフォルダをそのまま全部上書き
php.iniを上書き
とやったのですが他に何かやらなければならないことってあるんでしょうか?
0029nobodyさん
04/07/16 17:46ID:3Z+JZGJDphp4ts.dllをC:\Windows\system32にコピーしてみ
0030nobodyさん
04/07/16 18:01ID:23o0JgNK�d!
直りました
0031nobodyさん
04/07/16 18:08ID:LgkOLcz8サーバ上にある●●.htmlというファイルを、
毎日0時にbackup_●●.htmlという風にコピーしてバックアップをとりたいのですが、
タイマーみたいに時間指定でプログラムを動かすにはどうしたらいいでしょうか?
cronとかじゃなくて?
cronを使えるサーバーは少ないのでこういうのはカウンタに連動させたりするのがベスト。
なぜか動くプログラム第二弾(ワラ
こういうのをご希望かな?
mb_internal_encoding(mb_detect_encoding('漢字コードをチェックしますよ'));
$value = 'Abcうソだドンと゛コドーん';
return make_pattern($value);
function make_pattern($value) { $v=mb_convert_kana(
mb_strtoupper($value),'AKVCS');for($i=0;$i<strlen($v);
$i+=2){$s=substr($v,$i,2);$k=mb_convert_kana($s,'ka');
$l=array(strtolower($k),$k,mb_strtolower($s),$s,
mb_convert_kana($s,'c'),mb_convert_kana($k,'K'),
mb_convert_kana($k,'H'));$l=array_unique($l);$r.='('.
implode('|',$l).')';}return $r;}
0037nobodyさん
04/07/16 19:11ID:ctj/r83yWindows だって タスク・スケジューラー や
Cygwin 版の cron (+cygrunsrv) で できるんではないでしょうか
0039nobodyさん
04/07/16 19:19ID:???0041nobodyさん
04/07/16 19:33ID:ctj/r83ywhile(($p=strpos($l,$key))!==false){
$l=substr_replace($l,'</span>', $p+strlen($key),0);
$l=substr_replace($l,'<span class="search-match">', $p,0);
}
0042nobodyさん
04/07/16 19:49ID:???知っている人なら対策コード書いてるor本体アップデートしてると思うがいちおうURL貼ります。
http://www.itmedia.co.jp/enterprise/articles/0407/16/news016.html
cronが無理な環境なら、timeで、たとえば0時の1時間以内に誰かがアクセスした時に起動させて、
それ以降はフラグ立てて起動しないようにし0時を過ぎたらフラグを消すとか・・・
指定時間内に確実にアクセスする必要があるけどね。
0044nobodyさん
04/07/16 20:47ID:???0時でいいなら、最終のバックアップ日付を記録しとけばいいだけだと思うけど。
それ見りゃ処理すべきかどうか判断できて、指定時間がどうのとか莫迦な制限もない
0045nobodyさん
04/07/16 20:56ID:???設計やり直せ
すみません。それはどうやってやるんですか?
0047nobodyさん
04/07/16 21:42ID:???(例えば)トップページ等にアクセスされた時に、
以前バックアップされた日時を確認
↓
その日時から(例えば)1日経過していなかったら終了
↓
バックアップ処理
↓
今の日時を「以前バックアップした日時」として記録
じゃないのか?
0048Imo ◆.jC7ANgFY.
04/07/16 21:46ID:???$delfile = $backupdir . (intval(time() / 24 / 3600) - 15) . '.dat';
file_exists($backupfile) or copy($datafile, $backupfile);
file_exists($delfile) and unlink($delfile);
この4行で毎朝9時ごろにバックアップできるぞ!
0049nobodyさん
04/07/16 22:06ID:mEB25GsKgcc: sapi/cli/php_cli.o: No such file or directory
gcc: sapi/cli/getopt.o: No such file or directory
*** Error code 1
がでてmakeできない
よくわからんから元の4.3.6に戻した
0050カポコン
04/07/17 02:48ID:???HTML化致しました。
005117
04/07/17 12:04ID:???$_REQUEST = array_map('htmlspecialchars',$_REQUEST);
すると「〜」が、?になるのですが仕様の変更ですか?
PHP4の時でもなったいたのだろうか・・記憶にないのですが。
005251
04/07/17 12:05ID:???0054nobodyさん
04/07/17 16:18ID:cAUyli63$mail_data ←この中に、メールのヘッダから本文までごっそり入ってるんですが、
そのなかから、メールアドレスだけ抜き出すにはどうしたら良いでしょうか?
0055nobodyさん
04/07/17 16:36ID:CrUOMyEi0056nobodyさん
04/07/17 16:42ID:???抜き出すための特徴は無いのか?
通常のメールヘッダなら、
To: 、Date: 、From: 、Subject: 、Content-Type: ..が\r\nで区切られているから
To や From の行を抜き出せばいいだけじゃないのか?
それ以外なら >>55の言っているように正規表現で抜き出すしかないぞ?
perlメモのページにメールの正規表現が載ってるがチビるよ?いやまじで。
0057nobodyさん
04/07/17 17:05ID:???From:だけを抜き出そうと思っています。
正規表現でやってみます。
どうもでした。
005854
04/07/17 18:30ID:cAUyli63$grep="/^From:(.*)$/";
print_r(PReg_Grep($grep, $mail_data));
こんなことを、試してみましたがうまく抜き出せません。
PReg_Grep関数じゃだめなんでしょうか?
0059nobodyさん
04/07/17 19:11ID:???やり方は合ってるよ。preg_grepで問題なし。
試しに手元のメールデータを突っ込んでみたが問題無く動く。
それで動かないなら、$mail_dataが想定と違うんじゃないかな?
$mail_dataを一行ずつ表示して確認してみたら?
006058
04/07/17 19:39ID:cAUyli63ごっそり、連なってる、データ郡からとってきてくれるのかと思いました。
StrTokでばらばらにしてやってみます。
0061nobodyさん
04/07/18 11:12ID:yQjoCnlAひっかかるはずの検索ワードを打っても絶対に0件ヒットしました
としか出てくれません。
この場合、どこかの設定がおかしいのでしょうか?
以下のサイトを隅から隅まで見てみましたがそれらしき情報はありませんでした。
http://www10.plala.or.jp/miyazawa/namazu/
http://homeserver-streaming.com/Trouble/namazu/
0063nobodyさん
04/07/18 11:53ID:FJ1yfCK5include 'http://192.168.0.1/test.php?no=001';
?>
とやっても no=001 の部分がどうしても反映されません。
普通にブラウザでhttp://192.168.0.1/test.php?no=001にアクセスすると反映されています。
includeで引数を渡す方法ってないですか?
マニュアルにはこれで出来るって書いてあるのだけれども。
0065nobodyさん
04/07/18 13:43ID:???俺はできたよ(当方Apache/2.0.48 (Win32) PHP/4.3.4)
>>64の言うとおり問題はOSとPHPのバージョンだと思う。
0067 ◆JirmzAivjs
04/07/18 14:32ID:Br0Ka4RM<?php
$var_no = "";
import_request_variables("GP", "var_");
$inc = "http://192.168.0.1/test.php?no=" . $var_no;
include $inc;
?>
とかやってもだめ?
ASPに対してPHPでSOCKETを使用して接続したいのですが、
どうしてもSOCKETで接続が出来ません。
ASPのSESSIONがクッキーで発行されているのがネックなんですが、どうにかする方法はないのでしょうか?
0068nobodyさん
04/07/18 16:24ID:???ASPから発行されたクッキーをPHPから渡してあげればいいのでは?
別の言い方をすると、セッションが継続する間中 ずっとPHPで面倒を見るってことだけど。
0069nobodyさん
04/07/18 17:31ID:???表示させるにはどうすればよいですか?
ttp://www.tkool.net/index.php
0070nobodyさん
04/07/18 17:37ID:???0072nobodyさん
04/07/18 18:16ID:ajil2/nNソースをコンパイルしてインストールしたんですが
$ php -v
の結果は4.3.8なのにサーバ上でphpinfo()を表示させると4.3.6のままです
どこがダメなんでしょうか
0073nobodyさん
04/07/18 18:17ID:???場合、絶対パスでアクセスされてしまう可能性があると想うのですが、
みなさんはどうされていますか?。
拡張子の変更などをしても内容のデータがそのままであれば見るのは
容易だと想うのです。
画像データを暗号化し画像を表示する時にPHP経由で複合化して
表示するか、またはSQLなどに放り込んでしまうか、サーバーに拡張子
によるアクセス拒否が出来るならそれを使う等しか思い付かないのです
が他に良い方法はあるのでしょうか?。
0076nobodyさん
04/07/18 18:51ID:ajil2/nNスマソ
apacheは2.0.49
$ ./configure \
--host=i386-redhat-linux --build=i386-redhat-linux --target=i386-redhat-linux-gnu \
--program-prefix= --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin \
--sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include \
--libdir=/usr/lib --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/usr/com \
--mandir=/usr/share/man --infodir=/usr/share/info --cache-file=../config.cache \
--with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d \
--enable-force-cgi-redirect --disable-debug --enable-pic --disable-rpath \
--enable-inline-optimization --with-bz2 --with-db4=/usr --with-curl \
--with-exec-dir=/usr/bin --with-freetype-dir=/usr --with-png-dir=/usr \
--with-gd --enable-gd-native-ttf --without-gdbm --with-gettext \
--with-ncurses --with-gmp --with-iconv --with-jpeg-dir=/usr \
--with-openssl --with-png --with-pspell --with-regex=system \
--with-xml --with-expat-dir=/usr --with-dom=shared,/usr
0077nobodyさん
04/07/18 18:52ID:ajil2/nN--with-pcre-regex=/usr --with-zlib --with-layout=GNU --enable-bcmath \
--enable-exif --enable-ftp --enable-magic-quotes --enable-safe-mode \
--enable-sockets --enable-sysvsem --enable-sysvshm \
--enable-discard-path --enable-track-vars --enable-trans-sid \
--enable-yp --enable-wddx --without-oci8 --with-pear=/usr/share/pear \
--with-imap=shared --with-imap-ssl --with-kerberos --with-ldap=shared \
--with-mysql=shared,/usr --with-pgsql=shared --enable-ucd-snmp-hack \
--with-unixODBC=shared --enable-memory-limit --enable-bcmath \
--enable-shmop --enable-calendar --enable-dbx --enable-dio \
--enable-mcal --enable-mbstring --enable-mbstr-enc-trans \
--enable-mbregex --with-apxs2=/usr/sbin/apxs \
$ make
# make install
でhttpd.confに
LoadModule php4_module modules/libphp4.so
を加えてapacheを再起動したら
[Sun Jul 18 18:44:53 2004] [warn] module php4_module is already loaded, skipping
と怒られた。それ以前にLoadModule php4_module modules/libphp4.soやAddType application/x-httpd-php .php
がhttpd.confに書いてないんだけどなんでかな
007873
04/07/18 19:00ID:???今は自前鯖なんで、httpd.confに書いてたり^^;。
ゴメンヨ・・・。
配布とか考えた時に.htaccessが使えないレンタル鯖とかも
あると想われるので何か良い手だてはないものかと・・・。
0079nobodyさん
04/07/18 19:44ID:Sl8hc8IDその際、register_globalをOnにしときなされ。
0084nobodyさん
04/07/18 21:39ID:???<select name="asdasd[]" size="5" multiple="multiple">
<option value="a">あ</option>
<option value="b">い</option>
<option value="c">う</option>
<option value="d">え</option>
<option value="r">お</option>
<option value="f">か</option>
<option value="g">き</option>
<option value="h">く</option>
</select>
こういうフォームをつくって、これをGETメソッドで送り、
parse_str 関数で処理したのですが、
配列 asdasd[] の個数が、選択した要素の数*2になってしまいます。
つまり、2つ選択して送るとcount($asdasd) が4になるということです。
どうしてこうなるんですか?
008672
04/07/18 22:22ID:???前のバージョンをアンインストールしていなかったので
# rpm -e php
で関連パッケージを削除してmake install し直してphp.iniをphp.ini_dist
をコピーしてhttpdを再起動しようとしたら今度は
Syntax error on line 199 of /etc/httpd/conf/httpd.conf:
Cannot load /etc/httpd/modules/libphp4.so into server: /etc/httpd/modules/libphp4.so: cannot open shared object file: No such file or directory
と怒られてしまいました
libphp4.soはどこ行っちゃったんでしょうか
0090nobodyさん
04/07/19 00:27ID:eJnEJcBxだれかおしえてください
0091nobodyさん
04/07/19 00:52ID:qsqOem7W実現可能でしょうか?どこか参考になるサイト等ありましたらお教えください。
0092nobodyさん
04/07/19 09:07ID:???掲示板をつくり、1つの記事を削除する場合は
その記事意外を再度上書きすればいいんだよな?
0094nobodyさん
04/07/19 10:26ID:zI9w6JFi$a = array('田中太郎<>12<>りんご<>','山田太郎<>16<>なし<>','吉田太郎<>12<>すいか<>');
のような配列を<>で分割した2番目の要素(12,16,12)でソートするにはどうすればいいんですか?
ソート後は
山田太郎:16才:好物なし
田中太郎:12才:好物りんご
吉田太郎:12才:好物すいか
のように2番目の要素(12,16,12)以外も表示したいんです。
0095nobodyさん
04/07/19 11:04ID:???ttp://www.yumenara.com/pwp/
のサイトを読んで
現在の時刻を表示させる<?php echo date("n月j日") ?>を入れてみたんですが
何故か文字化けして「79」としか表示されません
どうすればいいんでしょう?
PHPバージョンは4.3.8でサーバーはApache2.0.49
OSはWinXPです
ちなみにp2というPHPで作られた2chビュアーは文字化けせずに正常に表示されます
009695
04/07/19 11:04ID:JjQNbyQZすいません
0097nobodyさん
04/07/19 11:06ID:???function myCompare($x, $y) {
if ($x[1] == $y[1]) return 0;
return ($x[1] < $y[1]) ? -1 : 1;
}
function myExplode($z) {
return explode('<>', $z);
}
$a = array('田中太郎<>12<>りんご<>','山田太郎<>16<>なし<>','吉田太郎<>12<>すいか<>');
$b = array('name' => array(), 'year' => array(), 'favorite' => array());
foreach ($a as $str) {
list($b['name'][], $b['year'][], $b['favorite'][], ) = myExplode($str);
}
array_multisort($b['year'], $b['name'], $b['favorite']);
$c = array_map('myExplode', $a);
usort($c, 'myCompare');
var_dump($a, $b, $c);
0098nobodyさん
04/07/19 11:18ID:???文字化けって分かってるなら文字コードの設定も書かないと。
というか、書いているうちに原因に気づくんだろうけどねぇ。
http://www.php.net/manual/ja/ref.mbstring.php
0099nobodyさん
04/07/19 11:25ID:???array_multisort使うならこの方がいいかな。
$a = array('田中太郎<>12<>りんご<>','山田太郎<>16<>なし<>','吉田太郎<>12<>すいか<>');
$b = array(); // 並べ替えたい配列
$c = array(); // 並べ替えの基準にする配列
foreach ($a as $key => $value) {
$b[$key] = explode('<>', $value);
$c[$key] = $b[$key][1];
}
array_multisort($c, $b);
var_dump($b);
010095
04/07/19 11:35ID:JjQNbyQZmbstringは導入してました
php.iniの設定も色々変えてみましたが直りませんでした
全角の文字が表示されていないようなんですが…(全て全角で入力すると何も表示しませんでした)
0105nobodyさん
04/07/19 12:04ID:???文字エンコーディングの設定はどうなってるの?
ソースのそれはどうなの?
やらなきゃいけないのは正しい設定にすることで、
闇雲に変更することじゃない。
どうしたらいいのか分からない場合は>>98のEUC-JPの設定にして
ソースもEUC_JPで書くのがお勧め。
010695
04/07/19 12:19ID:???文字エンコーディングはSJISでやってます
EUC-JPはp2で設定ファイルを編集する時文字化けしたので止めました
ソースは
<HTML LANG="JA">
<HEAD>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=Shift_JIS">
<TITLE></TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" ALINK="#FF0000" VLINK="#800080">
<P>今日は<?php echo date("n月j日") ?>です。</P>
</BODY>
</HTML>
010895
04/07/19 12:38ID:???ttp://www.php.net/manual/ja/ref.mbstring.php
これのSJISユーザ用のphp.iniの設定です
0109nobodyさん
04/07/19 12:45ID:???・・・。
アンタさっきphp.iniの設定をいじったって言ってたけど
今はそのページの内容に戻ってるって事かい?
自分の環境のphp.iniのmb_string関連の部分をコピペしろよ
011090
04/07/19 12:48ID:???ダウンロードしたPHPUnit2のアーカイブにサンプルが入ってるらしい。
ttp://inagi.himitsukichi.com/~aozora/blog/
ttp://inagi.himitsukichi.com/~aozora/cgi-bin/pukiwiki/pukiwiki.php?PHPUnit2%A4%F2%BB%C8%A4%C3%A4%C6%A4%DF%A4%EB
すまね。
0111nobodyさん
04/07/19 12:48ID:???0112nobodyさん
04/07/19 13:18ID:???011394
04/07/19 13:51ID:???0114nobodyさん
04/07/19 14:07ID:???リンク「あああ」をクリックした時に、
同時に変数を代入(例えば$name="yamada"など)できないでしょうか?
0117114
04/07/19 14:23ID:???if ($main == "kikaku")
$page = "./page/kikaku/index.html"
?>
クリックしてmainがkikakuになった状態で上の文を記述していれば
<?php echo $page ?>の部分に上のファイルが開かれるんですよね?
0118114
04/07/19 14:25ID:???「./page/kikaku/index.html」とそのまま表示されますた;;
0119114
04/07/19 14:30ID:???if ($main == "kikaku")
$index = "./page/kikaku/index.html";
$page = file($index);
?>
にしたら「Array」になりました・・・
どなたか助けてください;;
0120nobodyさん
04/07/19 14:44ID:???なにがしたいか知らんが、おそらくincludeでできる
0121114
04/07/19 14:46ID:???0122114
04/07/19 14:48ID:???PHPのページの一部に他のページを貼り付けるということです
0123114
04/07/19 14:58ID:???回答してくれた方ありです!
0124nobodyさん
04/07/19 16:13ID:???0125nobodyさん
04/07/19 17:06ID:???0126nobodyさん
04/07/19 21:11ID:???ファイルアップロードで、下記のformでアップロードした場合、
どうやって、「fname」の値ってとるんでしょうか?
$_POST['fname'] でおけ?
なんかうまく取れない・・・
<form enctype="multipart/form-data" action="upfile.php" method="post">
<input type="file" name="upfile">
<input type="text" name="fname">
<input type="submit" value="upload">
</form>
0128PHP
04/07/19 21:51ID:4+OKTR+fArray[0](A0,B0,C0)
Array[1](A1,B1,C1)
Array[2](A2,B2,C2)
でBの項目でソートしたいときってどうしたらいいの?
http://www.teu.ac.jp/chiit/~dsuzuki/phpdoc/function.array-multisort.html
<?php
$list[0] = array('A2','A1','A0');
$list[1] = array('B1','B2','B0');
$list[2] = array('C0','C1','C2');
//ソート前
print("ソート前<br>\n");
for ($i=0;$i<sizeof($list);$i++) {
for ($j=0;$j<sizeof($list[$i]);$j++) {
$str = $list[$i][$j];
print("$str\n");
}
print("<br>\n");
}
array_multisort ($list[1],SORT_DESC,SORT_STRING,$list[0],$list[2]);
//ソート後
print("ソート後<br>\n");
for ($i=0;$i<sizeof($list);$i++) {
for ($j=0;$j<sizeof($list[$i]);$j++) {
$str = $list[$i][$j];
print("$str\n");
}
print("<br>\n");
}
?>
これを自分なりに変えてみ。
http://pc5.2ch.net/test/read.cgi/jisaku/1089171507/
でがんばってまつ。
0132xxx
04/07/20 01:57ID:zj8DyYfzArray ( [0] => 2004072000<>0<>xxx<>2<>0 [1] => 2004072000<>0<>index<>0<>0 )
の配列を中の[3]の配列の値でソートして、[2]の値のついたdatファイルを読み込んで表示させたいんです。
どうしたらいいか分かりません…。
どうしたらいいんでしょう?
0133nobodyさん
04/07/20 02:34ID:TlHHsRNJHTML中の一部を繰り返したいのですが、
<html>
<body>
<?php
for(i=0;i<10;i++){
?>
test<br>
<?php
}
?>
みたいに書くことってできないんですか?JSPのように。
なんかエラーになってしまったんですが。
0134133
04/07/20 02:37ID:???<?
for($i=0;$i<10;i++){
?>
だった。<?だけでいいんだね。↑は$もついてないし。
ごめん。
マジごめん。
0135xxx
04/07/20 02:58ID:zj8DyYfz<body>
<?php
for($i=0;$i<10;$i++){
print("test<br>\n");
}
?>
じゃだめなの?
http://www.mdir.org/tesss?act=0
http://www.mdir.org/tesss?act=1
>>131
の見てできんのかい(o_ _)ノ彡☆
0137xxx
04/07/20 04:10ID:zj8DyYfzいざむ(136)さん、出来ました。
ありがとうございました!!
0138nobodyさん
04/07/20 05:08ID:???ちゃんとしたスクリプトを書けばできるよ。
(134でもまちがってるだろw)
たしかPHPの処理としては、<?php ?>の間以外は
そのままechoしてるのと同じ処理だからwhileとか
分割されてもできる。
0139nobodyさん
04/07/20 07:55ID:???使用OS WinXp
php.ini
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = SJIS
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none;
;mbstring.func_overload = 0
これでSJISしか使えないEUCで書くと文字化け
mbstring.internal_encoding = EUC-JP
mbstring.http_output = EUC-JP
これでEUCしか使えないSJISで書くと文字化け
というのは理解できる。
mbstring.internal_encoding = EUC-JP
mbstring.http_output = SJIS
こうするとSJIS、EUC-JPとも文字化け
EUC-JPとSJISどっちも使えるようにするにはどうしたらいい?
尚phpのヴァージョン
5.0.0及び4.3.8〜4.3.4辺りまでのpackage及びinstallerは試してみたが全部だめだった
default_charset = "Shift_JIS"を宣言していますか?
mbstringを有効にするのならば
phpインストールフォルダ以下のextensionディレクトリに
php_mbstring.dllは入ってますか?
extension=php_mbstring.dllのコメントはずしてますか?
0141nobodyさん
04/07/20 10:50ID:fJEHV2g/こうしたら結果が下のように出るんですが
Array
(
[0] => [email protected]
[1] => <[email protected]>;
[2] => [email protected]
[3] => <[email protected]>;
)
print $mail[0];
としても何も表示されないのは何ででしょうか?
0143nobodyさん
04/07/20 11:33ID:fJEHV2g/ありがとうございます。
しかし、print_r だと、配列の中身全部出てしまいます。
[0] => [email protected] ← このメールアドレスだけを、とって、処理に使いたいんです。
0145141
04/07/20 12:50ID:fJEHV2g/ob_implicit_flush(1);
while (@ob_end_flush());
これ先頭に書いたら表示されました
0146nobodyさん
04/07/20 12:57ID:yRgYyr5nフォームから得た値で
$query ="insert into table values(0,'$name','$type',$price,'$old','$grade',)";
とレコード追加をしようとしていますが
項目によってはフォーム未入力時も追加可としたいのですが
このままではエラーがでます。
上のコードの前に
if ($***=="") $***=0;
とすれば解決するのですが
もっと簡単な方法はないのでしょうか?
みなさんはどのようにしていますか?
0147nobodyさん
04/07/20 13:10ID:???フォームから得るキーとそのデフォルトを配列にしておいて、
ループしながらやってる。
どのみち最低でもSQLインジェクション対処せんきゃならんし。
0148nobodyさん
04/07/20 13:15ID:???SQL発行する際はPREPARE使ってる
0149nobodyさん
04/07/20 14:45ID:???型がおかしいとき、DBが判断してくれるのでDBが弾くのを任せるか
前もってPHP側で見てやるか、どっちがいいでしょう
0150nobodyさん
04/07/20 14:49ID:???0151nobodyさん
04/07/20 15:02ID:???0153nobodyさん
04/07/20 18:12ID:???0154nobodyさん
04/07/20 18:58ID:???0155nobodyさん
04/07/20 19:04ID:???0157nobodyさん
04/07/20 19:07ID:???0159nobodyさん
04/07/20 19:15ID:???0160nobodyさん
04/07/20 19:15ID:???0161nobodyさん
04/07/20 19:16ID:???"select * from auth where ID = ".$_POST['ID']
としてあとのパスワードやらをmysql_fetch_assocでDBから情報とって調べる
0162nobodyさん
04/07/20 19:17ID:???全然サニタイズしてないや
したほうがいいのかなぁ・・・
0163nobodyさん
04/07/20 19:18ID:???0164nobodyさん
04/07/20 19:19ID:???if(isset($_POST[$name])) return htmlspecialchars(mb_convert_encoding($_POST[$name],"EUC-JP","UTF-8, UTF-7, ASCII, EUC-JP,SJIS, eucJP-win, SJIS-win, JIS, ISO-2022-JP"));
else return;
}
Nucleusからパクッた。マジお勧め
0166139
04/07/20 19:56ID:???サンクス!
default_charset = "Shift_JIS" が抜けてたらしい
php.ini
default_charset = "Shift_JIS"
extension_dir = "extensionsのある場所"
extension=php_mbstring.dll
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = SJIS
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none;
;mbstring.func_overload = 0
これでSJISもEUCも、使えるようになったが
↑以外の設定だとSJISで書いたプログラム側が文字化けしたことを報告する
つまり >108 のいう「例 3. SJISユーザ用のphp.iniの設定」では文字化け発生
追加として鯖システムはUNHTTPD。Apacheは他の奴報告してくれ
0167nobodyさん
04/07/20 20:18ID:???PEARのHTML_QuickFormを使えば再帰的にstripslashesしてくれて便利。
サニタイズはPEAR DBのquoteSmart使えばOK.
(数値型のデータなら事前にintval/floatvalしとく
HTML_QuickFormのaddRuleと組み合わせるとなおよし)
0168nobodyさん
04/07/20 20:30ID:???それでやられちゃうのか
全然知らん買ったよ
sql文を防ぐってdelete select insert updateぐらいをフォームデータに入ってるかチェックでいい?
0169nobodyさん
04/07/20 20:37ID:???0170nobodyさん
04/07/20 20:38ID:???まずdeleteできちゃう。もう1レコードなんてもんじゃない。テーブルごと。
何しろ無制限。スゲェ!なんか制限とかないの。
しかも他のテーブルも消せちゃう。ヤバイよ、真っ白だよ。
だって普通は削除できないじゃん。だって削除されたら困るじゃん。
データ消えたら困るっしょ。
だからそのCGIはロールバックできる。話のわかるヤツだ。
けど普通のCGIはヤバイ。そんなの気にしない。消えるだけ。
とにかく貴様ら、SQLインジェクションのヤバさをもっと知るべきだと思います。
そんなヤバい仕事をしてる貴様らとか超偉い。もっとがんばれ、超がんばれ。
0173nobodyさん
04/07/20 20:44ID:???>>169 ぜんぜんだめ
MySQLならmysql_real_escape_stringした文字列をさらに'(シングルクォート)で囲む。
(PHP4.3.0未満はmysql_escape_string, PostgreSQLはpg_escape_string)
DB_common::quoteSmartは型を考慮してそこらへんを自動でやってくれる。
0175nobodyさん
04/07/20 20:55ID:???ごめん、説明の仕方が悪かった。quoteSmartは静的呼び出し無理ぽ。
PEARのDBクラスを使うときは
$db = &DB::connect($dsn);
$num = (int) $num; // 整数型のデータの場合
$str = $db->quoteSmart($str); // 文字列型のデータの場合
$sql = "SELECT * FROM hoge WHERE foo = $num AND bar = $str;';
$db->query($sql);
こんな感じでやります。詳しくはPEARマニュアル。
テーブル名やカラム名をquoteIdentifierするのが望ましいけど長くなるので省略。
0177nobodyさん
04/07/20 21:21ID:???0178nobodyさん
04/07/20 21:22ID:???そもそも本家(php.net)で配布しているWindows用バイナリは
「mbstring.internal_encoding = SJIS」
に対応してないことは知ってるんだろうな…
http://jp2.php.net/mbstring
「PHPで動作しない文字エンコーディング:JIS, SJIS」
スクリプトの記述エンコーディングにSJISを使うのなら
自分でビルド時にちゃんと「--enable-zend-multibyte」指定しないと駄目。
そうやってビルドしたWindows用バイナリは廣川さんが公開してくれている。
RPM等のバイナリも通常は「--enable-zend-multibyte」な指定はしないから、
ちゃんと確認して使用すること。
0179nobodyさん
04/07/20 21:30ID:???その場合、許可する文字列を列挙して
$regex=hoge|moge;
if ( isset($_GET['sort']) && ereg($regex,$_GET['sort']) $sort=$_GET['sort'];
としてるんですが、これで十分ですよね?
0180nobodyさん
04/07/20 21:33ID:???DB_DataObject(を継承したクラス)を使えばもっと楽で、
型のキャストとか文字列のエスケープとかを気にしなくてよくなります。
マジおすすめ。
ひとつのクエリにひとつDB_DataObject(を継承したクラス)のインスタンスをつくって使います。
厳密にはそこまでしなくていいかもしれないけど、そうした方がハマらないと思う。
DB接続はグローバル変数に登録して使い回すので大丈夫。
>>177
文字列は''で囲むもんだから。
0182nobodyさん
04/07/20 21:44ID:???DBにおいてはWHERE dat='$dat'としておけば$datに「;」が含まれていても
問題が起きにくいという事ですね
PHP5で遊んでいる環境なのでPEARも使えないですし、脆弱性についても
知識不足で穴だらけだったので大変勉強になりますm(_)m
0183166
04/07/20 21:49ID:???無論それを読んで、きちんと仕様通り試して文字化け発生して泡食って
最新からある程度古いのまでのWin用package及びinstallerを入れて、試した上で
日本語メーリングを検索かけて対応策が出てこなくて
こっちに辿り着いているのだが
それでも一つ見落としている辺り節穴だけどさ
ソースをビルドする技術が無いんじゃ使うのは無理ってことだよな?
0184nobodyさん
04/07/20 21:56ID:???ダメだよ。
$datが data';delete from table;...
というように、'が入っていると...
' をエスケープしないと意味無い。
0185nobodyさん
04/07/20 22:03ID:???あ、言葉足らずですいません^^;
私はINSERT INTO table SET でしか使わないので、こんな感じで
処理しようと考えているのですが大丈夫でしょうか?
function sql_esc_set($name,$var){
return $name."='".mysql_real_escape_string($var)."'";
}
0186nobodyさん
04/07/20 22:17ID:???もし$datに'や\等の特種文字が入っていたら、問題が起こるので
必ず $dat = mysql_real_escape($dat); しておかないとだめ。
...と書いてたら>>184,185の流れが...
$name に MySQLの予約語(tableとかcreateとか色々)を使うことがあるなら
return "`" . $name . "`='" . mysql_real_escape_string($var) . "'";
だけど、その予定がないならそれでOK.
#PHP5でもPEARのメジャーなクラスは対応しているし、数は少ないけどPHP5専用のクラスもあります。
0187185
04/07/20 22:18ID:???Formからのからのデータを全てhtmlspecialcharsとaddslashesとし、
SQLへはdat='$dat'とすれば良いのですよね?
0188nobodyさん
04/07/20 22:23ID:???IPA ISEC セキュア・プログラミング講座
http://www.ipa.go.jp/security/awareness/vendor/programming/index.html
0189nobodyさん
04/07/20 22:29ID:???0190nobodyさん
04/07/20 22:30ID:???それに必要な関数は全部 PHP に揃ってる。
QF とか便利だが、何故・どうしてを理解しないまま道具に頼って終わりってのは違うと思う。
で質問なんですが、
$db->query(,"SELECT * FROM hore WHERE id = {$_GET['id']}");
とかやってたとして、具体的に被害出せます?
例えば '";DELETE FROM hoge; とか突っ込んでも大抵の DB だと無効なクエリになるのでは、、
0192nobodyさん
04/07/20 23:08ID:???実行するよ。実際やってみれ。
要は$db->query("SELECT * FROM table;DELETE FROM table");
で後ろのDELETE文を実行してしまうかどうかだが、実行する。
すべて有効になりますね。drop databaseなんて打たれたらどうします?
全部アボーンっすよ((;゚Д゚)ガクガクブルブル
0194nobodyさん
04/07/20 23:23ID:???0195nobodyさん
04/07/20 23:27ID:???0196190
04/07/20 23:53ID:???やってみた。
index.php?gid=50001;DELETE%20FROM%20groups;
で、生成されたクエリが
SELECT * FROM groups WHERE gid = 50001;DELETE FROM groups;
実行結果は
DB Error: syntax error
index.php
--
$db = DB::connect($dsn);
$query = "SELECT * FROM groups WHERE gid = {$_GET['gid']}";
$rs =& $db->query($query);
while ($result = $rs->fetchRow())
{
print "<pre>"; print_r($result); print "</pre><hr>";
}
print "done";
('A`
0197190
04/07/21 00:05ID:???おや、DBによって挙動が異なるのかな?
以前検証したときは、pgsqlでPearDBじゃなくてpg_queryだったんだけど、
確かに後ろ側も実行してましたよ。
0198nobodyさん
04/07/21 01:38ID:???めっちゃファイルサイズ大きくて、全部読み込むの大変。
0200nobodyさん
04/07/21 01:58ID:???delete from groupsでは構文がおかしくないか?
0201198
04/07/21 02:11ID:???ありがとん。
0202190
04/07/21 02:28ID:???mysql だす。
MSSQL とか、初期設定で複数のクエリを通すので危険とか昔聞いたような聞いてないような。
>>200
普通に DELETE FROM groups で SQL 発行したら groups デーブルがきれいに空になりますた。
昔、ボルチモアテクノロジーのサイトが脆弱性吐いてた時に発見者の某 ML の中の人が
具体的な exploit コードを晒していたから何かあると思ったんだけど、、
結局、複数のクエリの実行を許していない時は、具体的な攻撃方法は今は無いって事で FA ?
データベース方面は必要最低限しかしらないもので、、頼り切りですまそ。
0203nobodyさん
04/07/21 02:46ID:???あんまりファイルのサイズが大きいとサーバー側に(「RLimitCPU」(CPU占有時間制限)で)
CGIプログラムの暴走と見なされることがあるのではないかと心配してるんですが、
実際の所どうなのか、分かる方おりますか?
0204nobodyさん
04/07/21 03:40ID:/GR6B3Fppreg_replace_callback('/>([0-9]+)/','trans',$str);
function trans($str) {
//for($i=0;$i<count($str);$i++)
//{
$str[0]=$str[0];
//$str[$i]="<a href="'right.php'" name=$text[$i]>".$str[$i]."</a>";
//}
return $str;
}
実際にはfunction内のコメントアウト部とそうでない部分を入れ替えて使いたいのですがこの状態ですら機能しません。
エラーメッセージは
preg_replace_callback("/>([0-9]+)/","trans",$str); function trans($str[$i]) { //for($i=0;$i".$str[$i].""; //} return $str; }
Fatal error: Call to undefined function: trans() in right.php on line 184
right.phpの184は
$text[$i]=trans($text[$i]);
以上のとおりです。preg_replace_callbackの設定に問題がるのでしょうか?
0205nobodyさん
04/07/21 04:05ID:/GR6B3Fp<?php
preg_replace_callback('/>([0-9]+)/','henkan',$str);
function henkan($str)
{
for($i=0;$i<count($str);$i++){
$str[$i]="<a href='http://'>'.$str[$i].'</a>";
}
return $str;
}
?>
$text[$i]=henkan(text[$i]);
$twext[$i] に >1 と入れた場合のhenkan(text[$i]) は <1 と不等号の向きが変わってしまいアンカーもつきませんでした。
0206nobodyさん
04/07/21 04:40ID:???1. マニュアル(ttp://jp.php.net/manual/ja/function.preg-replace-callback.php)をよく読む。
2. マニュアルのサンプルコードを改造してやってみる。(一から書かない!)
3. それでもダメならもう一度ここに来る。
0207nobodyさん
04/07/21 05:10ID:/GR6B3Fpありがとうございました。
解決いたしました。
何でああいう思い込みをしていたのか自分でも想像がつきません。
おそらくどこかのサンプルページを真似て書いたつもりだったのでしょうが、お恥ずかしい限りです。
済みませんでした。
0208nobodyさん
04/07/21 09:18ID:???0209nobodyさん
04/07/21 09:26ID:???0210nobodyさん
04/07/21 09:36ID:???オッス!昨日からの書き込み
http://pc5.2ch.net/test/read.cgi/php/1089929550/131-209
0212nobodyさん
04/07/21 09:42ID:???function b($val){
echo $val;
}
}
$obj = new a;
$obj->b('test');
ではなく、もっと短くfunction bを呼び出す方法はないでしょうか?
0213nobodyさん
04/07/21 09:57ID:???0214nobodyさん
04/07/21 10:01ID:???ここを見ていたのですが、$str='a7'でも半角英数字
だと判断されてしまします。
本当に半角英数字のみを判定する場合は
'^[0-9]+$'で良いのでしょうか?
if ( ereg("[0-9]+", $str) ) {
echo "半角数字のみ!";
} else {
echo "不正なデータ(値なしも含みます)";
}
0216nobodyさん
04/07/21 10:05ID:???てか、半角「英数字」を判定したいのか半角「数字」のみを判定したいのか
よく分からんのだが。とりあえず「^」と「$」をつけなされ。
0217nobodyさん
04/07/21 10:06ID:???phpかperlで、mallocを実現することは出来ないでしょうか
0219214
04/07/21 10:15ID:???半角数字だけであれば、'^[0-9]+$'で良いのですね。
0220nobodyさん
04/07/21 10:28ID:???こんなのでも ereg は TRUE だったりするし。
ereg("^[0-9]+$", "1\0test");
0222nobodyさん
04/07/21 12:38ID:???readfile()を使いたいって事は、ダウンロード先を教えたくなかったり、ロックしたりとかしたいということ?
ダウンロードする回数にもよるけど、かなりのCPU使用率になるよ。(一瞬だけど)
連続してダウンロードされると、サーバによっては止められる可能性も高い。
一回、自分のPCで試してみな。
0223nobodyさん
04/07/21 12:40ID:???今、SQLiteを使ったスクリプトを書いていてふと思った・・・
0224nobodyさん
04/07/21 12:44ID:???0225nobodyさん
04/07/21 12:44ID:???俺の使ってるphp+mysqlな参考書は
htmlspecialchars()しか触れてないぞう。
・・勉強してきます。。
0226nobodyさん
04/07/21 12:49ID:???とりあえず>>188のサイトをよく読んで
「サニタイズ」「SQLインジェクション」「クロスサイトスクリプティング」辺りでぐぐってみ
0228nobodyさん
04/07/21 13:11ID:???あっ入力チェックはきちんと行うとして、、
0229nobodyさん
04/07/21 13:13ID:???SQL発行時はバインド
この2つしかやってません
0230nobodyさん
04/07/21 14:08ID:???crypt使ってですよね?
0231nobodyさん
04/07/21 14:30ID:???cryptとか使ってないです
0232nobodyさん
04/07/21 14:49ID:???0233nobodyさん
04/07/21 15:17ID:???教えてください
0234nobodyさん
04/07/21 15:18ID:/GR6B3Fpfor($i=100;$i>=0;$i--)
{
require_once("res.inc");
$text[$i]=preg_replace_callback(
"|>([0-9]+)|",
"henkan",
$text[$i]);
print($text[$i]);
}
rec.inc の中身
<?php
function henkan($matches)
{
return "<a href=#$matches[1]><P title=$text[$i]>>".$matches[1]."</P></a>".($matches[2]);
}
?>
イメージ的にはこのように レス番号文字列にカーソルを合わせるとそのレス内容が表示され、
かつクリックするとそのリンクへ飛ぶという形にしたいのですが res.incないで$text[$i]が取得できません
文頭にrequire_once("right.php");としても結果は変わりませんでした。どのようにすればright.php内の
$text[$i]が取得できますか?ご教授くださいお願いします。
0236nobodyさん
04/07/21 15:47ID:???aタグの中にpタグを包含していいのか?
どうせなら aタグにtitleを書きゃいいじゃないか。
そんで、その程度ならpreg_replaceで十分だろ。
0237nobodyさん
04/07/21 15:49ID:???Pear
http://pc5.2ch.net/test/read.cgi/php/985665522/
0238nobodyさん
04/07/21 15:49ID:???0239nobodyさん
04/07/21 16:42ID:???md5が手軽でいいかと
0241nobodyさん
04/07/21 17:10ID:???HTTPヘッダのステータスをPHPのスクリプト内部から設定したいんだけど
どうしたらよろしいのでしょうか?具体的には、STATUSを500に設定したいのですけど。
header()関数あたりになにか入れればいいのでしょうか?
0243nobodyさん
04/07/21 17:37ID:???含まれるみたいなのですが、これはPHP4の時からそうなっていた
のでしょうか?
今まで気づかなかっただけか・・・^^;。
0245nobodyさん
04/07/21 18:37ID:???0247nobodyさん
04/07/21 18:51ID:???ttp://jp.php.net/manual/ja/security.php
0248nobodyさん
04/07/21 18:55ID:???PHP4でも含まれていたはずだけど、今まで無かったのなら↓これの所為では?
ttp://jp.php.net/manual/ja/ini.sect.data-handling.php#ini.variables-order
0249nobodyさん
04/07/21 18:57ID:???つか去年はどうして出れたんですか?
0250nobodyさん
04/07/21 19:02ID:???Part2 : http://pc.2ch.net/php/kako/1003/10032/1003283567.html
Part3 : http://pc.2ch.net/php/kako/1013/10139/1013919792.html
Part4 : http://pc.2ch.net/php/kako/1022/10229/1022999539.html
Part5 : http://pc.2ch.net/php/kako/1031/10317/1031721334.html
Part6 : http://pc5.2ch.net/php/kako/1038/10389/1038988518.html
Part7 : http://pc5.2ch.net/php/kako/1044/10444/1044478561.html
Part8 : http://pc5.2ch.net/php/kako/1050/10502/1050249148.html
Part9 : http://pc5.2ch.net/php/kako/1057/10579/1057947512.html
Part10: http://pc5.2ch.net/php/kako/1064/10641/1064104114.html
part11: http://pc5.2ch.net/php/kako/1067/10676/1067635640.html
part12: http://pc5.2ch.net/test/read.cgi/php/1070639208/
part13: http://pc5.2ch.net/test/read.cgi/php/1073291978/
part14: http://pc5.2ch.net/test/read.cgi/php/1076163015/
part15: http://pc5.2ch.net/test/read.cgi/php/1078592587/
part16: http://pc5.2ch.net/test/read.cgi/php/1081267619/
part17: http://pc5.2ch.net/test/read.cgi/php/1084781699/
0252nobodyさん
04/07/21 20:29ID:???0253nobodyさん
04/07/21 20:57ID:???0255nobodyさん
04/07/22 02:00ID:???0256nobodyさん
04/07/22 02:03ID:???header("Content-Type:text/plain");
$str1 = "http://end.com/マルチバイト";
$str2 = "マルチバイトhttp://end.com/";
if( mb_ereg("^マルチバイト",$str1) ){
print("\$str1 Hit : ^マルチバイト\n");
}
if( mb_ereg("^マルチバイト",$str2) ){
print("\$str2 Hit : ^マルチバイト\n");
}
?>
/* output
$str2 Hit : ^マルチバイト
*/
0257203
04/07/22 02:29ID:???遅れましたがとんくすです。
試しにレンタルしてる鯖でこっそり試してみたら小さいファイルだったら大丈夫そうですが、
RLimitCPUなんかよりもreadfileしたファイルがサイズ制限みたいなのを受けて落ちてきませんでした。
いろんな設定があるもんだなと思いました(自分apacheの設定深くはしらんので…)。
汎用性のあるものを作りたいので諦めました。また他の方法考えてみます。ありがとでした。
0258nobodyさん
04/07/22 03:07ID:???ttp://www5a.biglobe.ne.jp/~inano/jancode.html
というのは見つけたのですが、45/49で始まるもの以外も使うので
汎用的に使うにはちょっと難しい感じです。
どこかに転がっていないでしょうか?
0259nobodyさん
04/07/22 04:33ID:???<?
include("var.php");
include("format.php");
?>
とすればうまく表示できるんですけど
var.phpの方がいろいろ増えてvar-tarou.php、var-hanako.php、var-hiroyuki.php
みたいになった時、そのファイル名をテキストファイルvar.txtに1行ごと書いて
<?
$data = file ("var.txt");
for ($i=0;$i<3;$i++) {
include("$data[$i]");
include("format.php");
}
?>
とやったら
0260nobodyさん
04/07/22 04:36ID:???途中で送ってしまった・・・
それでこれでは間違ってるようなのですがどうすれば
var.txtに書いたファイル名を1行目から表示していけるか誰か教えてください。
あ、データベースは使えません。
0262nobodyさん
04/07/22 04:56ID:???0263234
04/07/22 05:19ID:O8WfHKX6$string = $text[$i];
$pattern = "|>([0-9]+)|";
$replacement = "<a href=#\${1} title=$text[\${1}]>>\${1}</a>";
print preg_replace($pattern, $replacement, $string);
前と同じような段階までは進むのですが title=$text[\${1}] やはり同じくこの部分で引っかかってしまいます。
エラーメッセージは
Parse error: parse error, unexpected T_CHARACTER, expecting T_STRING or T_VARIABLE or T_NUM_STRING
$textないをクオーテーション等でくくってみてもうまくいかず、アドバイスいただけたらと思います。
0264ちなみに
04/07/22 05:27ID:O8WfHKX6title=$text[10] 等書いてもその部分はコメントが出されません。
$text[10]には当然値は入っているのですが・・・
0265nobodyさん
04/07/22 06:16ID:???preg_replace_callbackを使って、コールバック関数内でglobal $text, $i;を宣言すればいい。
(元のfor文がグローバルスコープにあるのが前提だけど)
クラスを使えば変数のスコープに悩まされずに済む。
・・・それ以前にa要素のtitle属性に全文をぶち込もうという蛮勇のほうが問題と思うが。
しかもstrip_tagsもhtmlspecialcharsもかけずに。
ポップアップさせたいのならCSSとJavaScriptで対応した方がいいよ。
p2のソースとか参考にしる。
0266nobodyさん
04/07/22 08:11ID:???<?
$data = file ("var.txt");
for ($i=0;$i<3;$i++) {
include(rtrim("$data[$i]"));
include("format.php");
}
?>
>>263
$string = $text[$i];
$pattern = "|>([0-9]+)|e";
$replacement = '"<a href=\"#${1}\" title=\"" . htmlspecialchars($text[${1}]) . "\">${1}</a>"';
print preg_replace($pattern, $replacement, $string);
0267nobodyさん
04/07/22 11:32ID:???http://www.mribti.com/barcode/sample.php
バーコードのことは良くわかんない。
で、上のはブラウザ上でさくっと試せます。
あ、QR コード描きたいなぁ。と、ふと思った。
0268258
04/07/22 12:01ID:???そこも見つけてはいたんですが、JANコードに対応してないんですよ。
って、>>258で書きたいバーコード書いてませんでしたね。
JAN13 を書きたいんです。
そこだけ GD::Barcode で逃げるしかないかなぁ。ちょっと悔しいですが。
0269nobodyさん
04/07/22 12:22ID:IcVwk4jf$str = "<br />\n<br />\n<br />\n<br />\n<br />\n";
$str = mb_ereg_replace("^<br />", " <br />", $str);
print($str);
で、なんで下のようになるのよ。
<br />
<br />
<br />
<br />
<br />
本当に困ってます。お願いします。
0271nobodyさん
04/07/22 12:40ID:???こうしたいのかな。
$str = mb_ereg_replace("^<br />", " <br />", $str, "m");
それにしても、PHP マニュアルにマルチバイト正規表現のオプション説明は目立たない・・・。
0272nobodyさん
04/07/22 12:45ID:???GD使ってるなら JpGraph使えば?
ttp://www.aditus.nu/jpgraph/jpg_barcodes.php
0274軟式PHP
04/07/22 13:10ID:???0275nobodyさん
04/07/22 13:18ID:???0276nobodyさん
04/07/22 13:25ID:???緊急で困っています。
PHP4.0.6+IE6を使って開発しています。
何故か急にセッションが効かなくなりました。本当にいきなりです。
配列変数をセッションで保存しているのですが、例えば
$nm[0]〜$nm[10]まであるとして、配列に値を代入します。
$nmをセッション宣言して次のページに移動したときに
$nm[4]〜$nm[6]まで保存されてなく、他のは保存されているといった不可解な状態になっています。
$nmをモニタリングしたところ、移動元のページの最後では値は残っているけど、移動先のページの最初では
すでに値は消えているといった状態です。セッション宣言した配列変数の一部分だけ消えてしまうといった現象です。
ちなみに会社内の他のPCでは正常動作しています。自分のPCでは開発していて突然このような状態になりました。
また以前開発したモノも、その当時は正常動作していたのですが、試しにテストしてみたらそちらでもセッションが効かなく
なってしまっていました。
何か原因とかわかるでしょうか?
0277nobodyさん
04/07/22 13:31ID:???0279Imo ◆.jC7ANgFY.
04/07/22 13:46ID:???でついでにPHPAとか入ってるんじゃない?
そのときにはいったんPHPAのキャッシュを消すべし。
違ったらスルー
0280276
04/07/22 13:56ID:???試しにOPERA7でやってみたら正常に動作しました。
PHPAは入れていません。
0285nobodyさん
04/07/22 14:25ID:???!ereg(HP_BASE_URL,$_SERVER["HTTP_REFERER"])を
preg_match('/HP_BASE_URL/',$_SERVER["HTTP_REFERER"])
に書き換えようとしたのですが、preg_matchの方では定数が
上手く使えない様です。'/'.HP_BASE_URL.'/'
でもダメでした。preg_matchでは定数を利用する事が出来ない
のでしょうか?
0286269
04/07/22 14:50ID:???動きました。ああ、あなたは神です。アリガトン
>>271>>273
行頭改行に を入れたいんだよ。
でも、うちが使ってるサーバーではならなかったんだよ(;´д`)
0288nobodyさん
04/07/22 15:14ID:???0289nobodyさん
04/07/22 15:23ID:ZtAuJUSe$filepath = $save_dir2 . $filename;
$filebyte = FileSize($filepath);
$filekb = $filebyte/1024;
$filett = $filett+$filekb;
}
これでディレクトリの中のファイル容量を計算していて、これはこれで動くのですが
その後に
while ( $filename = $up_dir->read() ) {
$filepath = $up_dir2 . $filename;
$filebyte = FileSize($filepath);
$filekb = $filebyte/1024;
echo "<img src=\"$filepath\">".$filekb;
}
と、画像一覧を表示させようとするとエラーがでます。
最初の構文の最後に、$save_dir->close();を入れるとエラーはでませんが
画像もでてきません。
$filenameを2度読み込んでるからでしょうか?クマった・・
0290nobodyさん
04/07/22 15:24ID:ZtAuJUSeあぁ・・間違った。。訂正です・・
while ( $filename = $save_dir->read() ) {
$filepath = $save_dir2 . $filename;
↓
while ( $filename = $up_dir->read() ) {
$filepath = $up_dir2 . $filename;
すいません。
0293nobodyさん
04/07/22 15:58ID:???0294nobodyさん
04/07/22 16:09ID:???JpGraphが対応してるのは知らんかった。
2次元も作ったことあるけど仕様がカチッと決まってるし、
ゼロ作っちゃっても大したことないです。
決まった画像を並べて結合するだけですから。
読み取りは一般的なスキャナで図形として読み取って、
そこから補正かけて解析するのは、この手の扱いに慣れてないと
面倒かもしれん(そしてQRコードが良く出来ていることに気づく)
0295nobodyさん
04/07/22 16:09ID:???>$replacement = "<a href=#\${1} title=$text[\${1}]>>\${1}</a>";
単純にこの行で $text[\${1}] を展開しようとしているだけなんじゃ?
後方参照を展開しつつ、配列も展開するにはe修飾子を使うしかないかも。
とりあえず$text[]はサニタイズ済みだとすれば、
$string = $text[$i];
$pattern = "|>([0-9]+)|e";
$replacement = '"<a href=\"#$1\" title=\"$text[$1]\">>$1</a>"';
print preg_replace($pattern, $replacement, $string);
こうかな?つーかこれ、結構危険な気が・・・
0296nobodyさん
04/07/22 16:12ID:???$hoge = "a:\yamada";
$hogeを"a:\suzuki"に置換したい場合どうしたらいいでしょうか?
\が入っているとereg_replaceでうまく置換できませんでした
よろしくお願いします
0297296
04/07/22 16:19ID:???0298nobodyさん
04/07/22 16:48ID:???$regtimeが他の書き込みと重複する事ってない?
0300nobodyさん
04/07/22 16:57ID:???2ちゃんみたいにアクセス数が多けりゃカブりまくりだけど
お前の所みたいに月に1件くらいの書き込みなら心配ないんじゃないの?
0301nobodyさん
04/07/22 17:05ID:???0303nobodyさん
04/07/22 17:33ID:ZtAuJUSe_| ̄|円
0304nobodyさん
04/07/22 17:52ID:???PHP 側から見たファイルパスと Web 側から見たファイルパスは違うので画像が表示されないのは当然。
HTML で出力されたソースを見て画像の正しい位置を出力するようにしてみたら?
0305nobodyさん
04/07/22 17:58ID:ZtAuJUSeえーと、下の画像一覧表示の構文だけなら問題無く表示できます。
エラーの内容からすると、2回目のwhile ( $filename = $save_dir->read() ) {
が呼び出された時に呼び出しエラーがでてるみたいです・・
0306289
04/07/22 18:03ID:ZtAuJUSewhile ( $filename = $up_dir->read() ) {
$filepath = $up_dir2 . $filename;
$filebyte = FileSize($filepath);
$filekb = $filebyte/1024;
$filett = $filett+$filekb; //ファイル容量計算
}
〜この間にhtmlが入って〜
while ( $filename = $up_dir->read() ) {
$filepath = $up_dir2 . $filename;
$filebyte = FileSize($filepath);
$filekb = $filebyte/1024;
echo "<img src=\"$filepath\">".$filekb; //画像一覧
}
と。readを2回行っています。
どちらか一つならエラーはでず、思惑通り表示されます。
0307298
04/07/22 18:03ID:???ここのURLにもあるでしょ
time関数が!
0308nobodyさん
04/07/22 18:24ID:???time関数とか臭い
0309Imo ◆.jC7ANgFY.
04/07/22 18:27ID:???なんとなく邪道なサンプルをあげてみるテスト
while ( $filenames[] = $up_dir->read() ) {}
foreach ($filenames as $filename) {
$filepath = $up_dir2 . $filename;
$filebyte = FileSize($filepath);
$filekb = $filebyte/1024;
$filett = $filett+$filekb; //ファイル容量計算
}
〜この間にhtmlが入って〜
foreach ($filenames as $filename) {
$filepath = $up_dir2 . $filename;
$filebyte = FileSize($filepath);
$filekb = $filebyte/1024;
echo "<img src=\"$filepath\">".$filekb; //画像一覧
}
0310nobodyさん
04/07/22 18:29ID:???それなら $up_dir->close() をファイル容量計算の後に閉じないと $up_dir のポインタが最初に戻らないのでは?
filesize() あたりでエラーになっているとか。エラー内容を書けば分かると思うけど。
ディレクトリのファイル容量を知りたいだけだったら disk_free_space() という関数もあるけどね。
0312289
04/07/22 18:53ID:ZtAuJUSeすいません。。2回目リードの前に$up_dir=dir("img/")と再宣言してやったら、うまく行きました。
なぜ直ったかよくわかりませんが。。もっかいじっくり見てみます。
>>304
>>309
>>310
皆さん有難う御座いました。
disk_free_space() 楽そうな関数あるじゃん!って思って使ってみたら
わけわからん数字がでてきたので、詳しく調べてまた使ってみます^^;
0313nobodyさん
04/07/22 19:17ID:???phpの前に日本語のコミュニケーション技法を勉強する必要があるんじゃないの?w
msec単位ならまだしもsec単位で書き込みが重複するかどうかなんて、
ちょっと考えれば解りそうなもんだが
一意性を求めたいなら他に方法があるからマニュアル引いて自分で調べろや
0314nobodyさん
04/07/22 22:06ID:???0315nobodyさん
04/07/22 23:42ID:7BmR+CsIinput.php
<?php
echo <<<UPF
<form action="output.php" method="post">
<input type="file" name="upfile"><br>
<input type="submit" value="POST">
</form>
UPF;
?>
output.php
<?php
$outfile = $_POST['upfile'];
$file = @file($output);
print_r($file);
?>
じゃ、だめなの?
0316nobodyさん
04/07/22 23:54ID:???〃∩ ∧_∧
⊂⌒( ´・ω・)くぜんぶマニュアルに書いてあったでつ
`ヽ_っ⌒/⌒c
http://www.php.net/manual/ja/features.file-upload.php
0317nobodyさん
04/07/23 00:00ID:NhG7RjUM0319nobodyさん
04/07/23 13:07ID:???いらっしゃいましたら、教えて頂けると助かりますm(_ _)m
0320nobodyさん
04/07/23 13:13ID:???0321nobodyさん
04/07/23 13:39ID:???pack(), unpack() を調べてごらん。mp3 はそれで編集した。
WAV のフォーマットを聞きたいのであれば Google で。
0323nobodyさん
04/07/23 15:23ID:kRHOf0Jq0325nobodyさん
04/07/23 16:46ID:???1つの Apache に PHP4 と PHP5 をインストールして共存に成功したこと
はないけど、Apache を PHP4 用と PHP5 用に 2つ別ディレクトリに
インストールして別の Port 番号で PHP4 用と PHP5 用の Apache を同時に
起動させることは可能。
0327nobodyさん
04/07/24 06:05ID:4AWYwTYsindex.phpに
readfile("./$QUERY_STRING.txt");
って書いて、index.php?aを開いたらa.txtの内容が出てくる。
index.php?bを開いたらb.txtの内容が出てくる。
ここまでは分かったんですが、例えば、index.phpを開いた時に
txtファイルの一覧&リンクを出てくるようにして、クリックしたら、
一覧があった場所にa.txtの内容を表示するようにするにはどうしたらいいんでしょうか?
リンク一覧を作ってその後にreadfile("./$QUERY_STRING.txt");を書いてみたんですが
下にずらずら繋がっちゃって見た目がよくないんです。
親切な方教えてください。お願いします。
0328nobodyさん
04/07/24 06:12ID:???0329nobodyさん
04/07/24 07:05ID:???if (empty($QUERY_STRING)) echo リンク一覧;
とかそういうこと?
033017
04/07/24 09:53ID:???を
perg_replace("/((https?://|ftp://)([0-9a-z:_?./~%;()=+#-]|&)+)/","<a href='\\1' target='_blank'>\\1</a>",$sql['body']);
に置き換え(eregをpreg)たらUnknown modifierが発生するケースが出て来てしまいました
どんな文字が影響していると考えられるのでしょうか?
0331nobodyさん
04/07/24 10:18ID:???ext/pcre/php_pcre.c
マニュアルの言葉だと 内部オプション設定ってやつを処理する部分で、
内部オプションにないものを指定した時にエラーとして表示される。
どこかの「/」が邪魔してるんじゃないの?
つーか、オイラなら正規表現でエラーが出たら一文字ずつ削って動作確認するけどな
0332nobodyさん
04/07/24 10:32ID:???if($_POST['b1']){
//エラーチェック
if(empty($_POST["main"])){
echo "何も本文が入力されていません";
exit;
//データベース書き込み
}else{
$keyday = strftime("%Y/%m/%d %H:%M:%S",time()+3600);
if(empty($_POST["name"])){
$keyname = "無題";
}else{
$keyname = $_POST["name"];
}
$keymain = $_POST["main"];
$result = pg_query("select * from kadaidb;");
$rows = pg_numrows($result);
$rows++;
$radio = '<input type="radio" name="radio" value="$rows">';
pg_query("insert into kadaidb values ('$radio','$rows','$keyday','$keyname','$keymain');");
pg_freeresult($result);
print <<<END
<H2>送信しました</H2><BR><BR>
<H3>管理番号</H3> $rows<BR><BR>
<H3>日付</H3> $keyday<BR><BR>
<H3>タイトル</H3> $keyname<BR><BR>
<H3>本文</H3><BR> $keymain
END;
}
}
ラジオボタンのvalueに$rowsが反映されるようにしたいのですが,どうすればいいのでしょうか。
0333nobodyさん
04/07/24 10:51ID:???$rowsが変数として展開されずに そのままの文字列になってるってことかい?
文字列の中に変数を置いた時に ' と " では扱いが異なってくる。
〜 value="'.$rows.'">'; にでもすりゃェェんでないの?
0334nobodyさん
04/07/24 11:03ID:???なりました。ありがとうございます。
$radio = "<input type=\"radio\" name=\"radio\" value=\"$rows\">";
でいいじゃん。
つーかこれだと管理番号かぶるからちょっと見直した方がよくない?
0336nobodyさん
04/07/24 11:16ID:???if($_POST['del']){
$keydel = $_POST['radio'];
pg_query("delete from kadaidb where num=$keydel;");
}
を実行するようにすればいいかなっと思ったのですが,うまく動作しないみたいです…
0337nobodyさん
04/07/24 11:24ID:???Perlコーディングスレからのパクリだけど、
【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
未だに$_GET $_POST等を使用するメリットって何ですか?
みんなよく使ってるみたいだけど。参考↓
http://php.s3.to/man/language.variables.predefined.html
http://php.s3.to/man/function.import-request-variables.html
0340nobodyさん
04/07/24 11:32ID:???335さんに対して答えてるはずだったのですが,読み直してみたら,答えになっていませんね。
んもう,試行錯誤してたら昼・・・少し寝てからまた頑張ってみます。
スクリプト書いてたらテンパル事も
よくあるから気にしない。
336の部分はパッと見特に問題はないかと
0343Imo ◆.jC7ANgFY.
04/07/24 12:05ID:???それは$_REQUESTを使うべきではといいたいのですか?
COOKIEと重なるから私は嫌うのですがねぇ
import_request_variablesで展開すべきだといいたいのですか?
グローバル変数が勝手に埋められるのはあまり・・・
それとも$HTTP_GET_VARSを使うべきではといいたいのですか?
変数名が長いからあまり・・・
はたまた$_SERVERから必死に分解すべきだといいたいのですか?
perlと同じことしないとだめなんて・・・
これらと違うのなら何ですか?
0344550 ◆JirmzAivjs
04/07/24 12:25ID:???フムフム、つまり
$_POST,$GET,$_COOKIE ローカルで個別に参照
$_REQUEST ローカルで全部参照したい時
$HTTP_GET_VARS 使わない
$_SERVER PHPの意味が無い
import_request_variables 引き回したい時
でおk?
0345nobodyさん
04/07/24 12:39ID:???>>336?
もっと根本的なところでアレなのは諦めるとして、フォームでは
$cbox = "<input type=\"checkbox\" name=\"delete[]\" value=\"$rows\" />";
として、削除するコードは
if (isset($_POST['delete']) && is_array($_POST['delete']) && count($_POST['delete']) > 0) {
$keys = array_map('intval', $_POST['delete']);
$keys = array_uniquie($keys);
$key = implode(', ', $keys);
$query = "DELETE FROM ktaidb WHERE num IN ($key);";
$result = @pg_query($query);
/* エラーチェック省略 */
}
とした方が良いと思われ。(各関数はマニュアルで調べるべし)
>>332を見る限りではnum列をINTEGER型で定義してると思うんだけど、SERIAL型の方がいい。
あとね、いきなりDBを操作するコードを書くんじゃなしに
そのつど変数をvar_dump()して期待通りになってるかチェックしていったほうがいいよ。
>>◆JirmzAivj
何もかもだめぽ。
あなたに言われる筋合いは無い
0348nobodyさん
04/07/24 15:16ID:???細かいご指摘ありがとうございました。
削除コードの部分はなんとなく理解できました。
今までphpPgAdminでいちいちSQL文打って確認していましたが,var_dump()の方が数倍楽ですね。
結局寝損ねましたので,またがんばってみますm(_ _)m
0349nobodyさん
04/07/24 15:45ID:???よく分かっていないのだが、register_globalsはoffで使った方が初心者には良いってことか?
しかし、
http://php.s3.to/man/language.variables.predefined.html
これを読むと、さらに分からなくなる。誰か解説して。
0350nobodyさん
04/07/24 16:04ID:???ttp://shu.sub.jp/php/tips/1.php
0351nobodyさん
04/07/24 16:13ID:???ttp://www.sound-uz.jp/php/tips/security.html
Googleって便利だね。
0352nobodyさん
04/07/24 17:35ID:???"00012"の"0"の部分を削除して
"12"だけを取り出したいのですが、どうしてもわかりません。
substrで取り出すにも"12"の部分の桁は変化するので・・・。
よろしくお願いします。
0354nobodyさん
04/07/24 18:22ID:???0355nobodyさん
04/07/24 19:46ID:???未だにregister_globals=On前提のスクリプト書いてる香具師はマジヤバイ。
0357nobodyさん
04/07/24 20:19ID:???0358nobodyさん
04/07/24 20:26ID:???session_registerを使っているのもやばいな
>>357
マニュアル嫁
ttp://jp.php.net/manual/ja/ini.sect.data-handling.php#ini.register-globals
0359nobodyさん
04/07/24 23:38ID:rcqw39Y8たまにそういう表示してるサイトを見かけるんで、できるようなんですが。
0360nobodyさん
04/07/25 00:32ID:???0361263
04/07/25 03:17ID:ZfezmSNL教えていただいた方法で実現できました。だたこういった2chなどの匿名の掲示板と違い無記名ではない掲示板ですので
$name[$i]($text[$i]の$iと同じ要素に格納されている部分)もいっしょにポップアップ表示させたいと思っております。
可能でしょうか?
0364nobodyさん
04/07/25 04:59ID:???0365nobodyさん
04/07/25 05:12ID:???どうしたいのか判らんけど、
$replacement = '"<a href=\"#$1\" title=\"名前:$name[$1] 本文:$text[$1]\">>$1</a>"';
じゃだめなのか?
もっと複雑なポップアップをしたいのなら、以前に言われてたけど
ブラウザに任せずJavaScriptを使うべき。
そういや>>295でサニタイズ済みなことを前程にしているのだから、$patternは
$pattern = "|>([0-9]+)|e";
だったな(&の置換忘れ)
0366nobodyさん
04/07/25 05:56ID:FYTamtubrequire_once 'PEAR.php';
とかすると、バイナリ版使ってるためかソースが見つからず動作しない。
とりあえずソースだけ持ってこようと思ったんだけど、
どのソースを移せばいいのかよくわからない。
誰かたちけて。 PHP5です。
0367nobodyさん
04/07/25 06:17ID:???0368nobodyさん
04/07/25 09:25ID:???Windows版のほうはあんまり使ってなくてうろ覚えなんだけど、
php.iniでinclude_pathをC:\PHP\PEARとか、ちゃんと設定しる。
もしくはスクリプト冒頭でini_set('include_path', '.;D:\path\to\pear');とかそんな感じ。
0369nobodyさん
04/07/25 14:31ID:???global $hoge;
foo();
exit;
function foo(){
print ($hoge);
}
これは動きませんかね?
0370369
04/07/25 14:43ID:???これなら自分で確かめた方が早いです
0371369
04/07/25 15:01ID:???普段は偉ぶってるくせに無能揃いですね。
0372nobodyさん
04/07/25 15:15ID:???0373nobodyさん
04/07/25 16:17ID:???/ || ̄ ̄|| <⌒ヽ )) < >>371 はてさて、
| ||__|| < 丿 | どこを縦に読みゃいいんだ?
| ̄ ̄\三⊂/ ̄ ̄ ̄/ \___________
| | ( ./ /
0374nobodyさん
04/07/25 16:27ID:???0375369
04/07/25 19:37ID:???うちのお兄ちゃんは大学院に行ってるからはっきり言ってお前らより上。
もう偉ぶるのやめてね
0379nobodyさん
04/07/25 22:31ID:???今入退室を付けたチャットを作ってるんです。それで、入室時に名前、時刻、IPを
name<>date<>ip<改行>name<>date<>ip<改行>
の形式でログに保存して、最近の入室履歴ってことで、最新10まで[name 時刻:data]で表示させようと思います。
以下のでやってみたのですが、何も表示されず・・・。何が問題でしょうか。
$data = file('log.log');
for($i = 0;$i > 10;$i++){
$v = split('<>', $data[i]);
echo("$v[0] 時刻:$v[1]<br>");
}
0380379
04/07/25 22:35ID:???$v = split('<>', $data[i]);
↓
$v = split('<>', $data[$i]);
0381nobodyさん
04/07/25 22:45ID:???> for($i = 0;$i > 10;$i++){
このへん。
echoの中身も表示されないし、forループに問題があることにすぐ気づかないと。
0382379
04/07/25 22:49ID:???$i>10じゃ動くはずが無いと・・・。
どんなパズルもわかっちゃうと簡単すぎて笑っちゃうもんですね。
わざわざありがとうございました。
0384nobodyさん
04/07/26 00:03ID:???requireとrequire_onceはどう違うのでしょうか?
ヘルプを呼んだ限りでは、毎回読み込むか一回読み込むかの違いみたいに
書いてあったのですが、PHPはリクエストのたびにスクリプトを毎回読み込むのではないのですか?
一回しか読み込まないとはどういう動きをするのでしょうか?
0385nobodyさん
04/07/26 00:28ID:???0387nobodyさん
04/07/26 02:49ID:???すでにincludeしたファイルを再び読む込むように指定した場合の挙動の違い。
例えば、読むファイルをテンプレート代わりに使う場合はinclude、
共通ユーザー関数群の定義に使う場合はinclude_onceを使うといい
下手な釣りを見て思い出したが、PHPにはユーザーによる変数の
スーパーグローバル化やラベルジャンプがないのでちょっと困ることがあるな。
あれば楽できるのに・・・と思う局面がたまにある
0388nobodyさん
04/07/26 02:54ID:sMxRgzIjファイルをアップロードするスクリプトを組んでいるのですが、ファイルのサイズがある程度大きくなるとうまくいきません。
1) 651バイトの画像ファイルは正常にアップロードできました。
2) テスト用に文字列"1234567890"で埋めた 161,876バイトのテキストファイルは以下の様になります。
type : text/plain
size : 321880
error: 0
実際にUPされたファイルを見てみると
先頭に1,260バイト分 "1234567890"が入っていて次に
-----------------------------7d420b560c66
Content-Disposition: form-data; name="upfile"; filename="クライアント側のファイル名"
Content-Type: text/plain\r\n\r\n
その後最後まで"1234567890"が入っているようです。
(その後の部分は多いのでざっと目視しただけですが、少なくともodでダンプ取った範囲では 1164520=321,872まではデータが埋まってました)
環境は RedhatLinux9.0 PHP-4.2.2 Apache2.0.40 で
file_uploadsはOn
upload_max_filesizeは1M
に設定してあります。
同じスクリプトを別サーバにて動作させると正常に作動するのでどうにも原因がわからないです。
怪しそうな所をお教えください。
ちなみに動作するサーバでも似たような構成で動かしています。
RedhatLinux9.0 PHP-4.2.2-17(SRPMからMB_STRINGをONにして自分でコンパイルした)+ Apache2.0.40 です。
0389388
04/07/26 04:29ID:sMxRgzIj試にうまく動作している方のサーバから自分でビルドしたPHPのパッケージを動作していないサーバにFTPしてインストールしてみました。
php.iniもコピーしました。
結果は以前と同じでサイズが倍ほどに膨れます。
PHPの問題ではないみたいですね。
訳がわからなくなってきました。。
0390nobodyさん
04/07/26 05:49ID:IOiIX+Frvodafoneからだと見られないという報告を受けました。文字コードとうで
何か気をつけるべきことがあるのでしょうか?詳しい方教えてください。
0391nobodyさん
04/07/26 05:49ID:???POSTメソッドを使ったアップロードでFAQ的なところだけど。
0393nobodyさん
04/07/26 09:23ID:zfZRDkJ9ファイルのオーナーがapacheの実行オーナー(nobodyさん)になってしまいます。
これを、自分のアカウントがオーナーにしたいです。
また、ファイルの内容は変更することがあるので、その時には、ファイルのオーナーを
nobody さんに戻せないといけません。
よろしくおながいします。
0395nobodyさん
04/07/26 11:18ID:BnaAbQE9変数$foo['hoge'][$bar['huga']]を表記するにはどうすればいいですか?
単に、${foo['hoge'][$bar['huga']]}では
Parse error: parse error, expecting `'}''
となります。
0397nobodyさん
04/07/26 11:23ID:BnaAbQE9ありがとうございます。解決しました。
{$hoge[]}と${hoge[]}の文法的な違いってなんですか?
0398nobodyさん
04/07/26 11:32ID:zfZRDkJ9vodafoneのキャッシュ制限にひっかかってない?
非パケ端末は1ページ6kbyte以下ですよ。
0399nobodyさん
04/07/26 11:32ID:???マニュアルを読みましょう。「変数のパース」以下を読んでみて下さい。
http://www.php.net/manual/ja/language.types.string.php
0400nobodyさん
04/07/26 11:57ID:???まあ、一々宣言すればいいんだけど、$PHP_SELF位は
スーパーグローバルに登録された方が楽かな・・・とは思うもんで。
それともこういう書き方は(・A ・)イクナイ?
0401nobodyさん
04/07/26 13:06ID:U4MCK2zg1:タイムスタンプ名のディレクトリをumask設定してから作成
(他のサイトでumaskしたらいいと書かれていました)
$oldmask = umask(0);
$dir = mkdir($timestamp,0777);
umask($oldmask);
2:そのディレクトリに画像をアップ
3:$name = $dir."/1.jpg";
これでechoで$nameを出力させるときちんとjpg名が出力されるのですが、
is_file($name)等でファイルの存在を調べると、falseが返ってきます。
これはなぜなのでしょうか?知ってる方お願いします。
0402nobodyさん
04/07/26 13:20ID:???アップロード処理の例外処理とかちゃんとしてる?
0404nobodyさん
04/07/26 14:17ID:???Windowsではできてると言っているのに、、、
「Macでは試験したことが無いですが、Windows限定でよければ。」ってアフォか
0405nobodyさん
04/07/26 14:24ID:???そういうおもしろいのは↓へどうぞ
http://pc5.2ch.net/test/read.cgi/php/1090322290/
0406nobodyさん
04/07/26 14:29ID:???0407401
04/07/26 14:42ID:U4MCK2zg$nameを出力すると「123456789/1.jpg」みたいになります。
<img src=$name>
はきちんと画像が表示されます。画像はアップされています。FTPでも画像の存在を確認できます。
でもis_file($name)はfalseが返ってくるんです。
is_file("123456789/1.jpg") で確認するとTRUEなのですが、is_file($name)はFALSEなんです。
0408nobodyさん
04/07/26 15:07ID:???0409401
04/07/26 15:26ID:???フルパスでも無理でした。
mkdirで作成したディレクトリにあるファイルをis_fileで調べた場合FALSEを返すのでしょうか?
is_dir($dir)もFALSEでした。
※$dirにはmkdirで作成したディレクトリ名(フルパス)
0410nobodyさん
04/07/26 15:32ID:???0411nobodyさん
04/07/26 15:34ID:4tJVtMcehtmlspecialcharsを使うと♥等の文字実体参照ができなくなってしまうのですが、
対処方法はあるのでしょうか。
&amp;を全て&に変換してから表示させれば実現できることを確認しましたが
それだとhtmlspecialcharsの意味が無くなるし・・
よろしくおながいします。
0412401
04/07/26 15:42ID:???はい・・・file_existsもfilesizeも、mkdirで作成したディレクトリを含めその中にあるファイルの情報を
得ようとするとFALSEなんです。
if ( file_exists ( $name ) ) //FALSE
print "<img src='".$name."'>";//アップした画像が表示される
0413388
04/07/26 15:42ID:sMxRgzIjアドバイス有難うございます。
ApacheのPOSTデータの限度設定とはPHPのマニュアルサイトのUser Contributedにのっかっている
LimitRequestBodyのことでしょうか?
そちらを2Mで試してみていますがうまくいかないです。
0414nobodyさん
04/07/26 15:42ID:???0417nobodyさん
04/07/26 16:27ID:???そうそれ(うろ覚えでスマンね)。
現象が違う(倍に膨れる/該当するエラーが出てない)ので
違うとは思ったが、やっぱり関係ないね。
入ってるデータ見てるとWebクライアント自体がデータをマルチパート化して
その両方の形式とも送ってるみたい。使ってるのはIE?
別のWebクラインアントで試すか、送信データをキャプチャして見てみるのが良いかも。
0419nobodyさん
04/07/26 17:02ID:???0420nobodyさん
04/07/26 17:13ID:???自分もそんな気がしてるのですが、藁にもすがる思いで質問しました。
もう一度じっくり見直してみます。有難うございました。
0421nobodyさん
04/07/26 17:21ID:???401の$dir = mkdir($timestamp,0777);を実行して
$dirに作成したディレクトリ名が入るのか?
http://www.php.net/manual/ja/function.mkdir.php
0422nobodyさん
04/07/26 17:54ID:???0423nobodyさん
04/07/26 18:09ID:???>>412 の、これがわからんな
if ( file_exists ( $name ) ) //FALSE
print "<img src='".$name."'>";//アップした画像が表示される
0424nobodyさん
04/07/26 18:15ID:???と
>print "<img src='".$name."'>";//アップした画像が表示される
の参照ディレクトリが違うだけの話じゃないの?
0425nobodyさん
04/07/26 18:57ID:???読み取るにはどうすればよいでしょうか?
0427nobodyさん
04/07/26 19:11ID:???これで呼び出すと全部が変数に入るから
一番上のだけ読み込みたいと・・・
0428nobodyさん
04/07/26 19:12ID:???$msg[0]
0429nobodyさん
04/07/26 19:17ID:???「田中さん
山下さん
吉田さん」
だとすると
$msg = file(data.cgi);で
$msg[0] が田中さん
$msg[1] が山下さん
$msg[2] が吉田さん
となるのですか?
0430nobodyさん
04/07/26 19:17ID:???>is_file("123456789/1.jpg") で確認するとTRUEなのですが、is_file($name)はFALSEなんです。
↓は試した?
if ( "123456789/1.jpg" != $name ) echo '当然falseだ(゚Д゚ )ゴルァ!!';
>>411
適当に書いたので合ってるか分からんが、
$contents=preg_replace('/&([0-9a-z]+;)/i' ,'&$1', $contents);
等で、実体参照と思われる部分のみさらに置換し直す。
0432nobodyさん
04/07/26 19:24ID:???送信ボタンをクリックしたらAに1が
代入されるとかできますか?
0435nobodyさん
04/07/26 19:31ID:???0436nobodyさん
04/07/26 19:42ID:???$com = file($data);
$fp = fopen($data,"w");
fputs($fp, "$msg\n");
fclose($fp);
fputs(): supplied argument is not a valid stream resource
0437436
04/07/26 19:46ID:???0438436
04/07/26 19:48ID:???ヘルプキボンヌ
0439nobodyさん
04/07/26 19:50ID:???0440nobodyさん
04/07/26 19:53ID:???string(77) "やまもと,おはようございます,2004/07/26 19:52:51,YahooBB************.bbtec.net"
0441nobodyさん
04/07/26 20:10ID:???0442436
04/07/26 20:12ID:???ナンダコリャ
0443nobodyさん
04/07/26 20:33ID:???$fpか? まあ要はファイル開けないぞゴルァ!ってことだな。
if(!$fp=fopen($data,"w")){
echo "cannot open!";
}else{
fputs($fp, "$msg\n");
}
に変えて実行してみれ。
0444436
04/07/26 20:43ID:???0445nobodyさん
04/07/26 20:44ID:???if(!file_exists($data)){
echo "file not found."
}
だと思う。
typoしてないかどうかよーくソース眺めてみ。
0446436
04/07/26 20:46ID:???$dataではなく$logですた;;
0447nobodyさん
04/07/26 21:19ID:???おう、それと$fp=fopen($data,"w")だと$logの中身は常に最新の$msg一行だけになるから
$fp=fopen($data,"a");でオープンしとけ。
0449388
04/07/26 21:32ID:sMxRgzIjクライアントはIE6とネスケ7.1で試してます。
動いている方のサーバは
Redhat9.0を米国のスタッフが英語環境で(おそらくインターネットサーバとして)インストールして
その後、私がPHPをMB_STRING付&不要なオプションを削除してリビルド、
httpd.conf内の不要モジュール等の削除+バーチャルホストの設定を行っています。¥
ついでに手持ちのもう2台のサーバ(自分でRedhat9.0を日本語ベースでサーバインストール&PHPをMB_STRINGコンパイル
&apacheを上記サーバとほぼ同じ設定をしたもので試しましたがそちらでも動作しています。
対し動いて居ないサーバは
SAKURAインターネットのサーバでApache、PHPともインストールされたままのものを使用(1台はPHPのパッケージを昨日入れ替えました)
10Mプレミアムと10Mスタンダードの2台です。
普通に自力でやった物が動いていて、SAKURAのほうのみ動かない状況です。
これからTCPDUMPで内容解析してみます。
0450nobodyさん
04/07/26 21:44ID:???マニュアルちゃんと読んでない関数をよく使おうと思うな…
特に戻り値把握して無いって普通におかしいだろ?
その関数をそこで使おうと思った理由がスゲー気になる
0451388
04/07/26 21:57ID:sMxRgzIj概算ですが送信サイズは元のファイルのサイズです。
またhttpヘッダー部のダンプを見てみたところ
Content-Length:.162212 (PHP側では size : 321880と表示される)
の文字があったので送信されるHTTPヘッダーは正しいみたいです。
(まぁ同じクライアントで別サーバで動作するのでクライアント側から送信されるデータは正しいっぽいですね)
もう訳がわからなくなったので一度ApacheをSRPMからビルドしてみます。
0452388
04/07/26 22:19ID:sMxRgzIjhttpd.confのどこかに問題がありそうです。
これから箇所を特定してみます。
スレ違いになってしまいましたが箇所がわかったら書き込みますね。
0454388
04/07/26 22:45ID:sMxRgzIjAddType application/x-httpd-php .php
これを入れるとサイズが倍になります。。 う〜ん
たしかに自分で設定したほうには入れていなかったです。
これ設定しなくて良かったんでしたっけ?
ともあれ原因がこんな所にあるとは。。 奥が深いです。
アドバイスどうもありがとうございました。
0455nobodyさん
04/07/26 22:52ID:???アップロード元のhtmlで「enctype="multipart/form-data" 」
は指定されてるよね?
0456nobodyさん
04/07/26 22:59ID:???記述はいる筈だけど、それはRHL9(のRPMで入れた)なら
/etc/httpd/conf.d/php.confに書かれてるんじゃないかな。
.htaccessにも書けるし、設定は「上書き」であって
コンフリクトはしないと思うけど。
0457nobodyさん
04/07/26 23:10ID:ehBSQM9Lおながいします
0458Imo ◆.jC7ANgFY.
04/07/26 23:14ID:???所有者を自分にしたければCGI/perlから作ればよし。
0459388
04/07/26 23:19ID:sMxRgzIjもちろんマルチパートで送信しています。
手持ちのサーバの大部分はうまく動作しているのです。
最近引き継いだSAKURAインターネットのサーバのみダメな状態だったのです。
送信パケットでは正常なパケットを送信しつつ、ApacheからPHPにデータが渡る時点で倍に増えているような状況でした。
>454
php.conf にはAddTypeは書かれて居ないです。
入っていたのはLoadMduleとLimit関連、DirectoryIndexの3点だけでした。
grepしてみたのですが他にphpのAddTypeをしている箇所は無いようです。
何度か試しましたが[AddType application/x-httpd-php .php]を入れてhttpd再起動でサイズが倍に、
コメントアウトして再起動で正常なサイズでアップされます。
Apache,phpのバージョンの組み合わせの問題でしょうかね?
0460nobodyさん
04/07/26 23:42ID:???RedHat9にPHP4とGD入れるときのconfigureで、--with-gd --with-jpeg-dir=/usr/lib/したとき、
「configure: error: libjpeg.(a|so) not found.」ってエラー出る場合は、
「find /usr/lib -name libjpeg*」しても「libjpeg.so」が見つからないはず。
OSインストール時にパッケージの開発ツールで「Xソフトウェア開発」を入れれば解決。
</俺メモ>
0461nobodyさん
04/07/26 23:53ID:???RC1まではあってRC2で削除されたようですが。
よろしくお願いします。
#interfaceよりnamespaceの方が欲しかった・・・
0463nobodyさん
04/07/27 01:45ID:???0464nobodyさん
04/07/27 02:02ID:???0465nobodyさん
04/07/27 02:12ID:???あ,データA,データB,
い,データA,データB,
う,データA,データB,
としているデータを?id=あ
で一行目の列のみ検索して一致した場合その行のデータを取得して配列?に入れて表示したいんですけど教えて下さい。
適当に書いてみたんだけど↓(つд⊂)エーン全然ちがうよね??
<?PHP
$file_data = file("data.csv");
foreach ($file_data as $temp_line){
preg_match('/$id/',$temp_line,$parts);}
{
$parts = explode(",",$temp_line,4);
$name1[] = $parts[0];
$name2[] = $parts[1];
$recipe[] = $parts[2];
$comment[] = $parts[3];
}
?>
0466nobodyさん
04/07/27 04:03ID:???全然ダメ
そのものズバリ書くのも何なのでヒントを
preg_match の部分が変だし、preg_match は if 文じゃない。
foreach のループの中身もおかしい。
超初心者なら、まずプログラムの書き方を覚えないと
どっかで配布されているスクリプトを拾ってきて、それを読むのがいいかも
0467465です
04/07/27 05:13ID:???丁寧な解説ありがとうございます。
やはり基礎からやった方がいいのですね(ノД`)シクシク
頑張ってPHP覚えます。
あと、超初心者向けのPHP入門みたいなホームページをご存知でしたら教えて下さい。
0468nobodyさん
04/07/27 08:47ID:???0469nobodyさん
04/07/27 09:05ID:???コイツ最悪だ
0470nobodyさん
04/07/27 09:41ID:???スルーしとけば伸びてこないし何れ滅びる
0474nobodyさん
04/07/27 10:52ID:???includeで他ファイルを読み込むとき、
perlで書かれたCGIを呼び出すことは出来ますか?
試してみるとエラーが出たのですが、なにぶん初心者のため、
構文が誤っていた可能性もあって‥。
<? include("./cgi/bbs/bbs.cgi"); ?>
と記入したのですが
failed to open stream: Permission denied
for inclusion (include_path='.:/usr/local/lib/php')
の2つのエラーが出ました。
phpのパスが出ていたのでphpからperlは呼び出せないのかと‥
0475nobodyさん
04/07/27 10:54ID:???0476nobodyさん
04/07/27 10:57ID:???0477nobodyさん
04/07/27 11:06ID:???0478nobodyさん
04/07/27 11:09ID:???$id = $_GET['id'];
$file_data = file("data.csv");
foreach ($file_data as $temp_line){
if(preg_match("/$id/",$temp_line)){
$parts = explode(",",$temp_line);
$name1[] = $parts[0];
$name2[] = $parts[1];
$recipe[] = $parts[2];
$comment[] = $parts[3];
}
}
var_dump ($name1,$name2,$recipe,$comment);
?>
できたー俺もPHP勉強中!
0479軟式PHP
04/07/27 13:02ID:???$qvId = $_GET['id'];
$fp = fopen("data.csv","r") or die("(;´A`)");
while( $strData = fgetcsv( $fp, 1000, "," ) ){
if( $strData[0] == $qvId )
{
list($name1,$name2,$recipe,$comment) = $strData;
break;
}
}
fclose($fp);
echo $name1.$name2.$recipe.$comment;
?>
0480nobodyさん
04/07/27 14:19ID:???form から submit したときに文字化けします。
form のあるファイルは SJIS ですが、恐らく文字コードの問題ではないです。
文字化けというより、\記号(0x5C)もしくはそれを含む漢字の0x5C部分 がだぶって取得される、という現象です。
たとえばフォームに "\100" と入力すると、$HTTP_POST_VARS['xxx'] は "\\100" となりますし、
"ソノタ" を入力すると "ソ\ノタ" と取得されます("ソ" は SJIS で 0x83,0x5C)。
どこに問題があるかわかりますか?
0481480
04/07/27 14:20ID:uLhfG1jOageさせて。
0484nobodyさん
04/07/27 14:32ID:???URLを指定した、Webサーバ経由のincludeなら可能。
つまりcgiの出力結果のinclude。リモートファイルの
直接的なincludeになるので、セキュリティには気をつけること。
#リモートの出力が常に信頼できるものなら良いが。
0486Imo ◆.jC7ANgFY.
04/07/27 14:38ID:???ちょっと簡略化すればこんな感じかな。
$name1==$idの時という判断なら下のようなプログラムがいいかも。
# チェックせずベタで書いたから修正必要かもしれない
$id = preg_quote($_GET['id']); $k = ',([^\\,\\n]*)';
preg_match_all("/^($id)$k$k$k.*\$/m", file_get_contents('./data.csv'), $match, PREG_PATTERN_ORDER);
list($parts, $name1, $name2, $recipe, $comment) = $match;
var_dump($name1,$name2,$recipe,$comment);
0487軟式PHP
04/07/27 14:39ID:???0488Imo ◆.jC7ANgFY.
04/07/27 14:42ID:???こんなことしてみればいかが。# localhostについては検索すること。
include('http://localhost/〜');
でも出力だけしたいのであれば
echo file_get_contents('http://localhost/〜');
のほうがオススメ。
0489nobodyさん
04/07/27 14:52ID:VW36b+BW<IfModule mod_php4.c>
php_flag output_buffering Off
php_flag magic_quotes_gpc Off
php_value default_charset Shift_JIS
php_value mbstring.language Japanese
php_value mbstring.internal_encoding SJIS
php_value mbstring.http_input auto
php_value mbstring.http_output SJIS
php_flag mbstring.encoding_translation On
php_value mbstring.detect_order auto
php_value mbstring.substitute_character none
</IfModule>
文字コードをSJISで保存・出力したいのですが、これをディレクトリに置くと500エラーになってしまいます。
どうすれば良いでしょうか?
0490nobodyさん
04/07/27 15:01ID:???0492nobodyさん
04/07/27 16:02ID:???PHP+MySQLで日本語検索やりたいんですが、
レコード数が数十万件から100万件程度になると、
WHERE カラム名 LIKE '%検索したい文字%'
ってだけで救いようのないぐらい遅くなります。
なんかアイデア・対処方法は無いでしょうか?
MySQL頼みのFULLTEXTサーチは
日本語NGでしたし・・・。
0493492
04/07/27 16:11ID:???全角英数を半角にとか、
カタカナをひらがなにとか。
0494nobodyさん
04/07/27 16:16ID:???100万件でそんなに遅くなったっけか。Psqlなら遅くなりそうだが…。
インデックス効いてる?
0495492
04/07/27 16:27ID:???お返事ありがとうございます。
LIKE の 頭に ワイルドカードが入ると、
インデックスが効かないのです。
これはMySQLの仕様のようです。
100万件でインデックス効かないから遅いのは当たり前なんですが。
0496nobodyさん
04/07/27 16:40ID:???頭にワイルドカード入ってりゃ全件総ナメに決まってんべ
0497Imo ◆.jC7ANgFY.
04/07/27 16:44ID:???アイディアだけ。遅くなる率は高いけどもしかしたらというわけで。
・phpでbin2hexしたデータを追加し、それにFulltextIndexをかける。
データが2倍になるという欠点がある。
・2バイト文字列を2バイト英数字に変換し(不可逆)、それにFulltextIndexをかける。
意味不明なデーターがひっかかる可能性がある。
・独自で頻度表を作ってみる。
頻度表でどこまで処理できるかが問題。
・namazuを見習って単語リストを作ってみる。
とりあえず面倒。
0498492
04/07/27 16:54ID:???FulltextIndexですかね。やっぱり。
普通は LIKE '%キーワード%' よりは速くなるらしいですね。
ただ、スペースなどで単語を区切らないといけないので、
chasenとか外部プログラムが必要になるのですが、
ここら辺のサンプルなんか紹介しているようなWebページないでしょうか?
perlだと Text::ChaSenなんてモジュールがあるらしいですが・・・
0499nobodyさん
04/07/27 17:15ID:A3g22VFK上記のサイトを参考にして、複数のニュースサイトのヘッドラインを取得、
静的生成するスクリプトを作ってみました。
サイトを複数指定した場合、最終行に書かれたサイトのみしか取得できないのですが
どこか間違えているのでしょうか…?
どうぞ、ご教授お願い致します…。
sample.dat --------------------
%<a href=\"(.+?)\">(.+?)</a>%|http://www.yourdomain.com
%<a href=\"(.+?)\">(.+?)</a>%|http://www.hogehoge.net
0500nobodyさん
04/07/27 17:15ID:A3g22VFK<?php
define(HTML_FILE, "sample.html");//出力するファイル名
define(DAT_FILE, "sample.dat");//ログファイル
$urllist = file(DAT_FILE);
while(list(, $val)=each($urllist)) {
$list = explode("|", $val);
if ($fp = @fopen($list[1], "r")) {
while (!feof($fp)) $data .= fgets($fp, 1024);
fclose($fp);
}
$match_count = preg_match_all($list[0], $data, $items);
for ($i=0; $i< $match_count; $i++) {
$item_url = $items[1][$i];
$title = $items[2][$i];
$title = strip_tags($title);
$output .= "<a href=\""
.$item_url ."\" title=\""
.htmlspecialchars($title) ."\">"
.htmlspecialchars($title) ."</a><br>";
}
}
$fp = fopen(HTML_FILE,"w");
fputs($fp, $output);
fclose($fp);
?>
0501軟式PHP
04/07/27 17:45ID:???0502nobodyさん
04/07/27 18:06ID:???とりあえず、$dataの初期化が欲しいと違うことを言ってみる。
で、正解はファイル名に\nが入っているから。
0503nobodyさん
04/07/27 18:48ID:???printデバッグ汁
0504nobodyさん
04/07/27 19:21ID:???file() で読み込むと行の最後にある改行まで変数に入る。
rtrim() で不要な改行を取り除けば大丈夫。
$list = explode("|", rtrim($val));
0508nobodyさん
04/07/28 12:37ID:1Y3BKvIO職場で爆笑した責任を取ってもらおうか...
0509nobodyさん
04/07/28 13:52ID:???0510nobodyさん
04/07/28 20:43ID:???AddType text/html .php を記述すればphpがテキストとして
扱われると聞いたのですが、逆にテキストとして扱わない場合(PHPとして扱う)
はどういう書き方があるのでしょうか?
0511nobodyさん
04/07/28 20:46ID:EvRrHsANこれを 60 x 60 の画像に縮小→切り抜きし、abc001_a.jpg・abc002_a.jpgといった風に
リネームする必要ができました。
どうするのが一番効率が良いでしょうか?
縮小・リネームだけなら、ソフトとPerl・PHPスクリプトを連携して出来るのですが、
切り抜きが入ると、全く方法が思いつきません。どなたかご教授ください。
画像サイズは 160 x 120 とか、縦横比率がバラバラなので、切り抜きが必須なのです orz
0512511
04/07/28 20:47ID:???0513nobodyさん
04/07/28 20:54ID:???imagecopyあたりが適当じゃなかろうか?
0514nobodyさん
04/07/28 21:02ID:???してくれるのでしょうか?
それとも呼び出されたファイルだけでしょうか?
0515nobodyさん
04/07/28 21:22ID:???PHPをモジュールとして組み込んでいる場合は、application/x-httpd-php
CGIの場合は、application/x-httpd-cgiとすることもある。
(application/x-httpd-phpで処理させるように設定することも可)
0516nobodyさん
04/07/29 08:53ID:???タイプを固定する意味がないという。
0517軟式PHP
04/07/29 09:49ID:???0518nobodyさん
04/07/29 14:47ID:VlhsQ7NZregister_shutdown_functionで登録した関数呼び出されない?
0519nobodyさん
04/07/29 14:53ID:???0520nobodyさん
04/07/29 16:51ID:???0521nobodyさん
04/07/29 17:11ID:???関数のバイナリじゃなくて。
0522nobodyさん
04/07/29 17:11ID:???0523nobodyさん
04/07/29 17:27ID:???0524nobodyさん
04/07/29 17:42ID:???0525nobodyさん
04/07/29 17:45ID:???0526nobodyさん
04/07/29 18:00ID:???0527nobodyさん
04/07/29 22:38ID:???にファイルを添付したいのですが、これ可能でしょうか?
できるとしたら、どのエンコードをし、どういう送信ヘッダを作ればいいんでしょうか?
0528nobodyさん
04/07/29 23:17ID:???0530nobodyさん
04/07/29 23:43ID:b7+JpvL1以下プログラムを実行すると
Error while parsing the document\n
とエラーになってしまいます。
一体何がいけないのでしょうか?
<?php
if(!$dom = domxml_open_file("test.xml")) {
echo "Error while parsing the document\n";
exit;
}
?>
test.xml
<?xml version="1.0"?>
<root>
<test>this is test</test>
</root>
0531nobodyさん
04/07/29 23:43ID:???http://oshiete1.goo.ne.jp/kotaeru.php3?q=817797
>hogehoge.phpが、メールサーバーにソケット接続、マルチパート処理し、ウェブコンテンツを更新
ちょうど↑と同じようなことなんですが、
ケータイからメール(添付付)をメールサーバーに送り、phpが実行された時にPOPサーバーから受信、
同時に添付ファイルをエンコしてwebサーバーにPOSTし、本文には添付ファイルへのリンクなどを
挿入した状態でPOSTしたいと思ってます。
ケータイでの投稿に対応していないblogになんとかケータイから投稿したいと思ってます。
簡単に言うと写メールBBSのphpの機能にwebサーバーへのPOST的処理を付け加えたという感じです。
やはり、エンコードデータはブラウザに作らせないとダメなんですかね・・・。
0532nobodyさん
04/07/30 01:59ID:???fsockopen() とかを使って決まった形式でデータをエンコードして通信すれば可能。
フォーマットは RFC あたりを見て勉強するか、POST を行う際の通信データをキャプチャ
して解析すればできそう。
または curl 関数あたりを使ってもおそらく添付ファイル付きの POST は可能みたいな
感じがする。試していないので間違っているかもしれないけど。
でも、わざわざ POST しなくても FTP とか SCP でファイルとデータを送っても問題なさそう
な気がする。
0533nobodyさん
04/07/30 03:23ID:lnH8lc1CHTTPヘッダから取得するという方法では、対象が複数の場合、
非常に遅くなってしまいます。
他に方法はないでしょうか?どうぞよろしくお願いします
0535533
04/07/30 03:32ID:lnH8lc1C参考にしたページはこちらなんですが
もう少し簡略できませんでしょうか?
0537nobodyさん
04/07/30 03:57ID:???GETメソッドではなくてHEADメソッドで更新日時を取得する。
でも、まあ取得に時間が掛かるのは各々のHTTPコネクション
におけるネゴシエーション処理とかだから、別のプログラムを
組んで同時に複数処理するようにでもしないと、目に見えて
速くはならないよ。
0538537
04/07/30 04:00ID:???0539nobodyさん
04/07/30 05:12ID:mTOZKk4EWindows XP Home Edition のサーバーです。
unlink でファイルを削除しようとすると、
Permission denied とエラーが出てしまいます。
そのファイルのあるフォルダの読み取り専用属性のチェックは
はずしているのですが・・・。
0540539
04/07/30 05:29ID:???fcloseで閉じるのをわすれていました。
0541軟式PHP
04/07/30 09:15ID:???0542nobodyさん
04/07/30 09:41ID:Qj3jxbbrexecを使ってTXTファイルをPSファイルに変換すると
日本語部分が文字化けしてしまうんですが
なんとかならないものでしょうか??
コマンドラインからTXT>PSは文字化けしないのですが・・
0543nobodyさん
04/07/30 09:46ID:???どうやるのが理想的でしょうか?
1文字ずつ抜き出して<br>を加えて行くしかないのでしょうか?
0544nobodyさん
04/07/30 09:54ID:???$array = preg_split("//",$text);
$text = implode("<br>",$text,-1,PREG_SPRIT_NO_EMPTY);
0545nobodyさん
04/07/30 09:55ID:???$array = preg_split("//",$text,-1,PREG_SPRIT_NO_EMPTY);
$text = implode("<br>",$array);
0546nobodyさん
04/07/30 10:22ID:???早々なお返事、ありがとうございます。
教えて頂いたものを弄って動く様になりました。
PREG_SPRIT_NO_EMPTYというのが気になってぐぐって調べてみたのですが
ヒットしませんでしたし、私の環境では使えない様でした。
特殊環境なのでしょうか?。
0548nobodyさん
04/07/30 11:08ID:???HTMLに表示する時ってどうすればいいですか?
知ってる人教えて〜
0552nobodyさん
04/07/30 11:39ID:???デリミタが抜けている。
$text = preg_replace("/(.)/","$0<br>",$text);
でも、日本語が入る場合は、mb_ereg_replace を使った方が安全かも。
$text = mb_ereg_replace( "(.)", "\\1<br>", $s );
0553nobodyさん
04/07/30 11:57ID:8Ir+KZbtそんなことってあるのか?
0554548
04/07/30 11:58ID:???0556nobodyさん
04/07/30 12:24ID:T0I0w0s1環境変数LANGをチェックすべし
0557nobodyさん
04/07/30 16:09ID:???0558nobodyさん
04/07/30 16:19ID:35tZk6a5542です。
おっしゃるとおりでございました。
ありがとうございます。
0559nobodyさん
04/07/30 22:20ID:xMf/Vu/l画像はDBにぶち込まないほうがいいよw
0560nobodyさん
04/07/30 22:22ID:???RFCも見てみたんですが、boundaryの番号の生成法とか、バイナリデータをどう
エンコードしていいのかさっぱりなので、ヘッダを勝手に生成してくれるPerlでやってみようかと思います。
ありがとうございました。
0561nobodyさん
04/07/31 00:18ID:???http://abcd.com/test.php?hoge
このtest.php?の後は引数ということでよろしいでしょうか?
その場合test.phpの中でどのように引数を扱えますか?
やりたいことは<a href = "./test.php?hoge.jpg">hoge</a>を
クリックするとhoge.jpgを含むページを吐くようなものです。
0562Imo ◆.jC7ANgFY.
04/07/31 00:46ID:???普通は"test.php?file=hoge.jpg"のようにやります。
この場合は$_GET['file']で内容を取得できます。
もし"test.php?hoge.jpg"としてやりたいのであれば
$_SERVER['QUERY_STRING']を参照するとよいかと思います。
こちらの場合は特殊文字がエンコードされているので
解除する必要があります。(rawurldecode参照
0563nobodyさん
04/07/31 01:12ID:8q4uMfb8PCブラウザからは見られると報告を受けているHPが彼らのみ見られないようなのです。
もしくは何か使っちゃいけないTAGとか ファイルの大きさ制限とかあるんですか?
0566nobodyさん
04/07/31 04:19ID:EDchUNZZcase 'check':
$check = Check();
Abc($puni,$check);
break;
}
function Check(){
$check = 'あいうえお';
return $check;
}
function Abc($puni,$check="1"){
if($check == 1){
print "1です。";
}else{
print $check . "です。";
}
}
とやっても $check に 1 以外入らないんですけど、なんで?
0567nobodyさん
04/07/31 12:11ID:???bk($baka);
function bk($baka="1"){
echo $baka;
}
0568nobodyさん
04/07/31 16:57ID:???$data = "data.cgi"; //データファイル
if ($id != "" && $pass != "");
$file = file($data); //データファイルの読み込み
$count = count($file); //行数を数える
for($i=0;$i<$count;$i++){
list($name2,$hn2,$id2,$pass2,$mail2,$add2,$tel2,$level2,$point2,$host2,$time2)=split(",",$file[$i]);
if ($id == $id2){
if ($pass == $pass2){
//掲示板へ飛ぶ
}else{
print " <CENTER><font color=red>パスワードが違います</font></CENTER>";
}
}
}
?>
この場合、IDとPASSが合っていれば別のページに飛ぶようにしたいのですが
別にページに飛ぶための命令文がわかりません。
教えてください;;
0569nobodyさん
04/07/31 17:12ID:???それからパスはmd5とかでハッシュ値を取れ
0570568
04/07/31 18:56ID:???THX
print "$name01 $name02 $hn $id $pass $mail $age01 $age02 $age03 $add $tel";
if ($name01!=""&& $name02!=""&& $hn!=""&& $id!=""&& $pass!=""&& $mail!=""&& $age01!=""&& $age02!=""&& $age03!=""&& $add!=""&& $tel){
とやってみたんだがTRUEになんねーよ;;
ちゃんと全記入できてるのにな〜・・・
0572nobodyさん
04/07/31 19:50ID:???print "$name01 $name02 $hn $id $pass $mail $age01 $age02 $age03 $add $tel";
if ($name01!=""&& $name02!=""&& $hn!=""&& $id!=""&& $pass!=""&& $mail!=""&& $age01!=""&& $age02!=""&& $age03!=""&& $add!=""&& $tel != ""){
に修正しますた・・・無理ぽ、もうだめぽ_| ̄|○
0573nobodyさん
04/07/31 20:49ID:???headerは便利だから覚えておいたほうがいいよ。他にも色々あるし。
0575nobodyさん
04/07/31 20:53ID:???ちょっとはHTTP勉強してね
0576nobodyさん
04/07/31 21:05ID:???ここでお勉強しなさいよ
0578nobodyさん
04/07/31 21:10ID:???0579nobodyさん
04/07/31 21:21ID:???0581nobodyさん
04/07/31 23:19ID:WRy9c9NNif文は不安な時は、()でくくるのが吉。
if ( ( $name01!="" ) && ( $name02!="" ) )
みたいに
0582nobodyさん
04/07/31 23:24ID:???0583nobodyさん
04/08/01 00:23ID:???0584nobodyさん
04/08/01 00:25ID:???わかりにくいと思いますので詳しく
自分が何というファイル名かわからないとき
自分のファイル名を取得したい
0585nobodyさん
04/08/01 00:30ID:???ttp://www.php.net/manual/ja/reserved.variables.php#reserved.variables.server
0587nobodyさん
04/08/01 01:10ID:???http://www.ii-park.net/~goldred/ero-box/001.jpg
http://www.ii-park.net/~goldred/ero-box/002.jpg
http://www.ii-park.net/~goldred/ero-box/003.jpg
0588nobodyさん
04/08/01 01:11ID:???0589nobodyさん
04/08/01 01:38ID:???PHPをコマンドライン側で実行する場合、$_SERVERの代用として
なんという変数を使えばいいんですか?
ついでにageさせてください。
0590nobodyさん
04/08/01 01:55ID:???0591589
04/08/01 01:56ID:???$_SERVER -> $_SERVER['PHP_SELF'] です。
本当にすみません。。
0592nobodyさん
04/08/01 02:03ID:???うちはApache2+PHP4.3xなんだけど、使ってて動作おかしいとかない?
0594nobodyさん
04/08/01 03:10ID:???動作エラーを詳しく言えばいいのかな?
「Notice: Undefined variable: input_len文字までです。 in /www/xxx/yyy.php on line 498」
っていうエラーが出てきて、その行は
「show_error_msg("コメントは$input_len文字までです。");」
ってなってる。
コンパイラが「input_len文字までです。」を1つの変数と誤認識したんじゃないかと疑ってるのだが。
こんなの出るようなら評判悪いかなぁと思って、動作おかしいとかないか聞いてみた
0595nobodyさん
04/08/01 03:14ID:???PHPAもZend Optimizerもプログラムの作りによっては、
動作おかしいというか、落ちることがあるよ。
完全に互換性がある訳じゃない。
使う場合はちゃんとテストした方が良いよ。
0596nobodyさん
04/08/01 04:50ID:???$data_file = "./$chat/log.cgi";にしているのですが
$chat がどうしても空白になります。
なぜでしょうか?
0597596
04/08/01 04:53ID:???$data_file = "./$chat/log.cgi";
にすれば「mattari」と表示されました・・・
0598nobodyさん
04/08/01 05:16ID:???$foo = /{$_GET['chat']}/log.cgi
にしる。
register_variablesをOffにした方がいいぞ
0599598
04/08/01 05:17ID:???0601nobodyさん
04/08/01 06:03ID:???0602nobodyさん
04/08/01 07:17ID:???0603nobodyさん
04/08/01 07:34ID:???0604nobodyさん
04/08/01 08:35ID:???出来ないのでしょうか?
class a{
function b{
include_once('inc_php');
}
}
#inc_php
function j(){
echo '123456789';
}
0605nobodyさん
04/08/01 09:17ID:???その書き方だと、function b の中に function j が入ってくることになるよ。
class a{
function j(){
include_once('inc_php');
}
}
# inc_php
echo '123456789';
キレイにしたいならstrategyパターンあたりを使えばええんでないの?
0606nobodyさん
04/08/01 09:38ID:???そうではなくて、includeした時に結果としてclass内の関数として
includeする方法がないものかと想いまして質問させて頂いております。
[結果イメージ]
class a{
function b{
}
function j(){
echo '123456789';
}
}
0607nobodyさん
04/08/01 10:14ID:???ページ2でprint $name;
ページ3で$nameを表示しようとしたらできないぽ;;
0609nobodyさん
04/08/01 13:41ID:???EUCで書けば多分日本語関係のエラーはほとんど潰れると思う。
SJIS使うなら変数は{$hoge}と括弧でくくっとこう。${hoge}だったかもしれんが。
print "コメントは".$input_len."文字までです。";でもOK。
0610nobodyさん
04/08/01 15:23ID:???0611nobodyさん
04/08/01 16:03ID:6iApVh2k<ITEM>
<CATEGORY Num="01">その他</CATEGORY>
<CATEGORY Num="02">その他2</CATEGORY>
</ITEM>
これに<CATEGORY Num="03">その他2</CATEGORY>を書き込みたいのですが
</ITEM>の後ろにしか書込めません。
</ITEM>の手前にポインタを移動する方法を教えて下さい。
fseekっていうのじゃ無理ですよね?
0613Imo ◆.jC7ANgFY.
04/08/01 16:24ID:???ちょっとヒント。
ob_start関数、これを使えばseekのようなことはできないとしても
期待した結果に持っていくことはできますよ。
0614Imo ◆.jC7ANgFY.
04/08/01 16:30ID:???両方可能ですよ。
それと参考までに、
2次元配列使うときは必ず{}でかこまなければなりません。
もしも「echo "ほげ$hoge[1][0]ほげ";」と書いた場合は
echo 'ほげ' . $hoge[1] . '[0]ほげ';と等価になり
「ほげArray[0]ほげ」と出力してしまいます。
echo "ほげ{$hoge[1][0]}ほげ";と書くのが正しい方法です。
0615Imo ◆.jC7ANgFY.
04/08/01 16:40ID:???マニュアルには以下のようにかかれています。
「複数のファイルや複数のPHPブロックで分割してクラス
を定義定義することは できません。」
とはいっても似た処理として、
extends(クラスの継承)を使う方法がありますので
そちらを一度は見てみる価値はありそうです。
0616nobodyさん
04/08/01 17:08ID:???アフォか。そんな言語使用イヤ過ぎる。
普通にやれよ。
funciton hoge($params)
{
require_once('hoge.func.php');
return hoge($params);
}
0617611
04/08/01 17:12ID:6iApVh2kマニュアルには出力のバッファリングを有効にするとあるのですが、
これでポインタ移動できるんでしょうか?
「ob_start ポインタ」でググってもそれらしき記述が見つからないのですが、、、
0618Imo ◆.jC7ANgFY.
04/08/01 17:48ID:???一応こんなことができますよ。
ob_start();
echo <<<EOM
<?xml version="1.0" encoding="UTF-8"?>
<ITEM>
<CATEGORY Num="01">その他</CATEGORY>
<CATEGORY Num="02">その他2</CATEGORY>
</ITEM>
EOM;
$data = ob_get_clean();
echo substr_replace($data,
"<CATEGORY Num=\"03\">その他3</CATEGORY>\n",
strrpos($data, '</ITEM>'), 0);
0619nobodyさん
04/08/01 18:03ID:???マニュアルのそれは昔に読んだんですよね
funcitonをclass内に読み込み方法があればclass外のfunciton
と競合しないですむので理想的と考え質問したのですが、
それは出来ないみたいですね。
extendsを調べてみます^^ありがとうございます。
>>616
require_once()とinclude_once()の差はエラー時の処理の差で
しかないと記憶しているのですが違いましたか?
アフォな理由を説明してくれ!
0620611
04/08/01 18:11ID:6iApVh2kすいません説明不足でした。
送信されてきた<CATEGORY Num="03">その他2</CATEGORY>を
<?xml version="1.0" encoding="UTF-8"?>
<ITEM>
<CATEGORY Num="01">その他</CATEGORY>
<CATEGORY Num="02">その他2</CATEGORY>
</ITEM>
と書かれているxmlファイルに書き足したいのです。
0621nobodyさん
04/08/01 18:12ID:???何でそこに反応するかな。
> return hoge($params);
のように以降の処理を普通に実装すりゃいいだけだろう。
0622Imo ◆.jC7ANgFY.
04/08/01 18:23ID:???いったんファイルをすべて読んでしまってから書き換えて出力するしかありませんね。
文字の挿入に関してはsubstr_replaceを見ておくといいかと思います。
# fseekで位置を移動するにも場所を知る必要性があるのであらかじめ全部読み取ったほうがいいです。
# fseekの場合</ITEM>に上書きしてしまいますし、、、
0623nobodyさん
04/08/01 18:41ID:???あぁ、funciton内で他のfuncitonを呼ぶのがですね^^;。
requireするファイルを絶対パスで実行されると不都合なファイルが
あるからなんですが構造として美しいものではありませんね。
0625nobodyさん
04/08/01 20:05ID:???・2重投稿の防止
・連続投稿の防止
・書き込みした内容の編集
・書き込みした内容の削除
当方激しく初心者です;;
もしよければアドバイスお願いします・・・
0626nobodyさん
04/08/01 20:11ID:???>・2重投稿の防止
>・連続投稿の防止
>・書き込みした内容の編集
>・書き込みした内容の削除
この機能を除いた掲示板はもうできたのか?
0628nobodyさん
04/08/01 20:16ID:???0629625
04/08/01 20:18ID:???みたいな感じかな・・・
0630nobodyさん
04/08/01 20:19ID:???0631625
04/08/01 20:20ID:???すまん、初めて聞いた_| ̄|○
0633nobodyさん
04/08/01 20:47ID:???どのようして削除、編集するコメントを
指示するのか考えなかった?
0634nobodyさん
04/08/01 22:16ID:2fDXisU00635nobodyさん
04/08/01 22:21ID:???っておかしな言葉だな。
<?
require("hogehoge.cgi");
?>
であかんのかい?
0636634
04/08/01 22:28ID:2fDXisU0実行結果を表示させたいのですが。
0638nobodyさん
04/08/01 23:03ID:???どうすればよいでしょうか?
0639nobodyさん
04/08/01 23:12ID:???そのクエリーをphpMyAdminで送ったら正常動作する。
そういう経験ありますか?今これではまってます。助けて。
MySQLサーバーは3.23, phpは5.00ダー。
0641Imo ◆.jC7ANgFY.
04/08/01 23:16ID:???もしかして複数行送ったりとかしてないですよね?
>>638
削除するならば
@unlink('./log.cgi');
0Byteにするならば
fclose(fopen('./log.cgi', 'w'));
0642639
04/08/01 23:19ID:???0643634
04/08/01 23:23ID:2fDXisU0507さん教えてください。
0644nobodyさん
04/08/02 02:36ID:???これだから厨コテは
0646nobodyさん
04/08/02 03:52ID:???つーかあれクラス内の関数とか言ってるし関数とメソッドの区別がついとらんだけやろ
最初理解不能だったので、グローバルスコープ要素をクラスメンバにしようっていう
発想の凄まじさは認めたいが、、なんかどの初心者も俺を置いて遥か彼方に旅立っ
ていってしまうよ
0647nobodyさん
04/08/02 04:05ID:???やったことあると思うが開いてるならゼロにftruncateすればいい。
ついでにこれを機会にマニュアル読むようになったほうがいいよ。
0648nobodyさん
04/08/02 05:24ID:???意外と・・・
0649nobodyさん
04/08/02 08:23ID:???#記事書き込み処理
if ($action == "書き込み"){
if ($name == ""){
print " </CENTER>ERROR:名前が記入されていません";
}elseif ($comment == ""){
print " </CENTER>ERROR:コメントが記述されていません";
}else{
if ($subject == ""){
$subject = "無題";
}else{}
}
}
書き込みボタンを押したんだが記事書き込み処理
が無反応です。なぜかactionに書き込みが入らない模様・・・
ナゼダ!!!!!!!!!!!
0650nobodyさん
04/08/02 08:36ID:???メンバ関数と呼ばれるケースもあるしな
0651nobodyさん
04/08/02 08:39ID:???$_POST['action'],$_GET['action'],$_REQUEST['action']
のどれかの中身を覗いてみそ
0652649
04/08/02 09:01ID:???0653nobodyさん
04/08/02 09:06ID:???ん、フォームの方かな^^;
<INPUT type="submit" name="action" value="書き込み">
だけ書いてもダメだよ
<form method='POST' action='filename'>
<INPUT type="submit" name="action" value="書き込み">
</form>
としましょう
0654649
04/08/02 09:15ID:???<INPUT type="submit" name="action" value="書き込み">
</FORM>
とりあえずFORMです・・・
これでもぬるぽ_| ̄|◎
0655649
04/08/02 09:17ID:???どうやら使っているPHPエディタが問題のようです;;
ありでした〜
0656nobodyさん
04/08/02 09:21ID:???PHP全体は、ひとつのプロセスが終ってから次のプロセスを実行するのでしょうか?
テキストファイルに、ただ10000回ほど読み込んだ物をまた上書きするだけのスクリプトを書き、
3,4窓で同時に回したのですが、どうも終ってから動き出しているような気がしてなりません。
ファイルロック用の関数を外した場合でも同じようでした。
そもそもテストの仕方が間違っているのかもしれません;;
環境はWindowsXP、AnHttpd、PHP4.3.2です。(同じPC、同じブラウザ)
また、正しいファイルロックのテストの方法を教えていただけたら幸いです…。
0658655
04/08/02 09:42ID:???0659nobodyさん
04/08/02 09:57ID:???まず WindowsXP、AnHttpd、PHP4.3.2 を
*BSDもしくはLinux、Apache 1.3.31、PHP 4.3.8 に変えてはどうでしょう?
#OSはともかく、httpdとPHPはマジ。
で、ロックをかけたとき、書き込み中、ロックを解除したときに何らかの出力をさせると良いかと。
あと書き込み中にusleep()してわざと処理に時間がかかるようにすると分かりやすいかも。
flock($fp, LOCK_UN);し忘れてるってのは無しの方向でよろ。
0660nobodyさん
04/08/02 09:58ID:???#記事の読み込み
$message = file($logfile);
$count = count($message);
if ($count>=$page){
$count = $page;
}
for ($i=0;$i < $count;$i++){
list($no2,$name2,$mail2,$subject2,$comment2,$time2,$host2) = split( ",", $message[$i]);
print " <FONT size=2>$no2</FONT><INPUT type=checkbox name=edit value=$no2> <font size=bSize color=$tCol><b>$title2</b></font>";
if ($mail != ""){
print " <FONT size=2>投稿者:<A href=mailto:$mail2>$name</A></FONT><BR>";
}else{
print " <FONT size=2>投稿者:$name2</FONT><BR>";
}
print " <font size=bSize color=$color>$comment2</font>";
}
?>
HTML内に上を記述するとページが何も表示されなくなりました・・・
なぜでしょうか・・・
0661Imo ◆.jC7ANgFY.
04/08/02 10:02ID:???if ($count>=$page){
$count = $page;
}
ここで$countがリセットされているようですよ。
0663Imo ◆.jC7ANgFY.
04/08/02 10:08ID:???それと正しいファイルのロック方法は
$fn = fopen($file, 'w');
flock($fn, LOCK_EX);
fwrite($fn, $data);
fclose($fn);
ではなく
$fn = fopen($file, file_exists($file) ? 'r+' : 'w+');
if (flock($fn, LOCK_EX)) {
ftruncate($fn, 0); rewind($fn);
fwrite($fn, $data);
} else {
// ロック失敗
}
fclose($fn);
ですよ。ロックは失敗する可能性もあります。
0664nobodyさん
04/08/02 11:01ID:FFy40LXRcgiとphpを使っていますが、
cgiファイルを使って、一部phpファイルを使いたいです。
たとえばcgi掲示板の中にphp表示(例えば別の掲示板も表示)するとか・・・
ご指導ください。
0665nobodyさん
04/08/02 11:09ID:???0667nobodyさん
04/08/02 11:16ID:???バグフィクスされてるのでPHPを4.3.8にするのも忘れずにがんがってください。
下記URIがApacheとPHP4.3.8のインストールに良さげと思った。
ttp://allabout.co.jp/career/database/closeup/CU20031114/
ちなみにイモ回答者の言うことは微妙に間違ってるから信じちゃだめですよ。
0668nobodyさん
04/08/02 12:49ID:???http://members.home.nl/saen/Special/Zoeken.swf
PHPで実現するにはどうすればよいのでしょうか?
0671nobodyさん
04/08/02 13:11ID:???セッションIDだけはクリアせずそのまま使用したいのですが
何かいい方法はないでしょうか?
現在はsession_unsetを使ってクリアしようとしています。
0672660
04/08/02 13:43ID:???if ($count>=$page){
$count = $page;
}
もし$pageより$countのがでかければ
$countに$pageを代入したいのですが・・・
0673660
04/08/02 13:51ID:???しかしこんなバグが残ってしまいました
Aを書き込みする、Bを書き込みすると更にAが書き込みされる・・・
なーぜだああああああああああ
0674660
04/08/02 13:58ID:???list($no2,$name2,$mail2,$subject2,$comment2,$time2,$host2) = split( ",", $message[0]);
if ($no2 == ""){
$no = 1;
}else{
$no = $no2+1;
}
if ($name != $name2 && $comment != $comment2){
$put = implode(",", array($no,$name,$mail,$subject,$comment,$time,$host,$color,$pass));
$message = file($logfile);
$fp = fopen($logfile, "a");
rewind($fp);
fputs($fp, "$put\n");
if($max <= sizeof($message))
$num = $max - 1;
else
$num = sizeof($message);
for($i = 0; $i < $num; $i++){
fputs($fp, $message[$i]);
}
fclose($fp);
$taju = 0;
unset($message);
}else{
$taju = 1;
}
0675nobodyさん
04/08/02 13:59ID:???0676nobodyさん
04/08/02 14:01ID:FFy40LXRcgiの外部コマンドでphpを呼び出せるそうですが、
出来るんですね。ただ解説しているサイトがない・・・_| ̄|○
0677nobodyさん
04/08/02 14:06ID:???0678nobodyさん
04/08/02 14:23ID:FFy40LXR#!/usr/local/bin/perl
$command = `php file.php?q=php&hl=ja&lr=lang_ja`;
print "Content-type: text/html\n\n";
print "<HTML><HEAD><TITLE>結果</TITLE></HEAD>\n";
print "<BODY BGCOLOR=\"#ffffff\">\n";
print "$command\n";
print "</BODY></HTML>\n";
でよろしいでしょうか?
0679nobodyさん
04/08/02 14:28ID:9GDxpHGwどうしたら良いですか?
0680662
04/08/02 14:31ID:???サンプルコード有難う御座います。
ロック機能本体についても勉強中です。
>>667
半日かけてなんとかApach導入できました(汗
結果、恐らく今度は同時に動いており、ロック外した状態でリセットされまくりでした。良かったです。
0681nobodyさん
04/08/02 14:36ID:lglFWosb<input type="file">形式で、アップロードされた画像は添付できるのですが
元々サーバ上にある特定の画像を添付してメールしたいのです。
0682nobodyさん
04/08/02 14:58ID:???アップロードされた画像を添付できるなら、もともとある画像の添付もわけないと思うが、
ひょっとしてアップロードされた画像をメール配送するスクリプトをどこかでひらってきただけか?
なんか、丸投げのヨカソ。
PEARのMail_mimeでも使えばよろしいかと。
0683nobodyさん
04/08/02 15:03ID:N/tiSL6x表示されないとき、上記のHPを見ると以下のようなソースが書いてありました。このようなHPを多くの人が見れるように改善するときに、最小限の修正をするとしたら、どういった改善方法をとれば、いいのでしょうか。詳しくは、ソースを見てください
0685>>674
04/08/02 15:23ID:???0686nobodyさん
04/08/02 15:42ID:???長さは保持してるのかいな。
最初に確保されるメモリーのサイズは?
CopyOnWriteで実装されてるのか、そうじゃないのか。
0689nobodyさん
04/08/02 15:48ID:???PEAR使わないなら自分でBoundaryを作ってマルチパートに埋め込んで
送るしかないなぁ。俺は一応その手のライブラリ作ってるけどPEARのが便利だね( ´-ω-)y‐┛~~
勉強にはなったけど。
0690nobodyさん
04/08/02 16:01ID:???aとwの違いってなんですか?
0691nobodyさん
04/08/02 16:07ID:???0692nobodyさん
04/08/02 16:31ID:???if ($action=="記事削除"){
$fp = fopen($logfile, "w");
$message = file($logfile);
fclose(fopen("$logfile", 'w'));
if($max <= count($message)){
$num = $max - 1;
}else{
$num = count($message);
}
for($i = 0; $i < $num; $i++){
list($no2,$name2,$mail2,$subject2,$comment2,$time2,$host2,$color2,$pass2) = split( ",", $message[$i]);
if ($number==$no2){
if ($inpass==$pass2){
fputs($fp, $message[$i]);
}else{
$nopass=1;
}
}
}
fclose($fp);
}
記事削除する文打ったつもりなんだが
「記事削除」を押すとパス違ってても全ての記事が消えてしまう・・・
HELPME!!!
0693Imo ◆.jC7ANgFY.
04/08/02 16:36ID:???マニュアルには以下のように書いてありますので
私の書いた処理でもファイルを0Byteすることはできます。
'w' 書きこみのみでオープンします。
ファイルポインタをファイルの先頭に置き、
"ファイルサイズをゼロにします"。
ファイルが存在しない 場合には、作成を試みます。
0694nobodyさん
04/08/02 16:41ID:???マニュアルのセッションの章を全部読んでください。
>>679
PHPの関数には無いようなので、JPEGのフォーマットを調べて
ファイル関数群を使って書き込むことになります。
誰か作って公開してるかも知れんけどね。
>>686
実装が気になる場合はソース嫁
0696Imo ◆.jC7ANgFY.
04/08/02 16:49ID:???$fp = fopen($logfile, "w");
$message = file($logfile);
ここの部分がおかしいですよ。
0697692
04/08/02 17:03ID:???#記事削除
if ($action=="記事削除"){
$message = file($logfile);
fclose(fopen("$logfile", 'w'));
if($max <= count($message)){
$num = $max - 1;
}else{
$num = count($message);
}
for($i = 0; $i < $num; $i++){
print "1 $no2 2 $number 3 $inpass 4 $pass2";
list($no2,$name2,$mail2,$subject2,$comment2,$time2,$host2,$color2,$pass2) = split( ",", $message[$i]);
if ($number==$no2 && $inpass==$pass2){
}else{
$fp = fopen($logfile, "w");
rewind($fp);
fputs($fp, $message[$i]);
fclose($fp);
}
}
}
にしたのですが、記事が消えません;;
パスあってるのに〜;;
0698Imo ◆.jC7ANgFY.
04/08/02 17:03ID:???ファイルを開いているときの0Byteにする場合はftruncate関数を使います。
ファイルを開いていない場合は'w'モードで開くだけで0Byteになります。
'w'モードで開いた時点でファイルは0Byteになります。
その後にファイルを読み込むと0Byteの文字列が返されることになります。
0699Imo ◆.jC7ANgFY.
04/08/02 17:08ID:???私がふとそのまま書いたらこんな感じになります。
とはいってもこれを直接使うといろいろ面倒なので
このソースを見て何かを得てみてください。
あくまで参考までに、、、、
$fn = fopen($logfile, 'r+');
if ($fn and flock($fn, LOCK_EX)) {
$data = explode("\n", trim(file_get_contents($logfile)));
$data = array_slice($data, 0, $max);
$hit = preg_grep("/^$number,.*,$inpass\$/", $data);
if (count($hit)) {
$hitnum = array_keys($hit);
unset($data[$hitnum[0]]);
ftruncate($fn, 0); rewind($fn);
fwrite($fn, implode("\n", $data));
} else {
echo '該当する記事がないかパスワードが違います';
}
} else {
echo 'ファイルが開けなかったかロック失敗';
}
@fclose($fn);
0700697
04/08/02 17:10ID:???||
( )
∪ ∪
∪∪
0701Imo ◆.jC7ANgFY.
04/08/02 17:16ID:???あえてあなたの書いたコードを修正するならばこう。
でもファイルロック処理とかしていないから込み合う
サイトではデーターが消えたりします。
// 記事削除
if ($action=="記事削除"){
$message = file($logfile);
$fp = fopen($logfile, 'w');
if($max <= count($message)){
$num = $max - 1;
}else{
$num = count($message);
}
for($i = 0; $i < $num; $i++){
// print "1 $no2 2 $number 3 $inpass 4 $pass2";
list($no2,$name2,$mail2,$subject2,$comment2,$time2,$host2,$color2,$pass2) = split(",", $message[$i]);
if ($number==$no2 && trim($inpass)==trim($pass2)){
// 該当記事
}else{
fputs($fp, $message[$i]);
}
}
fclose($fp);
}
0703nobodyさん
04/08/02 17:22ID:???ありです><
なんとかできました(*´д`)ハァハァ
(trimてなんだろ・・・)
0704nobodyさん
04/08/02 17:23ID:???0705軟式PHP
04/08/02 17:23ID:???http://www.php.net/manual/ja/function.trim.php
0706nobody
04/08/02 17:25ID:tyWsL5gt環境はPHP5、WindowsXPpro、Apache2.0です。
例えば、
ttp://xml-jp.amznxslt.com/onca/xml3?t=webservices-20&dev-t=webthreads&locale=jp&KeywordSearch=Amazon&mode=books-jp&type=lite&page=1&f=xml
上記で取得したXMLから、
foreach($xml->Details as $details){
echo $details->ProdctName;
}
などのようにデータを取り出すことはできましたが、取得したXMLのなかで、
著者名(Author)など、各詳細情報(Details)内でも複数あるデータについて
foreachなどでデータを取得することができません。
単純にキーを指定して、$details->Authors->Author[2] などのようにすれば
データは取れるのですが、ループで取得できないとなんとも不便です。
とりあえずこんな感じに書いてみましたがうまく動作しません。
foreach($xml->Details as $key => $details){
echo $details->Manufacturer;
foreach($details->Authors as $authors){
echo $authors->Author;
}
}
これだと著者名の最初1件しか拾えません。countなどでAuthorを数えてみても
正しくカウントされないようです。
これはこういう仕様なのでしょうか?
なにか間違った記述をしているのでしたらご指摘いただけると助かります。
よろしくお願いいたします。
0707Imo ◆.jC7ANgFY.
04/08/02 17:27ID:???fileで読み込んだ配列はどうしても最後に"\n"が入ってしまうからtrimで除去したんですよ。
パスワードのあとに","が入っているプログラムなら大丈夫なのですが、、、
0708703
04/08/02 17:29ID:???本当にアリガトー><
PS.目的別PHPハンドブックを読んでいるがワカンネェ
0709Imo ◆.jC7ANgFY.
04/08/02 17:30ID:???$details->Authors->Authorが複数(配列として存在している)のならば
こうあるべきでは?
foreach($details->Authors->Author as $authors){
echo $authors;
}
0710軟式PHP
04/08/02 17:32ID:???また明日な。・゚・(ノ∀`)・゚・。
0711nobodyさん
04/08/02 17:32ID:???一瞬でもにでもファイルを 0バイトにすると外部から読み込みが入ると怖いのであまり 0バイトには
しない方が安全だと思う。
やるとすれば以下のような感じかな。実用するならもう少しエラーチェックを真面目にするけど。
if (fwrite($fn, implode("\n", $data))) {
ftruncate($fn, ftell($fn));
}
あと、fopen で開いているファイルを file_get_contents で開くのはちょっと好きでは
ないので、以下の方法で読み込むとか。
$data = fread(filesize($logfile));
0712nobodyさん
04/08/02 17:34ID:???ひとまずWebの日本語マニュアルでも、殆ど問題ない。
http://php.s3.to/man/
0713Imo ◆.jC7ANgFY.
04/08/02 17:37ID:???でもその方法でやると後半部分のデータがくずれたりしますよ。
すべての部分(書き込みするために読み取る部分と、書き込みする部分)で
ロック処理をしておけばよっぽどのことがない限り大丈夫なはずです。
file_get_contentsはphpでは推奨しているといかなくとも、
「OSによっては高速になる」との記述もあります。
まぁちょっとの差でしょうけどね。
# それとちょっと間違えてるよ
# $data = fread($fn, filesize($logfile));
0715nobody
04/08/02 17:43ID:tyWsL5gtレスありがとうございます。
本当だ。できました。ありがとうございます。
こんな簡単なことに気が付かないとは恥ずかしい・・・。
0716711
04/08/02 18:25ID:???if 文を行った方が安全だけど。
rewind($fn);
if (fwrite($fn, implode("\n", $data))) {
ftruncate($fn, ftell($fn));
}
>>713
後半部分のデータがくずれるというのがよく分からない。
そのために、ftell で書き込み終わったファイルポインタの位置を取得して、
それ以降の部分を切り捨てている。
fwrite から ftruncate までの間に別からファイルの読み込みがあった場合は
確かにくずれるかもしれないけど、0バイトで読み込まれるよりはましだと
思ったということで。
一瞬でもファイルを 0バイトにしたいくないのは、fwrite で失敗、例えば
HDD のディスクが一杯になったりして、ftruncate でファイルを 0バイトに
した後にfwrite が失敗したりするとファイルは 0バイトで止まってしまうと
いう問題もあるからだけど。
711 で書いた fread の引数は確かに間違い。
ただ、fopen で既にファイルを開いていた場合は file_get_contents よりは
fread で全部読み込んだ方が早いのは確か。一応、ベンチマークを取って
確認した。
fopen から fclose までの一連の処理を行うよりは file_get_contents の方が
早いけど。
0717686
04/08/02 18:37ID:???"最初に確保されるサイズ"ってのは文字列オブジェクト一つのことなんですけど。
あとデフォで8Mってのはmax_limitのこと?
これは「確保できる最大メモリーサイズ」であって、
どこにも「最初に確保されるサイズ」ってかいてない。
それとも別のオプションがあるのかな。
とりあえず適当に実験してみたところphpの文字列はC文字列で、長さは保持しない感じ。
この辺はあまり気にしてもしょうがないんだが。
0718nobodyさん
04/08/02 18:51ID:???動的に画像生成したいのですが、可能でしょうか?
0719nobodyさん
04/08/02 19:05ID:???PHPはファイルを読み込むことができます。
PHPは画像生成をすることができます。
718はhtmlやPDFのレンダリングエンジンを作ることができます。
結論 -> 可能です。
0720nobodyさん
04/08/02 19:07ID:???どんな風にスクリプトを書けばいいでしょうか。
流れだけでもわかりませんか?
0721Imo ◆.jC7ANgFY.
04/08/02 19:12ID:???そこでそのようなことをしなければならないようじゃ、
それをしてもデーターの後半はくずれてしまいますよ。
と言いたかっただけですよ。
私は一般共用サーバーで使うことを前提にしてやっている
のでそこまで考えていませんが(HDDがいっぱいになるとか、、、
私も調べてみましたがまぁそうっぽいですね。
ファイルサイズがかなり巨大になってくると逆になりますが。
file_get_contentsは引数が少なくて個人的に好きです。
というよりかネットワーク処理のときにfreadの第二引数に
だまされて避けてるだけですが、(ローカルでは問題ありません
# FreeBSD+PHP4.3+PHPAで10000回ループさせた結果
# fopen&fclose: 0.253ms
# fread: 0.223ms
# file_get_contents: 0.335ms
0722nobodyさん
04/08/02 19:17ID:???無料メールアドレスのリストを作成し、入力されたメールアドレスを比較すればいいです。
有料メールアドレスのリストでもいいですよ。
0723Imo ◆.jC7ANgFY.
04/08/02 19:19ID:???でも文字列中に"\x00"も含められるということは文字の長さを保持しているわけだし、
変数といわれても型がいろいろあるわけで、最低10Byteは消費しているなと思ったり。
推測なんでなんともいえませんが、
0724Imo ◆.jC7ANgFY.
04/08/02 19:24ID:???私だったらこんなの書きますよ。
$deny = array('hotmail.com', 'mail.goo.ne.jp');
list($mail_user, $mail_domain) = explode('@', $mail, 2);
if (in_array($mail_domain, $deny)) {
die('別のアドレスで登録してくださいませ');
}
0725679
04/08/02 19:33ID:???>>684
高いっす
>>694
知り合いから頼まれて作っているのですが(携帯用待ち受け画面サイト)、
端末に合わせて自動的に画像を拡大縮小してほしいということで
元ファイル読み込み→GDでリサイズ→imagejpegで出力
という処理をしています(ファイルとしては書き出していません)。
で、携帯のほうで転送不可にしたいということで、ドコモ用・au用で
違った転送不可フラグを書き込みたい、と。
やはり一度書き出さないと無理なのでしょうか?
気合入れてググってきます・・・。
>>695
そのexif_read_data()の逆の関数があればラクなんですけど・・・
exif_write_data($image,"comment","hogehoge");みたいな。
0726Imo ◆.jC7ANgFY.
04/08/02 19:39ID:???packでがんばって処理するしかないようですね。
とりあえずJPEGのフォーマット関連のサイト、書いときますね。
ttp://www02.so-net.ne.jp/~koujin/jpeg/jpeg.html
ttp://www.yk.rim.or.jp/~mamo/Computer/DS-7/exif.html
ttp://www2.airnet.ne.jp/~kenshi/exif.html
ここは消えてるけどweb.archiveになら残ってるからアドレスだけ
ttp://www.ba.wakwak.com/~tsuruzoh/Computer/Digicams/exif.html
0727nobodyさん
04/08/02 19:58ID:???今のところhotmailが対象なのですが、他のメールも登録を考えた方がいいかな?と
思ってるので、そのリストを作成してみます。
ソースの提示もしていただき感謝です。
今のスクリプトへうまく組み込めればいいのだけど、最近php始めたもので^^;
参考にしてやってみます!
0728nobodyさん
04/08/02 22:18ID:???file()で読み込もうとするとどうなりますか?
flockを使うならファイル処理はfopenで揃えた方がいいでしょうか?
0729nobodyさん
04/08/02 23:11ID:lHZ4GoiW二つアドバイス。
一つ目
生成されるファイルサイズに気をつけてね。
vodafoneのV3/4シリーズは、ファイルサイズ最大6Kbyteだ。
QVGAサイズで6Kbyteは早漏圧縮率を上げないとね。
二つ目
QVGA対応端末の中には、Webアクセス時、QVGAサイズの画像を表示できない端末があります。
そやつらは、vodafoneだったら四分割、ezwebだったらダウンロードさせるしかないです。
0730nobodyさん
04/08/02 23:17ID:lHZ4GoiW千通ちかいメールを送る必要があります。
Mail::send()を使おうと思ってるんですが、sendmailで送るのと、smtpで送るのとで、速度面ではどちらが高速でしょうか?
ちなみに、MTAはqmailです。
0731nobodyさん
04/08/02 23:41ID:d5GNjYEUfor分を使ってカウントしようとしたのですが、文字そのものをカウントできなくて困ってます。
よろしくお願いします。
0732nobodyさん
04/08/02 23:42ID:8RF4q1S0$to = '[email protected]';
$bcc = "[email protected]";
$from = "[email protected]";
$title = "sampletitle";
$headers = "From: $from\r\n";
$headers .= "Bcc: $bcc\r\n";
$msg = file("./mailtxt.txt");
$msg = implode("",$msg);
mb_send_mail($to,$title,$msg, $headers);
のように書いてtoの他にbccでも送信したいのですが
送信されません、マニュアルをみるとmb_send_mail()はヘッダの区切りが\nになっていましたが
mail()の方は\r\nになっていましたので両方試しましたがダメなのはそこではなさそうなのですが
どこがおかしいかご指摘いただけますか。
旧サンのコバルトのraQ550、Apache/1.3.20+php4.0.6です。
0733nobodyさん
04/08/02 23:47ID:???スクリプト内部に"->"という記述があるのだけども
これってどんな意味があるのかどうかご教授を...
余りにも漠然としたワードなんで
ググっても全くヒットしなかったデスん('A`)
0734nobodyさん
04/08/03 00:00ID:7JP71wHzhttp://www.php.net/manual/ja/language.oop.php
0735nobodyさん
04/08/03 00:02ID:???出てくるんでないかあい?
0737nobodyさん
04/08/03 00:57ID:???なるほど!
クラスを用いた時のメンバ変数やメソッドにアクセスする為の
演算子という事が少しずつ分かってきました
激しく目から鱗です、謝々!!
0738nobodyさん
04/08/03 01:30ID:???0739nobodyさん
04/08/03 02:10ID:OM2Aei59$this->オブジェクト->メンバ名
としても
Object->メンバ名
となってしまうんですが、どこがおかしいのでしょうか?
0740nobodyさん
04/08/03 02:22ID:Q+9yurzP具体的なエラーメッセージor挙動を書きなさい
0741739
04/08/03 02:29ID:OM2Aei59設定情報を格納するクラスをつくっていて、
他のクラスのメンバにそのクラスのオブジェクトを生成・代入し、
print "なんたらかんたら$this->オブジェクト->メンバ名";
みたいな感じで出力させたところ、何故か出力が
Object->メンバ名
になってしまうのです。
一応C++をやっていたのですが、PHPではpublicなメンバみたいなのは使えなかったりするのでしょうか?
0742軟式PHP
04/08/03 09:13ID:???/*-----親クラス-----*/
class Oya{
//メンバ変数
var$musukoObj;
//メンバ関数
function Oya(){
$this->musukoObj = new Musuko;
print$this->musukoObj->GetData();
}
}
/*-----子クラス-----*/
class Musuko{
//メンバ変数
var$data;
//メンバ関数
function Musuko(){
$this->data = 100;
}
function GetData(){
return $this->data;
}
}
//--クラス定義終了
$objOya = new Oya();
?>
100が出力されるけど、こういうことではない?
0743軟式PHP
04/08/03 09:14ID:???適当なところにスペースよろしく。
0745nobodyさん
04/08/03 13:20ID:WVIz7NicPHPのバージョンを4.3.8に上げる前に、
プログラムは前もって4.3.8に修正したヤツを
現行のサーバーに入れようと思ってます。
文法をより適切に修正しただけで、新しい関数などは用いてはいないので
4.3.8用に修正したプログラムでも4.1.2で動くかと思ったら、
一箇所ダメなところが。
「mb_ereg()」関数が4.1.2時代にはまだ「mbereg()」としてしか存在していなかったようで、
mb_ereg()関数を呼び出しても未定義と怒られる。
なので、
function mb_ereg($str1,$str2,$str3){
return mbereg($str1,$str2,$str3);
}
のような感じで関数をとりあえず定義してバージョンアップ前まではお茶を濁そうと思っていたら
三番目の引数が問題でうまく動かない。
mb_eger("(hoge)$",$data,$regs);
とした場合に正規表現にマッチした部分を$regs[1]として
取り出すことができなくなってしまうのでお手上げ。
なので、「mb_ereg()」と自作した関数をそのまま「mbereg()」関数に
リンク(エイリアス?)するような方法はないでしょうか?
0746739
04/08/03 13:36ID:???レスどうもです!
>>742,743
やっちゃいますよね、それ。
内容は大体そんな感じです。
結局のところ、原因は・・・
>>744
まさにこれでした!
便利さには危険が付きまとうんですね(笑
皆さん、どうもありがとうございました。m(_ _)m
0747Imo ◆.jC7ANgFY.
04/08/03 14:19ID:???たとえばこんな感じ?
function mb_ereg($str1,$str2,&$str3){
return mbereg($str1,$str2,$str3);
}
0748745
04/08/03 14:27ID:???なるほど、参照渡し。
PHPで参照渡しってほとんど使ったことなかったから思い付きませんでした。
ありがとうございます。助かりました。
0749nobodyさん
04/08/03 15:05ID:???0750nobodyさん
04/08/03 15:27ID:KxZQfxxVいままで、結構な規模のPHPプログラムをincludeを使って書いています。
このソースを外部に公開することになったのですが、
functionを使う感覚でincludeを使って処理を別ファイルに書き出していたので、
プログラム的にちょっとみっともないかな、と思っています。
ですが、問題はここではなくて、
includeとfuctionで同じ(ような)処理を呼び出す場合、
処理スピードが違う等のメリットはあるのでしょうか?
functionではメモリにキャッシュされるような気もするのですが、
それに関するドキュメントが見つかりませんでした。
メリットが特になければ、
「スピードには問題ない!」で押し通そうと思っているのですが...
0751nobodyさん
04/08/03 15:41ID:???Set-Cookie ヘッダは session_start() 関数を実行するときに表示されているんでしょうか?
環境は 4.3.6 + FreeBSD のレンタル鯖です。
0752nobodyさん
04/08/03 16:03ID:BfqwKzi+HTMLに<?php include("test.jsp"); ?>と記述してみたのですが、
test.jspのソースがそのまま表示されてしまいます。
Apacheのhttpd.conf中のAddType application/x-httpd-phpに
「.jsp」を追加してみたのですがだめでした。
JSPのファイルからJSPをインクルードする方法なら簡単なのですが、
どうしてもHTMLからJSPをインクルードしたいんです。
JSPを表示する方法が分かる方がいたら教えてください。
0755nobodyさん
04/08/03 16:47ID:???取り合えずPHP4が前提でいいのかな?
「メモリにキャッシュ」をどのようにイメージしてるかが
ちょっと不明だが、サブプログラムのincludeでも
メインプログラム上のfunctionでの記述でも実行前に
メモリに取り込まれるのは変わらない。またこれは、
includeの箇所が実際に実行されるされないに関わらない。
スピードに関わるとしたら、includeの場合はファイルのopenや
close等の処理などで、塵も積もれば的な差異が出る可能性はある。
しかしその程度は瑣末な事。
>functionを使う感覚でincludeを使って処理を別ファイルに書き出し
素の処理コードをまんまincludeしてるのかな?
「公開」の目的とするものによっては、きちんと追いやすいコードに直すべきだよ。
includeはライブラリ然としたものを読み込むべし。
0757nobodyさん
04/08/03 17:31ID:???750です。
回答ありがとうございます。
メモリにキャッシュ、というのは、2度目以降の読み込みを想定していました。
functionだとメモリ上に常駐してくれるのかな、と。
includeはテンプレートを読み込むっていうイメージがあるもんで。
> 素の処理コードをまんまincludeしてるのかな?
そうです。
よく考えると、functionの方がコードとしては追いやすいですよね。
外部へは時間の関係で今のまま出しますが、
少しずつ、手直ししていくことにします。
重ねてありがとうございました。
0759nobodyさん
04/08/03 18:08ID:???1文ずつ覚えていったり一つ何かを作ろうとしたり・・・
俺の場合は本買ってまず掲示板作ろうととりかかりましたが
勉強のやり方はあっているでしょうか?
0761759
04/08/03 19:06ID:???ロックのかけ方もわからないし、クッキーすら全く・・・
出来たものも微妙です・・・
0762軟式PHP
04/08/03 19:13ID:???ロックの概念とか頭に入れてるだけでもマシな方かと。
0764Imo ◆.jC7ANgFY.
04/08/03 19:27ID:???「掲示板に書き込む」
「内容のチェック」
「必須項目チェック」
「内容が空欄であればエラー」
「最大文字長チェック」
「それぞれにあった文字数以上であればエラー」
「不正文字チェック」
「\x00を除去する」
「改行を\nに統一する」
「\r\nを\nに、\rを\nに置換する」
「問題のある文字(タグなど)を置換する」
「改行をタグに変換」
「ファイルの書き込む」
「ファイルを開く」
「ファイルをロックする」
「ファイルを読み込む」
「データを追加する」
「ファイルに書き込む」
「ファイルのロック解除」
「ファイルを閉じる」
1つ1つの細かいところは簡単。でも、漠然としてるから難しく感じる。
まぁとはいってもロックはちゃんと理解していないとだめだけどね。
# でもちゃんとしたロックをできている人はphpプログラマーでは少数
# 今度ホームページでも作ってそれについて書こうかな、
0765nobodyさん
04/08/03 20:12ID:???0766nobodyさん
04/08/03 20:16ID:???>メモリにキャッシュ、というのは、2度目以降の読み込み
この辺あたりから同じプログラムが連続して処理された場合の
キャッシュのようなものがあると考えてるのだと思われるのだが、
PHPはJavaのように何らかのアプリケーションサーバが常に
起動してる訳じゃなくて、基本的には1回こっきりで閉じている。
但しその1回の中での同一の処理については、効率化のための
処理が行われている。
httpdのモジュールとして運用した場合は若干違うのだが、
CGI版の挙動を調べてみると判りやすいだろう。
# CLIの方がもっと判りやすいか。
「同じプログラムが連続して処理された場合のキャッシュ」については
PHP Accelerator、Zend Performance Suite(Zend Accelerator)、
PECLに移された APCなどのプロダクトが関連するので、それを調べること。
0767745
04/08/03 20:47ID:???第三引数を指定しない場合にエラーになってしまいます。
function mb_ereg($str1,$str2,&$str3=""){
とするとエラーになってしまうし。
どうしたものでしょう?
参照渡しの場合は初期値の設定は不可?
0768Imo ◆.jC7ANgFY.
04/08/03 21:19ID:???完全な実現は無理だと思うのですが、とりあえず
mb_eregを呼び出すときにmb_ereg($str1, $str2, &$str3);
定義の方をfunction mb_ereg($str1,$str2,$str3="")
にすることによってある程度実現は可能です。
0770nobodyさん
04/08/03 21:34ID:29Vzu5Ve0771nobodyさん
04/08/03 21:42ID:???わざわざ日本語に訳してくれてんだし
0773770
04/08/03 21:49ID:29Vzu5Ve0774nobodyさん
04/08/04 15:24ID:???でロックかけたあと、ロックを外すにはどうすればいいのですか?
0776774
04/08/04 15:32ID:???0777nobodyさん
04/08/04 15:39ID:+l+GCo7r0780nobodyさん
04/08/04 16:43ID:T7C0bXmt0781nobodyさん
04/08/04 16:47ID:???$no = 5;
for ($i=$no ; $i >= 0; $i--){
print $i;
}
?>
これでダメなのか?
0782nobodyさん
04/08/04 16:54ID:T7C0bXmtフォームの処理は
<?php
echo $_POST["名前"];
?>
でいいんですよね
0783軟式PHP
04/08/04 16:59ID:???method属性指定してなかったらデフォはGETで送られるし。
0784nobodyさん
04/08/04 17:03ID:???フォームで入力した値を取得して、
適正な値(正の数値、整数等々)かどうか確認して、
for構文を使って初期の値(0)から、入力値まで
カウントアップ(例示のでは+1)して、echoする。
初期値とカウントアップ、適正値の条件などは容易に
変更できるようにパラメータ設定としておくのが定石。
0785軟式PHP
04/08/04 17:03ID:???$iNo = intval($_REQUEST["名前"]);
for( $i = 0; $i <= $iNo; $i++ )
{
print $i."<br>";
}
?>
一応答えおいとく。
0786nobodyさん
04/08/04 17:04ID:T7C0bXmtフォームから正の整数を入力して送信すると、1からその数字までの整数の
並び方を表示するPHPスクリプトを作れ。フォームの入力はテキストフィール
ドやメニューを使ってもよい。入力が0以上かどうかのチェックも行え。
0787軟式PHP
04/08/04 17:05ID:???0788nobodyさん
04/08/04 17:07ID:T7C0bXmtさっきのできました!
でも”5”の指定なしはどうすればいいんでしょう・・・?
0789nobodyさん
04/08/04 17:08ID:T7C0bXmtできました!!どうもありがとうございました!!
0790nobodyさん
04/08/04 17:14ID:???こチな!のAA貼っとけや
0791nobodyさん
04/08/04 17:16ID:T7C0bXmt4人で・・・
すみません。
0792nobodyさん
04/08/04 17:16ID:???課題を貰ってるのは君らだけなんだから、
授業を受けてる生徒内で解決するか
その課題に書いてある条件をここに列挙しろよ。
マルチ先にしか書いてない条件なんて、他の人は判らん。
でも先生も、このスレとPHP-usersと丸投げMLぐらいは読んでると思うぞ。
0794nobodyさん
04/08/04 17:41ID:???http://pc5.2ch.net/test/read.cgi/php/1047225437/420-421
0795nobodyさん
04/08/04 17:59ID:???0796軟式PHP
04/08/04 18:09ID:???0797nobodyさん
04/08/04 18:11ID:???普通はCとかスタンドアロンアプリケーションなんだけどな
0798nobodyさん
04/08/04 18:12ID:???0799nobodyさん
04/08/04 18:16ID:???0800nobodyさん
04/08/04 18:17ID:???0801軟式PHP
04/08/04 18:19ID:???0802nobodyさん
04/08/04 18:20ID:???IDENTIFICATION DIVISION
0803nobodyさん
04/08/04 18:28ID:???0804nobodyさん
04/08/04 18:30ID:???加齢臭オヤジども
0806nobodyさん
04/08/04 18:38ID:???誰かに教えてもらう時代になったんだな
0807nobodyさん
04/08/04 18:41ID:+l+GCo7r盗まれた場合に同一ドメインまたはサーバー上のPHPが利用出来れば
$_SESSIONの内容を拾得する事が可能であると想うのですが、
このリスクをさける為にはsession.use_only_cookies=1にする以外の
手はないのでしょうか?
0808nobodyさん
04/08/04 18:48ID:???>同一ドメインまたはサーバー上のPHPが
この辺の日本語がおかしい
0809nobodyさん
04/08/04 18:50ID:???0810nobodyさん
04/08/04 18:56ID:???0811nobodyさん
04/08/04 19:01ID:???[<A href="<?php echo "$script?action=search"; ?>" target="_self">検索</A>]
[<A href="<?php echo "$script?action=admin"; ?>" target="_self">管理室</A>]
にしているのですが、$actionに変数が格納されません、なぜでしょうか?
0812nobodyさん
04/08/04 19:09ID:oguY/FCP実際のブラウザ上でアンカーのhrefは何になってる?
0813811
04/08/04 19:10ID:???本当迷惑かけてごめんなさい・・・釣ってきます、、
0814nobodyさん
04/08/04 19:20ID:???0815nobodyさん
04/08/04 19:36ID:5xfxrndz普通にINSERT文をクエリー発行すると
複数ユーザに同時に書き込みされた時に
DBアクセスが著しく遅くなってしまいます。
同時アクセスを防ぐ方法として、
一個のフラグのようなファイルを作ってみたのですが
どうも確実に同時書き込みを防いでくれません。
その辺を便利に防いでくれる関数はないでしょうか?
それか、便利な防ぎ方が載っているサイトがあれば教えて下さい。
0816nobodyさん
04/08/04 19:53ID:???0817nobodyさん
04/08/04 19:55ID:???>>807
ついでにcookieもssl-secureにしておけば多い日も安心。
>>815
まずはDBのチューニングかな。
その前にスクリプトのチューニングが必要かも知れんけど:-p
その後で、使っているDBのロック機能を調べてみれ。
PHP側だけで排他制御するのはあんまりお勧めできない。
一箇所でも忘れたら全部パー。それでもあえてやるならflock関数かな。
0818nobodyさん
04/08/04 19:57ID:???俺もテーブル構造が悪いんだと思う
0819nobodyさん
04/08/04 20:09ID:???テーブルのロックするsql文あったでしょ
0820nobodyさん
04/08/04 20:11ID:???0821nobodyさん
04/08/04 20:27ID:???ブロックされた人には
「只今、混みあっています。少々時間が経ってから再度アクセスください。」
とかってエラー出すのだろうか?
0822807
04/08/04 20:55ID:+l+GCo7r他に個人を識別するのに役に立つ情報などは何かあるのでしょうか?。
>>808
ハード一台で複数のドメインを管理している貧乏サーバーとか
あるかな、とひねくれた発想を^^;。
サーバー上でSESSIONがファイルとして保存されている場所が
同じであればドメインが異なってもアクセス出来てしまうのでは
ないかという事も考えてみました^^;;。
ひねくれすぎですね・・・。
0823nobodyさん
04/08/04 20:59ID:???とか。
仕様的にはMACアドレスだけでも(ルータレベルまでは)識別できるはずだけど、
インターネット上には同じMACアドレスが山ほどあるみたいだからね。
08241
04/08/04 21:00ID:???0825nobodyさん
04/08/04 21:02ID:+6UXuj/L今、PHPとPostgresSQLとで、プログラムを作ってるんですが、
DBから得たresultから、1行づつデータを読み込む部分での質問です。
たとえば、5行のresultがあるとして、
3行目まで読み込んだところで、ポインタをまた1行目に戻したい場合、
関数は何を使えばいいのですか?
sybase_data_seek を使ってもうまくいかず(PHPのバージョンが足りてないのかも知れませんが)
MySQLなら、mysql_data_seekという関数があるようですが、
Postgresの方には、同じような役割の関数はないのでしょうか?
開発環境を変えることができないことを前提で、
どなたか教えてほしいです。
0826nobodyさん
04/08/04 21:11ID:???> Postgresの方には、同じような役割の関数はないのでしょうか?
sybase_data_seek
0827nobodyさん
04/08/04 21:25ID:???PEARのDB.php使って結果を配列に格納すれば無問題
0829nobodyさん
04/08/04 22:29ID:???文字コードもEUC-JPにコンバートしてるのですが、たまーに文字化けしてしまいます。
ご教授よろしくお願いします。
0831nobodyさん
04/08/04 23:23ID:???PostgreSQLを使うのにsybaseの関数を何故使うのか、ということだと思うのだが。
元質問の話に戻すと、まぁ、なんだ。おまいもマニュアル嫁。
PostgreSQL関係の関数って高々70個くらいだろ。
0832nobodyさん
04/08/05 00:46ID:jHqBsTPNとりあえずここ見て設定確かめろ
http://tsuttayo.sytes.net/php/char_trn/
0833nobodyさん
04/08/05 01:20ID:???その人がログインしているかどうか確かめることってできますか?
ID、PASSを入力してログインするとログインしている人の名前が出るとか・・・
またブラウザを閉じるとその人の名前が消えたり・・・
0834nobodyさん
04/08/05 01:38ID:???0835nobodyさん
04/08/05 02:45ID:???0836nobodyさん
04/08/05 03:06ID:???特にミスっている場所ないのですが・・・
0838836
04/08/05 03:15ID:???<?php
$data = file($gdata);
$count = count($data);
for ($i=0;$i<=$count;$i++){
list ($idr,$passr,$lvr,$expr,$char,$winr,$loser,$hpr,$atcr,$defr,$masr,$dexr) = split( ",", $data[$i]);
if ( $id != $idr ){
if ($i == 1){
print " <OPTION value=$idr selected>$idr</OPTION>";
}else{
print " <OPTION value=$idr>$idr</OPTION>";
}
}
?>
0840nobodyさん
04/08/05 03:19ID:???<?php
$data = file($gdata);
$count = count($data);
for ($i=0;$i<=$count;$i++){
list ($idr,$passr,$lvr,$expr,$char,$winr,$loser,$hpr,$atcr,$defr,$masr,$dexr) = explode( ",", $data[$i]);
if ( $id != $idr ){
if ($i == 1){
print " <OPTION value=\"$idr\" selected>$idr</OPTION>";
}else{
print " <OPTION value=\"$idr\">$idr</OPTION>";
}
}
}
?>
0841836
04/08/05 03:23ID:???(ちなみにexplodeてなんだろ)
0842nobodyさん
04/08/05 03:31ID:???http://php.s3.to/man/function.explode.html
0843836
04/08/05 03:33ID:???しかしエラーが一向に消えない・・・
0844nobodyさん
04/08/05 03:34ID:???0845836
04/08/05 03:36ID:???89 </TBODY>
90</TABLE>
91</FORM>
92</CENTER>
93</BODY>
94</HTML>
_| ̄|○
0846nobodyさん
04/08/05 03:38ID:???ちなみに838のソースはforを閉じてないぞ
0848nobodyさん
04/08/05 04:34ID:???どうだっけ?w
0849848
04/08/05 04:37ID:???print "あいうえお";
print "かきくけこ";
上の二つを呼び出す文
0850836
04/08/05 04:47ID:???print " <TD bgcolor=#ffffff align=center><SELECT size=1 name=getyou>";
$data = file($gdata);
$count = count($data);
for ($i=0;$i>=$count;$i++){
list ($idr,$passr,$lvr,$expr,$char,$winr,$loser,$hpr,$atcr,$defr,$masr,$dexr) = split( ",", $data[$i]);
print $idr;
if ( $id != $idr ){
if ($i == 0){
print " <OPTION value=$idr selected>$idr</OPTION>";
}else{
print " <OPTION value=$idr>$idr</OPTION>";
}
}
}
?>
ヒロシです。
上の文を作ってみましたが、$idrに変数が格納されません・・・。
0852850
04/08/05 05:01ID:???forの不等号が反対でした!
0853初心者
04/08/05 05:02ID:???0855初心者
04/08/05 05:07ID:???2ページ目で変数を$Bに入れる
3ページ目で$Aと$Bを表示させる
$Aはカラッポ、$Bにはちゃんと入ってる。。。
という現象です・・・
0857初心者
04/08/05 05:10ID:???POSTはこの状況じゃ使えないです。
0858nobodyさん
04/08/05 05:12ID:???とりあえず何がやりたいのかわからんが
example.php?A=$A&B=$B
こんな感じで呼び出してやればいいんでない?
0859nobodyさん
04/08/05 05:13ID:???サーバサイドとクライアントサイド・スクリプトの
違いについて勉強してこい。してきた上で
「シリアライズしてファイル化」について調べると
幸せになれるかもしれぬ。
0861初心者
04/08/05 05:27ID:???しかしなぜ3ページ目まで変数が渡らないんだろう・・・
0862nobodyさん
04/08/05 05:31ID:???0863nobodyさん
04/08/05 05:44ID:???0864nobodyさん
04/08/05 05:58ID:???この文何かおかしいかな?
これがエラーの原因なんだが
0865nobodyさん
04/08/05 06:08ID:???0866nobodyさん
04/08/05 06:49ID:???0867nobodyさん
04/08/05 07:25ID:???$Aが0または$Bが0になった場合抜け出したいのですが
どうすればよいですか?
0868867
04/08/05 07:34ID:???こんな文が使えるなんて初めて知りました><
0869nobodyさん
04/08/05 08:08ID:???キモッ
while(...) でいいじゃん
0870nobodyさん
04/08/05 08:15ID:???お前の方がよっぽどきもいわパゲッ!
0871nobodyさん
04/08/05 08:24ID:???コスモを感じる
0872nobodyさん
04/08/05 08:29ID:???クッキーの使い方教えてくださいおながいします
P.S マニュアル読んでもわかんねーよヽ(`д´)ノウワァァァァン
0873nobodyさん
04/08/05 08:43ID:???これ嫁
http://www.sra.co.jp/people/t-ishii/php_new/php4_new.html
0875nobodyさん
04/08/05 09:06ID:???0877nobodyさん
04/08/05 09:10ID:???どうしたらいいでしょうか?
0878nobodyさん
04/08/05 09:14ID:???$count = count($data);
$fp = fopen($gdata,"w");
flock ($fp,LOCK_EX);
for ($x;$x<=$count;$x++){
list ($idx,$passx,$lvx,$expx,$chax,$winx,$losex,$hpx,$atcx,$defx,$masx,$dexx) = split( ",", $data[$x]);
if ($x == $i2){
$expx = $expr;
$winx = $winr;
$losex = $loser;
fputs($fp, $data[$x]);
}elseif($x==$i3){
$expx = $exprr;
$winx = $winrr;
$losex = $loserr;
fputs($fp, $data[$x]);
}else{
fputs($fp, $data[$x]);
}
fclose ($fp);
}
データが消えてしまう・・・
何がおかしいんだろうか・・・
0879軟式PHP
04/08/05 09:14ID:???0880軟式PHP
04/08/05 09:19ID:???for ($x;$x<=$count;$x++)
$x=0ぐらいしる。
で、データが消えてしまうってどういう意味で言ってるのか分からないけど
fopen($gdata,"a")でやってみれ。
0881軟式PHP
04/08/05 09:22ID:???0882nobodyさん
04/08/05 09:49ID:???0884nobodyさん
04/08/05 09:59ID:???0885nobodyさん
04/08/05 10:15ID:???で、stripslashesを使ってもうまくいきません。。。
0889nobodyさん
04/08/05 10:35ID:???>>magic_quotes_gpcをoffにすることは できません。
他の処理で使うからかな?それともoffにしたくてもphp.iniをいじれないからかな?
後者なら.htaccessで
php_flag magic_quotes_gpc Off
これも.htaccessが使用可能だければだけど
0890nobodyさん
04/08/05 10:38ID:???$a = str_replace("\\","",$a);とやってみましたが
表示される文字はa'b になってしまう。。だぶるくおーてーしょん以降が表示されないのです。。
0891nobodyさん
04/08/05 10:49ID:???$a = str_replace("\"", "", $a);
0892nobodyさん
04/08/05 10:52ID:???除去でいいの?
なんか不安なんだけど
クッキーの文字自体に\があった場合はどうするのよ
0893nobodyさん
04/08/05 11:03ID:???0894nobodyさん
04/08/05 11:10ID:???0897nobodyさん
04/08/05 11:15ID:???0901nobodyさん
04/08/05 11:24ID:???0902nobodyさん
04/08/05 11:25ID:???PHP3か?
4ならSESSIONでも良いじゃないか。
0903nobodyさん
04/08/05 11:37ID:???セッションが一番いい。
まぁセッションもクッキー使ってるわけだけど
0904nobodyさん
04/08/05 12:27ID:???0905882
04/08/05 12:38ID:???結果は同じなのでま、いいか
0907nobodyさん
04/08/05 12:45ID:???これでどう?
if (get_magic_quotes_gpc()) {
$a = stripslashes($a);
}
0910nobodyさん
04/08/05 12:55ID:???\\\がついてくる
ちなみにIDだけ保存してDBから取り出すと
cryptされたパスワードが抽出されてしまってだめでした。。
0911nobodyさん
04/08/05 13:08ID:???907のstripslashesってまんまその為のものなんだが・・
ttp://jp.php.net/manual/ja/function.stripslashes.php
クォート取り除いた変数名と、クッキーに書き込んでる変数名が違うなんてことはないよね?
0912nobodyさん
04/08/05 13:27ID:dWrkED0yありませんでしょうか?
0913nobodyさん
04/08/05 13:27ID:???クッキーにはa%27b%26quot%3Bcと保存されていますので。。
で、$aをクッキーから抽出して表示するとa\\\'bと。。こうなってしまうのです
0916nobodyさん
04/08/05 13:35ID:???眠れない時に羊を数えるのってsheepがsleepに似てるからなんだよ
0917nobodyさん
04/08/05 13:45ID:UeFJsakmクッキー使えなくしているクライアントが結構いる。
クッキーからIEの穴つつけたりした。
0919nobodyさん
04/08/05 14:07ID:???Windowsで動かしてます?
Shift-JISなら入力データをEUC-JPに変換、クォートしたらクッキーに書き込み、
クッキーから抽出したらShift-JISに戻して表示でどうです?
$a = mb_convert_encoding($a, "EUC", "SJIS");
0920nobodyさん
04/08/05 14:51ID:???0925nobodyさん
04/08/05 15:17ID:???$list1、$list2 ともに配列です。
$all = array_merge($list1, $list2);
↓
$all = $itemList1 + $itemList2;
なにが原因と考えられるでしょうか?
0927925
04/08/05 15:36ID:???$list1 or $list2 が array の 他に undef の場合があった。
array_merge()は undef でもマージできるけど
+ だと 型違いでマージできず。
0928nobodyさん
04/08/05 19:28ID:???キャッシュが効かないのが嫌。仕方ない?
0931nobodyさん
04/08/05 20:34ID:4UXeuveB今、ラジオボタンでの入力を取り出すプログラムを書いてるんですが、
name属性が可変の場合、取り出す時にどうやって指定すればいいのでしょう?
具体的には下のようなソース。
<input type="radio" name="<?php echo $groupCode ?>" value="rw" >
<input type="radio" name="<?php echo $groupCode ?>" value="r" >
<input type="radio" name="<?php echo $groupCode ?>" value="n" >
↑で取り込んだやつを、
if( $groupCode == "rw" ){
$readStatus = "T";
$writeStatus = "t";
}
のような感じで取り出したいのですが、
if文の中が、文字列の比較になってしまって、
どうしても取り出せないんです。
どなたかアクロバットなやり方を知りませんか?
0932nobodyさん
04/08/05 20:47ID:???<input type="radio" name="groupCode" value="rw"<?php if ($groupCode== "rw") { print " checked"; };?>>
<input type="radio" name="groupCode" value="r"<?php if ($groupCode== "r") { print " checked"; };?>>
<input type="radio" name="groupCode" value="n"<?php if ($groupCode== "n") { print " checked"; };?>>
if( $groupCode == "rw" ){
$readStatus = "T";
$writeStatus = "t";
}
0933nobodyさん
04/08/05 20:58ID:???hiddenで別に渡せないかなぁ?
0934nobodyさん
04/08/05 21:09ID:???if( ${$groupCode} == "rw" ){
$readStatus = "T";
$writeStatus = "t";
}
何度も書き込んですまぬ、そろそろ寝よう・・
0936nobodyさん
04/08/05 21:21ID:???$data = "groupCode";
echo $$data; //rw
0938nobodyさん
04/08/05 21:34ID:???$A00 = "rw";
echo $$groupCode; //rw
実は逆だった…
0939nobodyさん
04/08/05 22:24ID:???PHP version4.2.xで動いていたソースが4.3.xで動かなく
なる場合はどうすればいいんですか?
0941nobodyさん
04/08/05 22:36ID:???0942nobodyさん
04/08/05 22:40ID:???0943nobodyさん
04/08/05 22:40ID:???でRelease Announcementの和訳でも見てくれ。
もしくは説明できる人説明よろろ
0944nobodyさん
04/08/05 23:07ID:???い 夏
ん 厨
じ い
ゃ っ
ん ぱ
い
0945nobodyさん
04/08/05 23:18ID:sAzaKBeaしかも出会い系やアダルトグッズの販売も。今日行われたちんぽ会議の謎とは・・・
【突撃】広告部隊作業マニュアル公開中5【OFF】
http://ex7.2ch.net/test/read.cgi/news4vip/1091710263
まとめサイト
ttp://www.geocities.jp/syupam_chinpou/index.html
0946nobodyさん
04/08/05 23:20ID:???<form enctype="multipart/form-data" action="_URL_" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000000">ファイル<input name="userfile" type="file">
</form>
としたのですが、どこにうpするか決められるのですか?
(送信ボタンは別にあるものとして・・・)
0948946
04/08/05 23:23ID:???ここで聞いたんだが・・・もう一度見てくるぽ
0949nobodyさん
04/08/05 23:28ID:???内容を理解できなかったって言うならやばいぞ。
0950nobodyさん
04/08/05 23:29ID:???の使い方が理解できんのよ・・・
0951nobodyさん
04/08/05 23:33ID:???サンプルを見て試して手加えて身体で覚えろ。
マヌアル10回声を出して読んで来い。
0952nobodyさん
04/08/05 23:37ID:???アップロードされる場所の話ならむしろこっちかな。
http://jp.php.net/manual/ja/ini.sect.file_uploads.php
>>950
理解できないなら使わなければいいじゃない。
つーかクライアント側の元ファイル名なんて使いたいとも思わないな。
どんな文字入ってるか分からんし。
0953946
04/08/05 23:53ID:???Warning: move_uploaded_file(): Unable to move '/var/tmp/phpxgdg4W' to '***' in /usr/home/free/home/phpworld/public_html/pu/upload.php on line 8
0955nobodyさん
04/08/06 01:31ID:ZX7YO8MK結果だけ急いでると勉強にならんよ
0956nobodyさん
04/08/06 02:56ID:OcQEeCf3phpプログラムを複数改造しましたが古い方のものと
同じフォルダに入れてしまいました。
タイムスタンプもほぼ同じで区別がつきません。
そこで、例えばa.phpとa'.phpを比べて内容を比べる良い方法はありませんか?
比較する中で違う部分を反転表示させると言った便利な技はないでしょうか?
たくさんあるので途方に暮れています。
0957nobodyさん
04/08/06 03:05ID:???0959nobodyさん
04/08/06 08:11ID:???>>956
OS書いてないってことは、PHPを使って比較したいってことか?
http://www.vector.co.jp/vpack/filearea/win95/util/text/diff/index.html
0960nobodyさん
04/08/06 08:32ID:Herwsld0最近、PHPを学習してる者ですが正規表現の所でつまづいて困っています。
半角英文字3文字と5桁の数字を組み合わせたものを
if文判定で否定したいのですが
if(eregi("^[^(abc[0-9]{5}])",$hoge))
{
処理A
}
else
{
処理B
}
でやってもうまくいきません。どなたか分かる方ご教授ください。
よろしくお願いします。
0961nobodyさん
04/08/06 08:33ID:???0962nobodyさん
04/08/06 08:36ID:???ここが分からない。
つまり合計8文字になるってことか?
なら
if ( eregi("(^[a-zA-Z0-9]{8}$)",$hoge) && eregi("(^[a-zA-Z]{3}$)",$hoge) )
0963962
04/08/06 08:38ID:???0964軟式PHP
04/08/06 09:07ID:???0965960
04/08/06 09:13ID:Herwsld0すいません。説明不足でした。
最初の英数3文字abcは固定で、続く数字5桁は変動ありにしたいのです。
abc11111,abc22222,abc12345とこんな感じならOKという感じです。
総文字数は>>962さんの言うとおり8文字です。
これを否定したいので
もし入力データが上記のようだったら処理B,上記の形式を取ってなかったら
処理Aというような感じにしたいのです。
拙い説明で本当に申し訳ないのですが、どうかよろしくお願いします。
0966nobodyさん
04/08/06 09:22ID:???http://pc5.2ch.net/test/read.cgi/tech/1057324268/75
0967nobodyさん
04/08/06 09:27ID:???echo "A";
}else{
echo "B";
}
0968軟式PHP
04/08/06 09:27ID:???while(;;)
{
if( preg_match("/(^[a-zA-Z0-9]*$)/",$hoge,$match) )
{
print $match[0];
}
}
0969960
04/08/06 09:49ID:Herwsld0本当に有難うございました。
0970nobodyさん
04/08/06 10:25ID:???そういうツールを PHP で書いてみたら?
それなりのものができたらお手本として diff の
ソースを見てみるといい。
0971nobodyさん
04/08/06 12:01ID:???ttp://pear.php.net/manual/en/package.fileformats.spreadsheet-excel-writer.php
で数値に色をつけたり大きさを変えたり sum() は使えるようになりました。
ところでグラフを描く方法はないのでしょうか?
# jpGraph なら画像で作れますが、Excel で作りたいのです。
0972970
04/08/06 13:00ID:???>596 でなくて >956 ですた。
0974nobodyさん
04/08/06 13:41ID:sHfe9a+Gと言うファイルがあってそれをGDで自動でサムネイルを作っているのですが。
サムネイル作成時に、./img/xxx/zzz/のパーミッションを777に変えないと
サムネイルが作成出来ないですが、
この./img/xxx/zzz/を自動で777に変えたいのですが、
何か方法はないでしょうか?
explodeを使って切り出しして後でそれぞれのディレクトリー名を繋げればいいのですが、
./img/xxx/zzz/ は毎回フォルダー名が変わるので
./img/xxx/zzz/123.jpgだと最後の「/」部分で前と後ろを分解する方法はないでしょうか?
よろしくお願いします。
0975軟式PHP
04/08/06 13:46ID:???0977nobodyさん
04/08/06 14:21ID:???ファイルアップロード攻撃をされた可能性があります。デバッグ関連情報:
Array
(
[userfile] => Array
(
[name] => MapEditor.zip
[type] =>
[tmp_name] =>
[error] => 2
[size] => 0
)
)
0978軟式PHP
04/08/06 14:38ID:???0980nobodyさん
04/08/06 14:48ID:???その上で>>978を読めば分かると思うんだけど・・・
分からないのならもっと基本的なところから始めたほうがいい。
0981977
04/08/06 14:52ID:???0982nobodyさん
04/08/06 14:55ID:???Warning: move_uploaded_file(): SAFE MODE Restriction in effect. The script whose uid is 2924 is not allowed to access / owned by uid 0 in 〜
ファイルアップロード攻撃をされた可能性があります。デバッグ関連情報:
Array
(
[userfile] => Array
(
[name] => Masic.html
[type] => text/html
[tmp_name] => /var/tmp/phpddOVVd
[error] => 0
[size] => 13291
)
)
とりあえず吊ってきます ||
0983軟式PHP
04/08/06 15:05ID:???0984nobodyさん
04/08/06 15:07ID:???0985nobodyさん
04/08/06 15:10ID:???0986982
04/08/06 15:26ID:???0987nobodyさん
04/08/06 15:30ID:???0988軟式PHP
04/08/06 15:31ID:???0989nobodyさん
04/08/06 16:24ID:???0990976
04/08/06 16:33ID:???$image_dir_path = dirname($image_path);/*元イメージ格納ディレクトリーパス*/
$mkdir_path = $image_path.$mkdir_name;/*サムネイルを作成するディレクトリーまでのパス*/
mkdir($mkdir_path , 0777);
chmod ($mkdir_path , 0777);/*←これが無いとmkdirでは755にしかならなかった、*/
で一応目的のディレクトリーを作ってサムネイルも作成できるのだけど
$mkdir_path へディレクトリーを作るにはその上層のディレクトリーのアクセス権を777にしないと
行けないので、mkdirの前にchownでchown($xxx , www);
としたけど、
chownするのはそのまた上層にwwwへのアクセス権777が必要みたい・・・
結局、サムネイルを作成するディレクトリーまですべてwwwをオーナにして777にしないと
いけない状態。。
どうすればいいんだろうか。。
0991nobodyさん
04/08/06 16:36ID:???原因や解決策がわかるなら答えてみろよ。
できねーんだろ?
ならセーフモードのせいかどうかわからないってことだ。
つまりお前みたいなやつが一番の知ったか。
0992nobodyさん
04/08/06 16:40ID:???【PHP】質問スレッドpart20【php】
http://pc5.2ch.net/test/read.cgi/php/1091774679/
0995nobodyさん
04/08/06 17:02ID:???0996nobodyさん
04/08/06 17:29ID:???. .996
↓997
0999nobodyさん
04/08/06 18:06ID:UNSVOLia1000nobodyさん
04/08/06 18:07ID:UNSVOLia10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。