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

■PHP板 質問専用スレッド■

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。 NGNG
一応たててみた。
レスは気長に待つのが良い感じかも。

答えられる方、返答よろしくお願いします。

参考リンク
■本家
http://www.php.net/

■Japan PHP Users Group
http://www.php.gr.jp/

■PHP 日本語ページ
http://www.cityfujisawa.ne.jp/~louis/apps/phpfi/index.html

■PHP日本語マニュアル
http://www.asakawa.ne.jp/doc/php/ja/sjis/
0648電動ナナシ2001/08/18(土) 17:39ID:0Aevniqc
Q. Zend ライセンスには Zend 込みで販売するものについて料金を請求
 してはいけないと書いています。これは私が構築した PHP スクリプトや
 ウェブサイトを販売できないということを意味するのでしょうか。

A, いいえ、まったく違います。この条項は Zend Scripting Engine ライブラリを
 用いて作成したソフトウェアのことを言っており、このライブラリを利用した
 PHP が実行するスクリプトは該当しません。あなたは、PHP ないし Zend ライセンスを
 気にすることなく、自由に、あなたが書いた PHP ソースコードをフリーまたは
 商用で配布できます。あなたは望むだけあなたの商用アプリケーションに PHP
 全体をパッケージすることができます。Zend Scripting Engine ライブラリを
 直接利用する商用アプリケーションを作ることができないということです。

Q. それで、Zend ライセンスのポイントは何ですか?いつそれを考慮すべき
 なのでしょうか?

A. あなたは以下の二つの場合に Zend ライセンスを意識するべきです。
 まず最初に、Zend Scripting Engine ライブラリにパッチを当てて公表
 する場合です。Zend ライセンスは Zend Technologies, Ltd. がこれらの
 パッチを使用料を払うことなく(詳しくはライセンス本文を参照)使うことを
 許可しています。次に、このライセンスは、商用アプリケーションを構築する
 ために Zend scirpting engine を商用で利用することを禁じています。
 もし Zend scripting engine を商用で利用したい場合には(例えば、
 あなたが書いているワープロのマクロ言語として)、ライセンスの情報を
 Zend Technologies, Ltd. に問い合わせなければなりません。
0649名無しさん@お腹いっぱい。2001/08/19(日) 12:48ID:???
PHPって便利ですねぇ。
0650名無しさん@お腹いっぱい。2001/08/20(月) 15:37ID:YTYQxxuA
IE上でJavaScriptのescape()を使用してエンコードした
文字列(UNICODE)をPHP3でデコードするには、どのよう
にしたらよいでしょうか。

�@IEのJavaScriptのescape()を使用して文字列「ほげ」をエンコード
した結果 →「%u307B%u3052」

�APHP3のi18n_internal_encoding()の結果 → 「EUC-JP」

�B�@をi18n_discover_encoding()で調べた結果 → 「ASCII」

i18n_convert()を使っていろいろ試しましたが、どうもうまく
いきません。解決策をご存知の方教えてください。
0651名無しさん@お腹いっぱい。2001/08/21(火) 12:12ID:rddG09uE
>>650
PHPの過去のメーリングリストをあさって解決しました。
解決方法は勝手に転載してよいのか分からなかったので、
知りたい方は、とりあえず知らせてください。
0652みやた2001/08/21(火) 15:19ID:jSRLzhwM
php3&Oracle8です。

フォームから書籍の出版日の年、月、日を
ユーザに入力してもらい、
($publish_year,$publish_month,$publish_day)
それを登録する以下のphpがあります。

=======================================
//出版日を8ケタ化
$publish_date = sprintf("%04d%02d%02d",
$publish_year,
$publish_month,
$publish_day);

//登録
$SQL = " INSERT INTO BOOK_MASTER(PU_DATE)
" VALUES(TO_DATE(:book_publish_date, 'YYYYMMDD'));\n".

OCIBindByName($rs, ":BOOK_PUBLISH_DATE", &$publish_date, -1);
=======================================


ここで、もし 出版日ナシのフラグ「$no_publish」がTRUEなら、
TO_DATE(:book_publish_date, 'YYYYMMDD')の代わりにNULLを入れたいのですが、
通常、どうするのがスマートなのでしょう?

