トップページ⇒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/
0581電動ナナシ2001/08/03(金) 00:44ID:Oa5aY4k6
>>578
SQL 的解法:
Table AAA の ColX を Table BBB の ColX の外部キーにし、削除が
CASCADE するように定義する。例えば、PostgreSQL なら
CREATE TABLE bbb (
 colx int2,
 varchar coly,
 CONSTRAINT fk_aaa FOREIGN KEY (colx) REFERENCES aaa(colx) ON DELETE CASCADE
);
とする。

別解:
pg_Exec("BEGIN");
pg_Exec("DELETE FROM bbb WHERE colx IN (SELECT colx FROM aaa WHERE coly = '" . ${Key} . "')");
pg_Exec("DELETE FROM aaa WHERE coly = " . ${key} . ";");
pg_Exec("COMMIT");
0582電動ナナシ2001/08/03(金) 00:48ID:???
ああ、未修正のまま書いてしまった
CREATE TABLE bbb (
 colx int2,
 coly text,
 CONSTRAINT fk_aaa FOREIGN KEY (colx) REFERENCES aaa(colx) ON DELETE CASCADE
);
0583困ってます。2001/08/03(金) 11:14ID:UwPOu2zo
電動ナナシさん、レスありがとうございます。
うちはSYBASEなんですが、同じような事が出来ると思うので
これからがんばってみます。
0584困ってます。2001/08/03(金) 11:15ID:???
教えて君さんもありがとうございます。
0585教えて君2001/08/03(金) 11:35ID:???
>>584
俺、別に何もしてないで
だと情報量 0 なので
>>581 >電動さん
別解の方やけど、なんで一行ずつ pg_exec() するのん? もったいなくない?
0586コメント無しさん2001/08/03(金) 13:45ID:DhQExyss
>>585
581じゃないけど、結局エラー処理がはさまってrollbackしたりするから
まとめてpg_execしないほうがいいんじゃない?
0587電動ナナシ2001/08/03(金) 13:56ID:???
>>585
単純に SQL 文を書こうと思ったんだけど、何となく PHP スレだから
PHP のコードの方がいいかなと思って pg_Exec をつけただけ。
特に意味は無いよ。
0588電動ナナシ2001/08/03(金) 13:59ID:???
>>586
そうそう。少なくとも COMMIT だけは除外しないと。
本気で書くのだったら commit の前に pg_Exec の戻り値を拾って
エラーだったら rollback という手順が必要だよね。
0589困ってます。2001/08/03(金) 15:04ID:UwPOu2zo
578で質問させてもらって、581の別解の考え方でやろうと思うのですが
今度はPHPの書き方でつまずいています。。

SQL文が1文だけの時は、以下のように書いてきましたが

<?
:
:
$CONN=sybase_connect("SERVER","USER","PASS");
$SQL="SELECT column FROM table WHERE column = 'hoge'";
$RES=sybase_query($SQL,$CONN);
:
:
?>