$publish_date = sprintf のあとに、
unset($publish_date);
として見たのですが、
OCIBindByName bitelength is 0 in ...
の警告がでてしまうもので。(insert自体はうまくいっているようなのですが)

構文を組み替えてもかまいません。

==================

他人が作ったものを、
事情により普段Oracleなどいじらない私がいじっているもので、
かなりお恥ずかしい話で恐縮です。
0653名無しさん@お腹いっぱい。2001/08/21(火) 17:09ID:Ttfz/Erw
PHPでランダムな英数文字5桁を取得したい場合
どうしたらよいのでしょうか?
rand()だと数字のみなので・・・。
例えば、「7fg47」のような感じです。
0654名無しさん@お腹いっぱい。2001/08/21(火) 18:03ID:???
>>653
PHPの質問じゃないな
関数自分で作れば?
0655質問2001/08/21(火) 18:18ID:R2s3AHtI
入力フォームでカタカナの「ソ」が混じっていると、「ソ\\\」
のようになってしまいます。これを回避するにはどうしたらよいのでしょうか?
0656電動ナナシ2001/08/21(火) 21:05ID:1TWjFS4w
>>652
$publish_date が空なら、INSERT 文の実行を行わないか、日付の挿入を
行わない INSERT 文を発行する。どちらにするかは、日付以外に挿入する
値の有無に依存する。

例)
if ($no_publish) {
  $SQL = "INSERT INTO bookmaster(hoge, publishdate)
   VALUES ($hoge, TO_DATE(:bookpublishdate, 'YYYYMMDD'))";
  OCIBindByName(....
} else {
  # publishdate が DEFAULT NULL なら hoge だけ INSERT
  $SQL = "INSERT INTO bookmaster(hoge, publishdate)
   VALUES ($hoge, NULL)";
}

>>655
stripslashes();
0657質問2001/08/21(火) 21:15ID:???
>>656

解決しました。ありがとうございましたm(_ _)m
06586522001/08/21(火) 21:31ID:???
なるほど、そうするものなのですね。
ありがとうございます。
感謝いたします。
0659電動ナナシ2001/08/21(火) 21:35ID:1TWjFS4w
>>653
<?
function getRandomString($length) {
$result = "";
# Base Strings
$base = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
$baselength = strlen($base) - 1;
for ($i = 0; $i < $length; $i++) {
$pos = rand(0, $baselength);
$result .= substr($base, $pos, 1);
}
return $result;
}

$randomString = getRandomString(5);
echo "\$randstr -> [" . $randomString . "]<br>\r";
?>
0660電動ナナシ2001/08/21(火) 21:38ID:1TWjFS4w
>>652
"_" 記号は SQL では 1 文字のワイルドカードを意味するから
(正規表現でいえば "." に相当)、あまり使わないほうがいいと思う。
06616532001/08/22(水) 13:09ID:dChLBg7w
>>659
大変参考になりました。
ありがとうございました。
0662名無しさん@お腹いっぱい2001/08/22(水) 17:44ID:ym3V.COk
さっき、間違って違う板で質問してしまったのですが

PHPにて正規表現でチェックを行いたいのです。
まずは、メールアドレスなどのチェック(半角英数字&記号のチェック)です。
あとは、全角文字のチェック。カタカナチェック。です。
一応半角数字はチェックできるのですが・・・
誰か教えていただければ光栄です。宜しくお願いします。
0663テストさん2001/08/22(水) 22:14ID:???
>>659
PHPマヌアルからの引用だけど

$token = md5( uniqid( rand() ) ); // 推測が困難であり、より優れている。
$randval = substr($token, 0, 5);

じゃだめなん?
この例は、極めて予測困難な 32 文字のID(128ビット16進数)を 作成します。
らしいし。短くてきれいだし。
0664電動ナナシ2001/08/22(水) 22:23ID:???
>>663
それも考えたんだけど、先頭 5 文字がどのくらいランダムに分布するか
分からなかったので(単なる勉強不足)今回はあえて別解を考えてみた。
0665名無しさん@お腹いっぱい。2001/08/22(水) 23:11ID:???
>>662
んぐらい自分で調べろよ。
うざい。
0666教えて君2001/08/22(水) 23:12ID:???
>>664
そうじゃな、こちらの方が例えば 0 と O とか I と l が
紛らわしいので使いたくない向きにもよろしそうじゃしな。

ところで最近の若者は mt_rand() なんぞは使わんもんなんじゃろか?
0667テストさん2001/08/23(木) 00:10ID:???
>>666
> ところで最近の若者は mt_rand() なんぞは

PHPマヌアルからの引用だけど、って言ってんだろ
この盆暗
0668教えて君2001/08/23(木) 01:11ID:???
>>667
あぅ、煽られてしまった
逝ってくる
0669名無しさん@お腹いっぱい2001/08/23(木) 15:47ID:cRebnFX2
正規表現で
FとM以外はダメだよって言うソースの書き方って
if(ereg("[^F|M]{1}",$in_Hensu)){
echo "error";
exit;
}
だよね?それとも書き方違う?
0670new2001/08/23(木) 16:16ID:MmYN4CjY
いきなり質問ですいません。

php3って配列に要素を追加することは出来ないのですか?

perlでいうpushみたいな感じ。

php4ではarray_pushがあるそうですが。
今の環境では3しか使えないので・・・。
0671名無しさん@お腹いっぱい2001/08/23(木) 16:27ID:cRebnFX2
>>670
なかったら自分でfuction作れ
作ったソースを俺に教えろ!
0672名無しさん@お腹いっぱい。2001/08/23(木) 18:56ID:GljfP/6M
ファイルアップロードのスクリプトを書いて、
ある鯖では動いて、もう一つの鯖では
「open_basedir restriction in effect. File is in wrong directory…(省略」
と、文句を言われ、「/tmp/****」からコピーできません。調べてみるとセーフモードというものに引っかかってるみたいなんです。
この鯖でアップロードは無理なのでしょうか?
0673名無しさん@お腹いっぱい2001/08/23(木) 19:55ID:cRebnFX2
4桁指定で0〜9以下の数字しか記入できない
正規表現の表し方ってどうやるの?
if (!ereg ("[0-9]{4}", $Hensu)){
echo "error";
}
だと5桁以降は、何を書いてもエラーにならない
だから、
if (!ereg ("[0-9]{4}[^.]", $Hensu)){
echo "error";
}
にしたんだけど 全然ダメ・・・・
だれかマジ教えてよ。正規表現むずかしい
06746722001/08/23(木) 20:18ID:GljfP/6M
if (!ereg ("[0-9]{4}$", $Hensu))
じゃないのかな?
06756732001/08/23(木) 20:29ID:cRebnFX2
>>674
自分も試しにやったけどダメだったんだよね。
でもアドバイスありがとう
06766742001/08/23(木) 21:05ID:GljfP/6M
if (!ereg ("^[0-9]{4}$", $Hensu))
文頭のやつ忘れてた。
これでもダメかな?
06776732001/08/23(木) 21:28ID:cRebnFX2
>>676
で・・・できたよ!!!(喜)
でも、これと同じく
1桁以上5桁以下指定で0〜9以下の数字しか記入できない
正規表現でやったんだけど無理だった・・
if (!ereg ("^[0-9]{1,5}$", $Hensu)){

すげーくやしいっ!!
0678echo"名無しさん";2001/08/23(木) 23:51ID:???
>>670
$array[] = $var;
マニアルにあるこれじゃなくて?

>>672
所有者が違うからだね。
copy("a.php","b.php");かrenameするとアップロードできるかも
0679名無しさん@お腹いっぱい。2001/08/23(木) 23:58ID:cvwLP0ME
>>670-671
こんな感じ?
function _array_push($array, $value){
$array[count($array)+1] = $value;
return $array;
}
0680名無しさん@お腹いっぱい。2001/08/24(金) 00:01ID:FYzqPGzM
>>678
あ・・そんなのでできたのか。
鬱だ逝ってきます。。。
0681E_ERROR2001/08/24(金) 01:11ID:???
>>677 =673
どんな風に無理だったのですか?
『00001』の様に零が付くのが問題?
もしそうだったらその判定前に
$Hensu=sprintf("%d",$Hensu);
として零を削ってあげると良いかも。
ただ『00000』とかは『0』になりますけど。
0682名無しさん@お腹いっぱい。2001/08/24(金) 01:17ID:???
>>673
PHPはわかんないけど・・・。
Perlで書くとこんな感じじゃ駄目?

$webprog =~ s/\D//gi;
if($webprog and lengh $webprog <= 5){
 #数字で一桁以上五桁以下
}else{
 #それ以外
}
0683名無しさん@お腹いっぱい。2001/08/24(金) 01:20ID:???
PHPスレですから・・・
0684E_ERROR2001/08/24(金) 02:15ID:???
寝ぼけてました。
$var2=sprintf("%d",$var1);
だと$var1に数字以外の物が有ると$var2には値が出力されません
(4.0.6(Win32)で確認)。
よって判定をこの後にすることが或る意味、無意味になります。
それさえ踏まえれば使えるかな?後は五桁以下である事を判定すれば
良いのですし。
…あまり誉められたコーディングでは無いとは思いますが。
0685電動ナナシ2001/08/24(金) 02:40ID:???
先頭の 0 を削るなら、
$var = $var + 0;
でいいと思うけど。

ちなみに文字列に 0 を足すと、先頭から順に数字だけが抽出される。
例えば以下のような感じ。PHP^4.0.6 for Win32 で確認。
$var = "x12345"; $var = $var + 0; // $var は 0
$var = "012345"; $var = $var + 0; // $var は 12345
$var = "12345x"; $var = $var + 0; // $var は 12345
$var = "123x45"; $var = $var + 0; // $var は 123
0686E_ERROR2001/08/24(金) 05:00ID:???
>>685 (=電動ナナシさん)
成る程、マニュアルに載ってるこれ
http://www.php.net/manual/ja/language.types.string.php
ですよね?勉強になりました。
しかし奥が深いです、PHPマニュアル…。

// でも更新が頻繁なのは嬉しいけど…面倒(苦笑 <=贅沢者

ところで頭の零を削るなら
$var2 = (int) $var;
って方法もありますね。
結果は電動ナナシさんのとかなり似てますが。
$var = "x12345"; $var2 = (int) $var; // $var2 は NULL
$var = "012345"; $var2 = (int) $var; // $var2 は 12345
$var = "12345x"; $var2 = (int) $var; // $var2 は 12345
$var = "123x45"; $var2 = (int) $var; // $var2 は 123

// int への型キャストのデフォは10進であることを利用
// Codeの展開を考えると利用し辛そうですが
0687名無しさん@お腹いっぱい。 2001/08/24(金) 09:42ID:BsoJVBdw
>>682
正規表現じゃな〜いじゃん♪
06886722001/08/24(金) 10:46ID:zxBSBd8M
>>678
あの…、よくわからないのですがもう少し詳しくご説明頂けませんか?
お手数ですがよろしくお願いします。
0689名無しさん@お腹いっぱい。2001/08/24(金) 11:55ID:daCgTec.
PHPで今週の頭の日付を取得ってどうやるんですかね。
0690電動ナナシ2001/08/24(金) 13:14ID:alNuUBUQ
>>686
ああ、そっちの方がいいかな。

>>689
<?php
$now = time();
$today = getdate($now);
// ↓ 週の先頭の日付を計算
$firstDayOfThisWeek = $now - $today["wday"] * 86400;
echo "First Date of this week is \"" .
  date("Y-M-d (l)", $firstDayOfThisWeek) . "\"<br>\r";
?>

# 一度月間カレンダーを作ってみた方がいいんじゃないかと思うが。
0691名無しさん@お腹いっぱい。2001/08/24(金) 17:44ID:fC1LCBVo
ttp://php.s3.to/

ここってハックされちゃったんですか?
中国って遊ぶ所が少なそうだから、PCやネットなんか覚えると
ハマっちゃうんだろうな
0692名無しさん@お腹いっぱい。2001/08/24(金) 18:17ID:???
>>691
日本人の仕業じゃないかな。
あそこの管理人はセキュリティ意識が無さすぎた。
0693名無しさん@お腹いっぱい。01/08/27 10:51ID:zDtQUNGM
PHP Version 3.0.18-i18n-ja-2って、2バイト文字サポートされてないんでしょうか?
フォームからの入力で送信した文字列データを単純にプレーンテキストに落としたんですが
2バイト文字は全て文字化けしてしまってる様なんですが…
0694名無しさん@お腹いっぱい。01/08/28 00:04ID:igLWKZBA
cookieにメールアドレスを書き込みたいんですけど、
簡単な暗号化の方法を教えてもらえないでしょうか?

指定したキーで簡単に複合化できるものないですか?
0695助けてわかんない01/08/28 01:48ID:0MY67l12
PHPと言うかプログラム自体最近始めたばっかの
超超初心者なんですけど昨日今日総合のカウンタ
が全然わかんないです。誰かサンプルソース書いて下さい。
検索したけど見つからなかったんで。
0696名無しさん@お腹いっぱい。01/08/28 04:59ID:18vpKowI
>>694
文字コードを少しずらしてやるとか。
ルールを指定して並べ替えるとか。
0697E_ERROR01/08/28 05:06ID:.gNJSO/.
>>694 さん
Mycrypt関数(http://www.php.net/manual/ja/ref.mcrypt.php)
を使うか、
若しくは出来合いの奴を
http://php.resourceindex.com/Functions_and_Classes/
http://www.hotscripts.com/PHP/Scripts_and_Programs/
この辺で探すと良いかも。

>>695 (助けてわかんないさん)
上の後者2つのURIに有るんで参考にしてみると良いですね。
取り合えず、というのでしたら
http://www.dcl.info.waseda.ac.jp/~hasegawa/php/
で簡単な解説あるので良いかも。
0698E_ERROR01/08/28 05:13ID:.gNJSO/.
ereg_replace("Mycrypt","Mcrypt",>>697);
あう〜…。
0699名無しさん@お腹いっぱい。01/08/28 07:36ID:JnQA54xw

各大学の学生ポータルたん萌え〜

早稲田 ―http://waseda-links.com
ICU ―http://icunavi.com
立教 ―http://ri-style.com
東邦 ―http://www.h2.dion.ne.jp/~jn1
東洋 ―http://toyowave.com
中央 ―http://chuo.pos.to

↑マターリパラダイース(・∀・)イイ!
 
0700名無しさん@お腹いっぱい。01/08/29 04:33ID:zqod.sPs
ID隠せなくナタノ?
0701名無しさん@お腹いっぱい。01/08/29 12:34ID:Hz0wel/E
Perlのファイルロックは信頼性がないということだったので、
自前でファイルロックの仕組みを組んで解決していましたが、
PHPのファイルロックの信頼性はどれほどでしょうか。
0702名無しさん@お腹いっぱい。01/08/29 12:38ID:r10mk.nk
>Perlのファイルロックは信頼性がないということだったので、
何処でそんなデマ聞いた?
0703名無しさん@お腹いっぱい。01/08/29 12:42ID:Hz0wel/E
>>702
いくつかの書籍にそう書いてあるが
070470301/08/29 13:09ID:Hz0wel/E
Perlのファイルロックについてですが・・・。
ここにもありました。現在は解決されているようです(たぶん)
http://tohoho.wakusei.ne.jp/lng/199807/98070060.htm
0705名無しさん@お腹いっぱい。01/08/29 16:37ID:9EJfCa2E
[14] Re: Re: 足跡♪ 投稿者:あげまん  投稿日:2001/01/14(Sun) 22:09
> mkdir()でロックすると環境を選ばない感じで好きなんです。

人様のスクリプト&考えにケチつけるつもりじゃありませんが、、
flockが使える環境ならぜったいこちらを使うべきだと思いますが・・・

http://www.wakusei.ne.jp/twn/wwwlng.cgi?print+199903/99030145.txt

とほほさん、びーかすさんの発言、参考になります。。

symlink, mkdir, flockはいずれも、ロックを『かける』ことに関して
は完璧。OSがちゃんと排他制御してくれる。

symlinkとmkdirの違いは、mkdirだと、Windowsでも利用できるという
ことくらいしかない。信頼度は同じ。

ただし、symlink, mkdirはロックを『はずす』時に問題があり、ロッ
ク中にプロセスが異常終了したりすると、ロックファイルが残ったま
まになる。

その点、flockはロックを『はずす』時も完璧で、たとえプロセスが異
常終了しても、OSがストールしても、ロックが残ることは有り得ない。
信頼性ではsymlink, mkdirよりもflockの方が高い。ただしflockは、
UNIXでもサポートしていないOSがある。


# PHPだとマヌアル見るかぎりWindowsもサポートしてるみたい、、わからんけど。

> ファイルをロックするというより、処理全体をロックする感じにできますし。

$lock = fopen('lock.txt', 'w') or error('ロックファイルを作成できませんでした。');
flock($lock, 2) or error('ロックできませんでした。');

〜処理〜

fclose($lock);

じゃだめですか?
0706名無しさん@お腹いっぱい。01/08/29 16:52ID:9WjD.Pdc
http://tohoho.wakusei.ne.jp/lng/199903/99030145.htm
070770301/08/30 09:29ID:/FKRYfJU
# PHPだとマヌアル見るかぎりWindowsもサポートしてるみたい、、わからんけど。
http://php.ssi.bg/manual/ja/function.flock.php
Win環境のことはよくわからんが、ここの「警告」の部分を読むと
IISのISAPI環境下ではflockは使えないようだ。
0708名無しさん@お腹いっぱい。01/08/30 10:09ID:3TFNK/cI
>>707
下の User Contributed Notes にはwin98でflockが効かない
っていうメッセージがありますね。
phpは使ったこと無いけど実際どうなんでしょ?
070970301/08/30 12:12ID:/FKRYfJU
>>708
Win98ということはIISか、Apacheだろうな。
707でも書いたけど、抜粋すると
>ほとんどのオーペレーティングシステムで flock()
>はプロセスレベルで実装されています。 ISAPIのよ
>うなマルチスレッド型のサーバーAPIを使用している
>場合、同 じサーバーインスタンスの並列スレッドで
>実行されている他のPHPスク リプトに対してファイル
>を保護する際に flock() を使用することはできません。

IISでもApacheでもISAPI環境下では使えないということだと
思うけど? スクリプトとして使えばOKということか?
Winのことはあんまりなのでスマソ。
個人的にはLinuxで使っているんで関係ないです。
0710名無しさん@お腹いっぱい。01/08/30 12:19ID:UyczCLUM
>>709
Win98ならIISじゃねーだろ
0711名無しさん@お腹いっぱい。01/08/30 12:37ID:Um1Da8Sw
ウィソで鮪たててるやつなんかflock必要なほどアクセスなんかないでろう
0712[01/08/30 12:58ID:nQguzC6Q
[
0713名無しさん@お腹いっぱい。01/08/31 14:05ID:OPUkQPbU
ある数値を小数点第2位で四捨五入するには
どうしたらいいでしょうか?
0714名無しさん@お腹いっぱい。01/08/31 14:43ID:oeZCoe02
>>713
マニュアルぐらい見ましょう。
http://www.php.net/manual/ja/function.round.php
0715名無しさん@お腹いっぱい。01/08/31 19:03ID:OPUkQPbU
>>714
感謝!!
基本を忘れ、ずっと参考書見てました。
0716超ドキュソ01/09/01 00:10ID:CoQXeBb6
perlで言うeqやneって何?文字列比較演算子ね。
超わかんない。
0717名無しさん@お腹いっぱい。01/09/01 00:17ID:JGsm/JSs
http://iseek.himawaribank.co.jp/
のようなレンタル日記のスクリプト配布されてませんか?
0718名無しさん@お腹いっぱい。01/09/01 00:23ID:yUhB/70g
>>716
==
!=

>>717
こういうレンタル系のPHPスクリプトは殆ど配布されていません。
自分で作りましょう。
0719名無しさん@お腹いっぱい。01/09/01 00:29ID:j2NtyKS.
マンモス本はクソ。マニュアル最高
0720超ドキュソ01/09/01 00:29ID:CoQXeBb6
>>718
あ、== != でヨカタの?
なんか文字列にしたらうまくいかなかったからさ。
0721名無しさん@お腹いっぱい。01/09/01 00:41ID:tdXlcdvA
>>719
というか、マンモス本ってマニュアルに書いてあることと何が違うの? マル写しじゃん!
0722名無しさん@お腹いっぱい。01/09/01 17:55ID:hQ/Rc1cw
>>721
マル写しではありません。
マニュアルの一部抜粋です。
0723名無しさん@お腹いっぱい。01/09/01 21:10ID:tdXlcdvA
>>722
マニュアル>マンモス本

ってことで sage
0724 01/09/04 00:52ID:v.Yb6HDE
PHP has encountered an Access Violation at 0C2CBBFB

このエラーって何ですか?
072572401/09/04 03:15ID:v.Yb6HDE
自己解決
flockの記述がおかしかったみたい
0726ほえほえ ◆fxJvLsyA 01/09/04 10:32ID:y0UKZUiw
今本を見ながらPHPを勉強中なんですが、本に書いてあったソースを写して実行してみたんですがうまくいきませんません。
<?php
$failname="log.txt";
if($sousin){
$hozonfail=$failname.".bak";
if(copy($kakikofail,$hozonfail)){
$fp=fopen($failname,"W");
if(flock($fp,2)){
fputs($fp,$naiyou);
flock($fp,3);
}else{
echo "error";
exit;
}
fclose($fp);
}else{
echo "error";
exit;
} }
?>
<html> <head>
<title><?php echo $failname; ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>
<body>
<form action="<? echo $PHP_SELF; ?>" method="post">
<textarea name="naiyou" rows="30" cols"30">
<? require($failname); ?>
</textarea>
<input type="submit" name"sousin" value="更新">
</form> </body> </html>

これなんですが解りますでしょうか。
カキコして送信するとlog.txtの内容が書き換わると言う奴なんですが。。。
0727名無しさん@お腹いっぱい。01/09/04 11:20ID:h3PWA/eg
うまくいきませんません、じゃわかりませんません。

エラー終了なら
copy($kakikofail,$hozonfail) or die("コピーエラー");
としたほうがよい
0728名無しさん@お腹いっぱい。01/09/04 11:44ID:eE6ftGCA
関数には値渡しがデフォルトですけど、
配列を渡したい場合にはどうしたらいいんでしょう?
参照渡しでどうにかできるのかしら。
0729名無しさん@お腹いっぱい。01/09/04 11:45ID:NMYjZ6nA
つかなんでfileがfailなのか教えてくれ そこまでローマ字にするべきなのか?
0730名無しさん@お腹いっぱい。01/09/04 11:46ID:sfyz3S5.
1.HTMLの記述ミス(2箇所)
2.変数の定義
3.fopenの引数

以上3箇所の間違いがあります。

あと、failというのは故意にfileとしてないの?

故意じゃないなら、PHPはエラーが英語で返ってくるので、fileをfailと
間違わない程度に英語を勉強した方が良いでしょう。
わざとfailにしているならスマソ。

fail : 失敗する ・・・・・合ってるのかも(w
073173001/09/04 11:48ID:sfyz3S5.
微妙に被った。
0732名無しさん@お腹いっぱい。01/09/04 14:35ID:eE6ftGCA
728ですけど何にも考えずに

function($hoge[]){
}

で良かったんですね。ウトゥだ...。
0733小01/09/04 23:53ID:v.Yb6HDE
srandの意味がわかりません。
randだけではいけないのですか?
0734電動ナナシ01/09/05 00:41ID:Dl24b5Kw
>>733
rand() は、シードと呼ばれるある数字をもとに、計算した結果を返す。
計算内容は最初から決まっているので、シードが分かってしまうと結果と
なる乱数が分かってしまう。これでは都合が悪い場合がありうる。特に
暗号化処理などで乱数を使う場合には非常に都合が悪い。

シードは通常現在時刻とされることが多いので(PHP が何を使っているか
は特に調べていない)、時刻がわかると計算結果がわかってしまう可能性も
高い。そこでシードを自由に定義できるようにしたのがこの srand() 関数。

ということで必要に応じて使うのがよい。ポイントは、rand() の結果が
予測されてまずいことがあるか?である。なおシードの与え方が下手糞だと
かえって予測しやすくなる可能性もあるので注意。

<?php
// seed が一定なら、rand() の結果も一定であることを示す
function seedTest($seed) {
 srand($seed);
 return rand();
}
for ($i = 0; $i <= 10; $i++) {
 srand($i);
 $rand[$i] = rand();
}
for ($i = 0; $i < 10000; $i++) {
 $x = $i % 10;
 $currentRandom = seedTest($x);
 $diff[$x] += abs($rand[$x] - $currentRandom);
}
for ($i = 0; $i <= 10; $i++) {
 echo "total amount of diffrences is " . $diff[$x] . "<br>\r";
}
?>
結果はすべて 0 になる。つまり seed が一緒なら rand() の結果も一緒。
0735電動ナナシ01/09/05 00:43ID:Dl24b5Kw
for ループの条件判定 $i <= 10 は $i < 10 でいい。打つ出し脳。
0736小01/09/05 03:01ID:BfAYMTkY
>>734
srandの意味理解できました。
なんか2ちゃんなのにそこまで丁寧に教えてくれるとは
思ってもみなかったです。
どうもありがとうございました。
0737名無しさん@XEmacs01/09/05 10:42ID:/1y1O2Rw

クラスと通常の関数で呼び出しのコストに差がありますか?
0738名無しさん@お腹いっぱい。01/09/05 17:48ID:eOOIHzsk
'./configure' '--enable-memory-limit''--with-pgsql=/usr/local/pgsql--with-apxs=/usr/local/apache/bin/apxs' '--enable-mbstring' '--enable-mbstr-enc-trans' '--without-mysql' '--with-gdbm''--with-gd=shared' '--with-zlib' '--enable-shared-pdflib'
(from phpinfo())
すんません,こんなconfigureしたらcgi版としてインストール去れちゃったんですけど・・・
0739電動ナナシ01/09/05 17:55ID:Dl24b5Kw
>>738
'--with-pgsql=/usr/local/pgsql--with-apxs=/usr/local/apache/bin/apxs' が
一つの指示子として理解されているからだろ?

--with-apxs の前にスペースがないだけじゃないのか?。
0740電動ナナシ01/09/05 18:08ID:Dl24b5Kw
>>737
自分で実験してみりゃいいじゃん。
例えば同じ処理内容の関数とメソッドを 1000 回呼び出して
それにかかった時間を比較するとかさ。
0741名無しさん@お腹いっぱい。01/09/05 21:59ID:vJu84N5c
urlencodeとrawurlencodeと何が違うのでしょうか?
書籍やマニュアルを読みましたが分かりませんでした。
0742a'x01/09/05 22:32ID:ORI0WPw6
>>741
嘘つくな。マニュアルにしっかりと明記されている。
http://www.php.net/manual/ja/function.urlencode.php
0743電動ナナシ01/09/06 02:28ID:WeJ1j8Ik
>>737
実験してみたが、倍近く時間がかかるな。
0744名無しさん@お腹いっぱい。01/09/06 12:02ID:S15PyfDM
GIF、PNG、JPGが一括して扱えるGDライブラリが出回っているようですが、ひょっとし
て既出でしょうか。

http://php.weblogs.com/php_gd
0745素人01/09/06 13:55ID:tXlMtLNg
超素人な質問でごめんなさい。
flockは読み込みだけのときもした方が良いのでしょうか?
読み込みだけならflockしない方が処理が早いとかあるのでしょうか?
0746名無しさん@お腹いっぱい。01/09/06 14:07ID:TE3IkoNg
>flockは読み込みだけのときもした方が良いのでしょうか?
しましょう。

何か処理をする以上しないよりは当然遅くなりますが、
flock程度なら長時間ロックを開放しない操作とぶつかったりしない限り
人間の脳では「遅い」と体感できません。
0747素人01/09/06 14:37ID:tXlMtLNg
>>746
こんな素人な質問にも答えて頂いてありがとうございました。
■ このスレッドは過去ログ倉庫に格納されています