BEGIN
DELETE FROM bbb WHERE colx IN (SELECT colx FROM aaa WHERE coly = '" . ${Key} . "
DELETE FROM aaa WHERE coly = " . ${key} . "
COMMIT

このようなトランザクションとか複数のSQL文を実行させるためには
PHPはどのように記述すれば良いのでしょうか?
よろしくお願いします。
05905682001/08/03(金) 18:40ID:aNOrs4Vo
>>569
>>570
>>571
皆さん、ありがとうございます。

>電動ナナシ様
当方、プログラミングはHTML以外でPHPが始めてなんです。
もし宜しければお書きいただいております「アプリケーショ
ンの設計」関連で初心者を対象とした良い書籍などを教えて
いただけませんでしょうか。
0591教えて君2001/08/03(金) 22:26ID:???
>>589
どうなるかわからんけど試しにちょっと書いてみようかとか思わん?

>$SQL="SELECT column FROM table WHERE column = 'hoge'";

の中をそのまま置き換えればええだけ。

あと、>>588
COMMIT も含んでええんちゃうん?
エラーが発生した時点でそのトランザクション成立してないわけやし。
あ、でも RDBMS によってはマズいやつもあんのかな?
0592電動ナナシ2001/08/04(土) 00:22ID:yWM3EPUw
>>590
自分はオブジェクト指向から入った人間なので、テーマがオブジェクト
指向分析・設計になってしまうけど、
「オブジェクト指向とコンポーネントによるソフトウェア工学」
 http://www.ogis-ri.co.jp/otc/hiroba/OoBook/BookRanking/UMLBooks/UsingUML.html
とか
「憂鬱なプログラマのためのオブジェクト指向開発講座」
 http://www.seshop.com/bm_detail.asp?sku=56190
とかがよかったと思う。ただ後者については C++ の基礎知識がないと
読むのが面倒かもしれない。

英文を読めるなら
"The CRC Card Book"
 http://cseng.aw.com/book/0,3828,0201895358,00.html
もいいと思う。翻訳が出るという噂もあるが、いつ出るかは不明。
0593電動ナナシ2001/08/04(土) 00:27ID:yWM3EPUw
>>591
begin して処理が中断されたときに勝手に commit するような実装は
まずないと思うけど、なるべく後始末を明示的にきちんとやる習慣を
つけた方がよいと思ってああ書いた。それにほかの人がコードを見た
ときに何をしているかを明らかにするという効果もあるだろう。

きちんと分かっている人どうしでなら省略してもいいだろうね。
0594名無しさん@お腹いっぱい。2001/08/04(土) 01:12ID:h7D7YGic
●php特有の話じゃないかもしれないですが、echoとprintの違いってなんですか?

●ヒアドキュメントで格納した変数を表示しようとしたら、
printだといけて、echoだとエラーになりました。上記と関係あるんかな?
0595名無しさん@お腹いっぱい。2001/08/04(土) 02:07ID:???
http://www.php.net/manual/ja/function.echo.php

ここに書いてあることがすべて
0596コメント無しさん2001/08/04(土) 02:37ID:5S9xJi7Q
>>590
プログラム知らない人間にそれは無謀と思われ。
0597コメント無しさん2001/08/04(土) 02:48ID:5S9xJi7Q
まちがえた。
>>592ダタヨ。

>>590
とりあえず、ソフトウェア設計初心者向けの本はあってもプログラム
の知識が一通りあることが暗黙の了解。
プログラムがソフトウェア作成の1工程にすぎない&もっとも重要な
工程であることを意識しつつ、まずはプログラムをがしがし組んで見
るのが良いと思うよ。
>>592の本の中では「憂鬱な〜」が一番平易な表現で読みやすいと思う。
C++の知識が無くてもCの知識で充分なはず。
というか、Cの知識しかない人向けだったと思うが。
とはいえプログラムの知識がなくて読めるオブジェクト指向の本はこれ
だけだと思うよ。
0598コメント無しさん2001/08/04(土) 06:17ID:5S9xJi7Q
>>594
ステートメントと関数の違い
0599名無しさん@お腹いっぱい。2001/08/04(土) 16:12ID:h7D7YGic
関数のなかでヒアドキュメントを使うと
expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'
といわれてしまうのですが、なぜですか?
06005992001/08/04(土) 16:40ID:???
ちなみに4.0.6
0601電動ナナシ2001/08/04(土) 17:49ID:yWM3EPUw
>>599
これで動いたけど?そういう話ではない?

<html>
<head><title>Test</title></head>
<body>
<?php
function heredoc($str) {
 echo <<<EOT
 <b>
 TEST OF HERE DOCUMENT IN FUNCTION<br>
 $str
 </b>
EOT;
}
heredoc("hoge");
?>
</body></html>
0602電動ナナシ2001/08/04(土) 17:59ID:yWM3EPUw
>>597
やっぱり敷居が高い?
モジュール化、凝集度、結合度って概念を理解してほしいなって思った
んだけどね。

プログラミング言語の知識なしに読める本なら、これもいいかもしれない。
「オブジェクト指向プログラミング入門」Timothy Budd 著
 http://www.amazon.co.jp/exec/obidos/tg/detail/glance/-/books/4795297088/
 http://www.google.com/url?sa=U&start=4&q=http://home1.infonia.ne.jp/~delphian/delphi/history/bookrank2/bookrank/30.htm&e=642
ただ版元品切れかもなあ。大き目の本屋にいけば在庫があるはず。
06035992001/08/04(土) 18:12ID:h7D7YGic
すいません、関数の内外の問題ではないみたい。

●エラーのでるスクリプト:
<html>
<head><title>Test</title></head>
<body>
<?php
echo <<<EOT
<b>
TEST OF HERE DOCUMENT IN FUNCTION<br>
</b>
EOT;
?>
</body></html>

Parse error: parse error in /。。。。/test-here.php on line 11
(11行目は、</body></html>の行)

●↑で、ヒアドキュメントをやめたら動いた例<html>
<head><title>Test</title></head>
<body>
<?php
echo
"<b> ".
"TEST OF HERE DOCUMENT IN FUNCTION<br> ".
"</b>";
?>
</body></html>

・・・ヒアドキュメントを可能/不可能にする設定なんてありましたっけ?みつからないのですが。。。
ちなみに、phpinfoでちゃんと、バージョンは4.0.6でした。
0604コメント無しさん2001/08/04(土) 18:19ID:5S9xJi7Q
>>602
まずモジュール1個強がまともに作れないと。
分割もなにも無いと思う。

漏れのプログラムってだらだら長くて見にくいな〜とまず思わなければ
実感できないんじゃない?
0605電動ナナシ2001/08/04(土) 19:45ID:???
>>604
まあそうだよね。それじゃ >>568 さんがそういうことを実感した頃に
また改めて質問してもらうことにしよう。

つうことで、まずはガシガシコードを書いてみなさいな。>>568
0606電動ナナシ2001/08/04(土) 19:50ID:yWM3EPUw
>>603
EOT; の行の先頭に空白とか入っているんじゃない?
EOT; はその行の先頭にないと機能しないよ。
0607599=6032001/08/04(土) 20:16ID:???
>>603
いやぁ、どうみてもなにもはいっていないのですが。。。
おかしいな。。。
0608名無しさん@お腹いっぱい。2001/08/04(土) 21:28ID:???
Version は?
0609名無しさん@お腹いっぱい。2001/08/05(日) 18:07ID:???
「コードコンプリート」 ISBN4-7561-0210-7
STEVE McCONNELL著、アスキー刊
厚くて高いけどオススメ
0610電動ナナシ2001/08/06(月) 00:44ID:???
>>607
改行コードは?
06115682001/08/06(月) 12:04ID:sqMOPgc.
皆様、お勧め書籍の件ありがとうございます。
604さんのおっしゃる通りかもしれません。

まだ自分でこれだ!っていうスタイルもないのに、楽することを考えて
おりました。
実際に色々なプログラムを作成してみて、初めてこのプログラムを何と
かできないかなぁ〜、が正しい姿でしょうね。

こんどはプログラム自体で判らないことがありましたら、また改めて質
問させていただきます。
0612電動ナナシ2001/08/06(月) 16:17ID:???
>>609,>>611
「プログラム書法」B.W.Kernighan 他著
 http://kyoritsu-pub.topica.ne.jp/bookhtml/0306/000603.html
も手元に置いておくといいんじゃないかな。よいコードを書くにはどうすれば
よいのかという点に焦点を当てた本。古いけど、読みやすいし、初心者には
いいんじゃないかと思う。
0613名無しさん@お腹いっぱい。2001/08/06(月) 21:55ID:jVbx6/lY
Win98SE + Apache 1.3.20 + PHP 4.0.5 で社内向けの
システムの開発をしています。

Apacheが動いている状態で、ExcelやPDFのファイルをクリックしても
関連付けされたアプリが立ちあがらなくなってしまいました。
(正確には、5分後ぐらいに立ちあがる)

PHP 3.0.18-i18n-jaだとこのような現象はなかったのですが、
なんとか回避する方法はないでしょうか?

それとも素直に Linux や FreeBSD にするか、PHP3 に
戻すしかないのでしょうか。

httpd.confに以下は記述してあり、PHP自体は問題なく動いています。
LoadModule php4_module C:/php4/sapi/php4apache.dll
ScriptAlias /php4/ "C:/php4/"
AddType application/x-httpd-php4 .php
AddHandler cgi-script .cgi .pl
Action application/x-httpd-php4 "/php4/php.exe"

マニュアル読んで、半日検索してみたのですが解決策不明…
よろしくお願いします。
0614電動ナナシ2001/08/07(火) 01:36ID:hmQtM6Yc
>>613
どういうシチュエーションなのかよく分からないのだが。

・Apache を起動していると、エクスプローラ等で普通に Excel ファイルなどを
 ダブルクリックして起動させるのに時間がかかる。Apache を終了させると
 すぐに立ち上がる

・HTML ページ上に Excel や PDF ファイルに対するリンクがあるが、その
 リンクをクリックしても数分間応答がない。

後者の場合、リンク右クリックで「対象をファイルに保存」するとどうなる?
0615教えて君2001/08/07(火) 02:22ID:xDDaQDl.
PEAR の Integrated Template クラスで {変数名} とかって書けるけど
配列の時ってどうやるか誰か知ってる?

{hoge[0]}

なんてやっても認識してくれないみたいなんやけど...
ソースちらっと見ただけではようわからんかった...
0616ナナ萌え(゚д゚)ウマー2001/08/07(火) 02:43ID:???
$
0617教えて君2001/08/07(火) 03:10ID:xDDaQDl.
>>616
えーと... これって俺のに対するレスだよな?
ありがたいけど違うみたいっちゅーか
ソースもうちょっと見てみたらどうもやっぱり無理っぽいような
気がすんのは俺だけ?

foreach ($this->variableCache as $name => $value) {
$regs[] = "@" . $this->openingDelimiter . $name . $this->closing
Delimiter . "@";
$values[] = $value;
}

ここと違う?
06186132001/08/07(火) 08:42ID:sBm9S5Ck
>>614
レスありがとうございます。相談したケースは前者です。

後者を試してみたら、リンクから起動も「対象をファイルに保存」も
普通の速度でできたんですが…
0619名無しさん@お腹いっぱい。2001/08/07(火) 10:16ID:B/Zo5TSw
日本語と英数文字を区別する関数ってありますかね?
0620JAPU@エアコン直った...2001/08/07(火) 11:39ID:???
区別するって、日本語 (ここではASCII以外という意味) が含まれているかそうじゃないかってこと?
たとえば、EUC-JP ならこんなかんじで、

sub iskanji
{
return shift =~ /[\x8e\x8f\xa0-\xfe]/;
}

ASCII 以外の文字が含まれていれば真を返します。
0621JAPU2001/08/07(火) 12:30ID:???
正確には EUC-JP の JISX 0201 Kana, 0212, 0208 が含まれていれば、だけど。
0622名無しさん@お腹いっぱい。2001/08/07(火) 13:48ID:???
ここは PHP スレです。
0623名無しさん@お腹いっぱい。2001/08/07(火) 15:06ID:Ny4LYuIY
if(eregi("[:alnum:]",$esumoji))
{
print_r $esumoji;
}
else{
echo "(゚д゚)マイウー";
}
0624名無しさん@お腹いっぱい。2001/08/07(火) 16:59ID:???
JAPUたんPHP出来るのか?(藁
0625JAPU2001/08/07(火) 19:01ID:???
PHPスレッドだったのねスマヌ...
氏んできます。
0626電動ナナシ2001/08/07(火) 19:17ID:???
>>622,>>624
せっかくの知識を生かさない手はないと思う。

Perl から PHP に翻訳可能なコードだったらどんどん出してもらって
いいと思う。翻訳可能かどうかはこっちが判断することにして、もし
翻訳不能なら、これは翻訳できないってフィードバックを返せばいいのでは
ないかな。そのうえでコミュニケーション不能って判断になるのだったら
それはそれで仕方が無い。
0627名無しさん@お腹いっぱい。2001/08/07(火) 19:56ID:???
>>626
良い事言うね。
0628Untitled2001/08/07(火) 20:28ID:???
 最近PHPの開発ばっかやってたので、=~のperl正規表現が懐かしかったり(笑)
0629名無しさん@お腹いっぱい。2001/08/09(木) 18:16ID:TsBLqvp.
PHPLIBを使ってユーザー認証してるHPを作ってるんだけど、
i-modeに対応させようとi-mode用のHPも作ろうと試行錯誤してます。

PostgreSQLとphpを連動させてるんで、phpファイルなどの文字コードは
当然EUC-JPなんで、i-mode用のHPはファイルの出力の前にバッファリングして、
バッファの内容を一度変数に入れ、その変数をSJISにコンバートして出力してます。

で、フォームなどから入力されたデータは、$HTTP_POST_VARS、$HTTP_GET_VARSの
データを分解して、SJISからEUC-JPにコンバートしてデータを渡すようにしてます。


で、何故かi-mode端末からログインできません。
ユーザー認証が失敗した画面になります。

ちなみに、パソコンからは問題なくログインできます。

認証のIDやパスワードは英数字を使っているんで、文字コードの問題としても
通りそうなもんなんだけど。

ちなみに、ID、ユーザー名を空、つまりnull(という表現で合っているのか?)で
あらかじめ登録しておいて、認証画面の際に何も入力しないでログインボタンを押しても
行けるようにやってみたけど、やはりi-mode端末からはダメ。

考えられる原因があれば教えてください。
0630微笑2001/08/09(木) 19:08ID:???
__
         〃 _`__
     ,,-=-、、l{,_'´..._ `ヽ、、
   〃. ',.´二W´- ‐-`\ \ヽ、___
   _{l,'.'´      、 ヽ ヽ ヽ彡k、ヽ\
  .//`/   i l.    \ 、ヽ `、 i彡}ヽ`' ´ ▲女優,アイドル、脱がしました▲
. /| / i {  |l {\ {ヽ、_!..ヽ」_/} .}./ |__〉、
 \l.{. l.ヾ _.ゝ_土. ゝ -'fT;;ヽ,| lテ}| ||__〉
   /iヽゝヽ/{~);;:l     {:..''ノ'ノノ|{ノ |_!!女優,女子高生のエッチ画像ばかりを厳選収集!スクール水着,女優,画像ばかり。
  .|_|l」ヽ. ヽ ゞ‐'   、   ̄`ノレヽソ|  
     (.ソ.ゝ     --    /' {=}ノ ◆アイドル画像秘宝館◆
     (=| l へ、      /ノノ((.)). http://www.futomomo.com/netidol/idolhappy/maki/ 
     ((!)ヾヽヽ` ;.- ' ´ |'' ''"'´◆アイドラー◆
         `~^``/'l    ゜>\_ http://www.futomomo.com/netidol/idoler/megu/
     , -‐〃"´ |___/   >- 、 ◆セーラー服◆
   / ./〃    |=/    〃/  \ http://www.futomomo.com/netidol/sailor/miku/
  /   | ||, ‐-、_,...!、/_ ,..、 .〃/      ヽ ◆人妻◆
  〈   / -ー.{ { {.=  ヽ、|| l      | http://www.futomomo.com/netidol/waif/mai/
  |   ヽ  /| |\   / i 〉        | ◆スイート倶楽部◆
  〈  ∧ l_/./ |  | \ _/  /       / http://www.futomomo.com/netidol/sweetclub/miyuki/

asfvbgbh
0631名無しさん@お腹いっぱい。2001/08/10(金) 02:13ID:???
sage
0632名無しさん@お腹いっぱい。2001/08/10(金) 15:20ID:mgFNCq6A
PHPってライセンス体系はどうなってるんでしょう?
0633名無しさん@お腹いっぱい。2001/08/10(金) 15:46ID:DFraO..k
PHP3+GD+freetypeで日本語出力しているのですが、
フォントのディセンダ、アセンダは求められます
でしょうか?
0634名無しさん@お腹いっぱい。2001/08/11(土) 14:39ID:???
PHPとは特に関係ないのですが、今こんなのやってます。

クライアント(ActiveX)からサーバ(PHP)にファイル名をEUC変換
してPOSTする。
クライアントからサーバにPOSTしてさっきアップしたファイル名を取得する。
取得方法はPHPの吐いたHTMLを見て<FILENAME>xxx</FILENAME>
の部分のxxxを取り出しEUC→SJIS変換

ここでアップするファイル名が全角のdで終わる場合、なんか↓のように
「<」が見えなくなってしまいます。
<FILENAME>〜EUC文字〜/FILENAME>

ほんとウンコな質問ですみません。
06356342001/08/11(土) 14:48ID:???
今思ったけど、これってPHPの吐いたHTMLを一度SJIS変換してから
みればいい。。。(のかな?)
0636名無しさん@お腹いっぱい。2001/08/16(木) 15:21ID:WXA1sEiA
昨日からあれこれ試しているのですがうまくできないので教えてください。

PHPで作っているFORMからatコマンドで予約をしようと考えています。
実際はメールニュースの配信予約をしようと考えています。

以下はテストで作っているスクリプトの一部です。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 配信予約
$command = "/bin/ls -l /tmp |at 1500 2001-08-16";
$command = escapeshellcmd($command);
exec("$command") or Error("配信予約に失敗しました。");

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
※Function Error()は別途作っています。

コマンドラインから
$ /bin/ls -l /tmp |at 1500 2001-08-16
と入力すると
warning: commands will be executed using /bin/sh
job 15 at 2001-08-16 15:00
というようにワーニングは出るものの登録されます。

$ atq
でも表示されるのですが、ウェブから実行しても登録されません。
exec()関数の使い方が間違っているのでしょうか?
0637名無しさん@お腹いっぱい。2001/08/16(木) 16:32ID:???
シェル(コマンドライン)とWebではユーザーが違うと思われ。
登録の確認はWebのユーザー (nobodyとか。サーバーの設定によって違う)でやってる?
0638電動ナナシ2001/08/16(木) 16:36ID:byTTeF5o
>>636
exec() する前の $command の内容を見てみな。

$command = escapeshellcmd($command);
echo "\$command is '" . $command . "'<br>\r";
exec("$command") or Error("配信予約に失敗しました。");
06396362001/08/16(木) 17:31ID:WXA1sEiA
>>637
ユーザの確認はしました。最初忘れてましたけど(^^;
ご指摘ありがとうございます。

>>638
電動ナナシさん

$command = escapeshellcmd($command);
を消したらうまくいきました。パイプが\回避されてるのがダメだったみたいです。
どうもありがとうございます。
0640電動ナナシ2001/08/16(木) 20:23ID:byTTeF5o
>>632
PHP3 までは GPL、PHP4 からは PHP ライセンス + Zend ライセンス
詳しくは以下を参照。
http://www.php.net/license/

>>633
無理そうだなあ。
# Ascent, Descent の意味は以下の通りでいいんだよね?
 http://www.aceprocess.com/pro_tips2.html

>>634
なぜファイル名を 2 バイト文字で保存する必要が?
0641さる2001/08/17(金) 04:31ID:???
$var = Null; (<php4の関数)
と同じことをphp3で実現するにはどうすればいいのでしょうか?
0642電動ナナシ2001/08/17(金) 05:56ID:YqYraPdc
unset($var);
06436292001/08/17(金) 10:27ID:yJr7QHdU
自己レス。
原因は「local.inc」中の「Example_Sesson」クラスの「$fallback_mode」を
「"post"」にしていたから、みたい。
なんで「"post"」にしてたかっていうと、URLにセッションのID(?)みたいなのが
表示されるのがイヤだったからなんだけど。

でも今度は認証かけてある各ページに行く度にログイン画面になるし。
これもi-mode端末のみの現象なんだけど。

なんでだろうなぁ。
0644名無しさん@お腹いっぱい。2001/08/17(金) 22:58ID:h5Ic9dxw
>>640
え?フリーじゃないってこと?よくわかんないや
0645名無しさん@お腹いっぱい。2001/08/18(土) 00:37ID:???
>>644
そういう分からない人の為にわざわざURI書いてくれてんのに、
よくそんな発言出来るよな・・・。(;´д`)シンジラレネーヨ
0646名無しさん@お腹いっぱい。2001/08/18(土) 08:25ID:???
こめんなさい
英語も読めないしGPLやZendの意味もわからない僕がPHPを
始めようとすること自体間違いだったのかもしれないです
ライセンスに関する日本語ドキュメントどこにも無いんですよね、、、
ということで失せます
0647電動ナナシ2001/08/18(土) 17:38ID:0Aevniqc
>>646
まあ基本的にフリーだが、一部制限つきということだ。
FAQ より引用。

Q. なぜ PHP4 は PHP3 がそうであったように GNU Public License (GPL) の
もとで二重ライセンスとしなかったのでしょうか?

A. GPL はライセンスされたコードに対し、何が可能で何が不可能かについて
 厳しい制約を強制します。PHP の開発者は、PHP をできるかぎり普及させる
 助けとするために、より緩やかなライセンス(Apache スタイルの)のもとで
 PHP をリリースすることを決断しました。

Q. 端的に言って、PHP ライセンスは何を意味しているのでしょうか?

A. (注意: この回答はいかなる意味においても PHP ライセンスを変更するもの
 ではなく、ライセンスが意味するところについて概要を提供することを
 意図しています) 本質的には、PHP ライセンスは、商用・非商用に関わらず、
 あなたが望むように利用し配布し修正する権利を与えるものです。あなたは
 ユーザーに対してあなたの配布物が PHP を含んでいることを明確にする
 必要があります。
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』になりますけど。
■ このスレッドは過去ログ倉庫に格納されています