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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/07/23(日) 20:00:03ID:???
PHPに関するくだらねぇ質問用スレです。
ここならお前の下らない質問に回答があるかも知れません。

まず読め【PHP マニュアル】
http://www.php.net/manual/ja/

過去スレは>>2
0455nobodyさん2006/07/30(日) 15:06:08ID:???
>>447
お前馬鹿だろ?
04564202006/07/30(日) 15:18:48ID:???
>>453
ありがとうございます。

以下の文を探していました。

PHP 4 では派生クラスのコンストラクタから基底クラスの コンストラクタを自動的にコール
することはできません。 上流のコンストラクタを適切にコールするように伝播させることは
あなたの責任でやるべきことです。

つまり、BとCのコンストラクタを明示的にAで呼んであげないといけない
という理解で良いですよね。

#んー、なんかマニュアルって検索にうまくひっかからないのですよね…
04574502006/07/30(日) 16:39:33ID:???
$name = array(">>451",">>454");

for($i=0; $i < 2; $i++) {
echo $name[$i]."さんありがとうございます。<BR>\n";
}
echo "\$_SERVER[\"HTTP_HOST\"]に書き直したらいけました。";
0458nobodyさん2006/07/30(日) 17:31:42ID:c850+3OT
斬新なレスだな。
0459nobodyさん2006/07/30(日) 17:36:12ID:???
>>457

foreach($name as $value){ echo $value."さん〜"; }
echo "〜";

の方がスマートになると蛇足。
0460nobodyさん2006/07/30(日) 17:51:10ID:???
浮動小数点数(3.14)などを16進数表示するにはどうしたらいいの?
0461nobodyさん2006/07/30(日) 17:58:25ID:NzzdC7Vd
5.14ってもう、デフォルトでSQlite、ONになっていませんよね?

今、入門書を読み終わってSmartyの本読みを読み始めたところなのですが
SQliteが動きません。phpinfo();にもSQliteの項目がありません。

php.iniを見ると5.03の時にはなかった
extension=php_sqlite.dll
という項目があったので、ONにしてみたのですが駄目でした。
extのパスも間違っていない(はず^^;)です。
他に何かしなければオンにならないのでしょうか?

MySQLを使うか、5.03でテストしつつ読み進めれば問題ないのですが

私がなんか設定でオオポカをやらかしてるのか…
それとも、SQliteが見捨てられたのか…
0462nobodyさん2006/07/30(日) 18:17:08ID:???
>>461
PDO SQLiteならデフォルトでOffになってる。
SQLite関数なら普通に使えたと思ったけどな・・・
--with-pdo-sqlite付けてコンパイルし直すと良いと思う。
0463nobodyさん2006/07/30(日) 18:33:01ID:TgrmMjVZ
perlのスクリプトをPHPに起こしなおそうと思い、苦戦中
テキストファイルを読み込んで、
行ごとに、条件分岐で保存するかしないかを決める処理をしたいんだけど
例えば、以下の様なテキストファイルのDを含む行を削除するような
ABC
BCD
CDE
DEF

fopenのw+モードだと、テキストファイルの内容が読み込み方が分らず
r+モードだと、行の削除をどうやるかがわからず
唯一file関数で読み込んでからfopenでif文書いて処理すればいけるが、
fileロック的に微妙。

perlだと普通にopen関数でいけるのだけど
どうしたらよいの?
0464nobodyさん2006/07/30(日) 19:12:21ID:???
>>402
サーバーの設定で例えば広告とかが混じってるんじゃないの?
0465nobodyさん2006/07/30(日) 19:16:14ID:SlTGL4ej
>>464
キタ━━━━━━━━(゚∀゚)━━━━━━━━━━ッ!!
ありがとうございます!
0466nobodyさん2006/07/30(日) 19:23:29ID:???
キターっていうのは電車男の影響だな。
0467nobodyさん2006/07/30(日) 21:13:16ID:EgQavLOH
すれ違いなら誘導をお願いします。
恐らく PHP の文字コードの問題と思っているので、こちらにお邪魔しました。

PHP-4.4.2
MySQL-5.0.22

上記の環境で scuttle-0.7.2 を導入しようとしています。
動作までは行えたのですが、ブックマークの登録に日本語が通りません。
php.ini を書き換えて EUC-JP や UTF-8 で統一してみましたが、文字化けしたままでした。
phpMyAdmin も併用して、検証を行った結果、

scuttle から入力>phpMyAdmin で表示>文字コード判別不能。
phpMyAdmin から入力>scuttle で表示>scuttle 上はUTF-8で該当データはEUCでした。

MySQL 上ではutf8_general_ciでデータベースを作成しています。

どなたか、導入実績のある方などはいらっしゃいますか?
もしくは、ここが悪い?というご指摘をいただけると助かります。
0468nobodyさん2006/07/30(日) 21:56:48ID:cXM04WS8
質問です。

GDで加工した画像データをmysql等のDBに入れたいのですが、
ファイルを作成するのはimagejpeg()等で出来ますが、変数に格納する方法が
わかりません。一時ファイルを作ってそれを読みこむ以外に方法は無いのでしょうか?
0469nobodyさん2006/07/30(日) 22:05:56ID:???
>468
serializeとかじゃダメなん?
04704682006/07/30(日) 22:11:39ID:cXM04WS8
>>469
serialize(イメージID)としてみましたが駄目でした
0471nobodyさん2006/07/30(日) 22:39:19ID:???
>>470
これ試してみな
ob_start();
imagejpeg($im, NULL, 75 );
$x = ob_get_clean();
0472nobodyさん2006/07/30(日) 22:43:40ID:???
コンポーネントのscrollpaneの中に何を何個入れるか、をxmlで定義しようとしてます。

で、読み込ませるためにリンケージを貼ったMCの中でXMLをonLoadして、
そのXMLの定義にしたがって画像などをloadMovieしてるんですが、
何故かスクロールペインにスクロールバーが出ません

XMLのonLoadや画像のloadMovieが時間差を生んで、読み込み以前の状態が反映されてるのかと思い、
スクロールペインのonEnterFrame( )に
redraw( )をつけたりしてるんですが、
特に効果はありませんでした。

こういう時はどういう処理でスクリプトの流れを作ればいいんでしょうか
よろしくおねがいします。
04734722006/07/30(日) 23:01:14ID:???
すいません、スレッドを間違えました
0474nobodyさん2006/07/31(月) 00:53:18ID:???
>>422
その理屈はわかるけど、だからってfopenがダメでsocketはOKってのはおかしくないか?
0475nobodyさん2006/07/31(月) 00:57:11ID:???
>その理屈はわかるけど

わかってねーよww
0476nobodyさん2006/07/31(月) 01:24:12ID:???
>>475
「推奨されていないから使わないようにすべき」って方の理屈は普通にわかるって意味ね。
allow_url_fopenをオフにするならソケットによるアクセスは全て禁止すると思うけど、そうじゃないシチュエーションってどんなときに起こるの?
0477nobodyさん2006/07/31(月) 01:45:06ID:???
ID表示したら教えてやらんでもない
0478nobodyさん2006/07/31(月) 01:48:53ID:AiuTU73H
>>477
教えてください
0479nobodyさん2006/07/31(月) 03:02:42ID:???
>>463
そもそもPerlならopenでできる、ってのはどうやってるのさ。
このスレでPerlの知識があることを前提に質問するのは間違ってるぞ。

話を聞く限りでは、r+で開いて中身読み込んでtruncateで中身リセットして
あとは必要な行だけfwriteしていけば終わりの気がするけどね。
Perlでもやってることは一緒だと思うんだけどなぁ。
0480nobodyさん2006/07/31(月) 10:11:51ID:???
>>479
中途行を削除するのでも、
その削除行から残り全部は一旦削除して書かなきゃならないってのわかってないとおもうよやつは。
ファイルの、その行だけ削除すればOKだと思ってる。
0481nobodyさん2006/07/31(月) 10:36:29ID:vOs6pv4F
あまり null を気にした事がなくて何時も $a = '' としていたのですが、
$a = null と書くのが常識なのでしょうか?' 
0482nobodyさん2006/07/31(月) 10:39:28ID:???
>>481
いや、それは全然常識じゃないと思う。
0483nobodyさん2006/07/31(月) 10:50:27ID:???
>>482
マニュアルを見てきたのですが
・値がない
・unsetした場合
とかなっていましたが・・・

unset($a)したら変数はなくなりますよね?
だから if ($a)だとエラーが出ると思っていたのですが、あれ・・・
0484nobodyさん2006/07/31(月) 10:54:00ID:???
NOTICEなら出るよ
0485nobodyさん2006/07/31(月) 10:54:06ID:???
>>483
いやだから、$a = ''; も $a = NULL; も、それぞれ「意図があって」やってることであって、
どっちかが常識ってわけじゃないんだよ。
何をやりたいかによって使い分けなきゃいけないものってこと。
0486nobodyさん2006/07/31(月) 11:08:17ID:???
>>484-485
ローカルで色々と試してきました。
結果、noticeすら出なかった・・・。

error_reporting(E_ALL);
ini_set('display_errors',1);

としてあるのですが謎です。

文字が空である事と値がない事は違うという事ですね。
0487(^ω^)2006/07/31(月) 11:35:32ID:???
NULLを代入する方が速いはず。特にPHP 5.1.4以降なら。
0488nobodyさん2006/07/31(月) 11:41:45ID:???
やっぱり、ヌルヌルの方が挿れやすいですからね^^
0489nobodyさん2006/07/31(月) 11:42:04ID:CE9HBJM2
質問です。

$hoge = " 1 "; //" " . "1" . " " の3つに分割されるつもり
$array = explode(" ",$hoge);

とした場合、最初のスペースが分割文字として判定されずに、

array([0]=>" 1",[1]=>"")

となってしまい困っています。
これが"#"などなら意図したとおり動作するのは確認しているのですが、すでにデータを" "で作成しています。
どうすれば先頭の" "も分割文字として認識されるのでしょうか。
助言をよろしくお願いします。
0490nobodyさん2006/07/31(月) 11:44:52ID:???
区切り文字も分割文字として認識するのか?
それは上手なデザインと言えないような…
0491nobodyさん2006/07/31(月) 11:47:29ID:???
>>489
力技だけど $hoge の先頭に "#" なりを付加して explode にかけて
出来上がった $array[0] の 1 文字目を削除する、とか。
0492nobodyさん2006/07/31(月) 11:53:11ID:CE9HBJM2
>>491
ありがとうございます。
その手を試してみます。
0493nobodyさん2006/07/31(月) 12:10:29ID:???
>>486
さらに言うなら、文字が空、と、値が無い、と、変数自体が無い、はそれぞれ意味が違う。
0494nobodyさん2006/07/31(月) 12:20:44ID:???
>>493
0 と false も追加しといて
最初の頃それで苦労したorz
0495nobodyさん2006/07/31(月) 14:02:13ID:???
「推奨されていないから使わないようにすべき」
「セキュリティ上、好ましくない」
とか、とても便利な逃げ常套句ですね。
それとも、なんですか…
具体的な例を提示できないから、
まさかこんな事言ってるんじゃありませんよね?
0496nobodyさん2006/07/31(月) 14:05:45ID:???
>>495
何に対して言ってるのかを明確に。
0497nobodyさん2006/07/31(月) 14:11:06ID:???
xreaを使っているのですが、extract(〜)と書かなくても勝手に
extract したような動作になってるのは回避できますか・・・

?p=abc

がそのまま$p=abcになってしまっている・・・。
0498(^ω^)2006/07/31(月) 14:24:08ID:????2BP(223)
ヒント:register_globals
0499nobodyさん2006/07/31(月) 14:25:39ID:???
ttp://propanmode.net/
User Agentにシングルクオートを入れてアクセスすると…
0500nobodyさん2006/07/31(月) 14:37:43ID:???
>>499
SELECT * FROM user_mst WHERE user_id = '' or user_id <> '' AND pass = '' or pass <> '' AND user_state <> 'del'

こういうSQL文になるように フォームの maxlenght を削ってローカルに保存し送信したら
ログインできたお
0501nobodyさん2006/07/31(月) 14:42:04ID:???
>>499
Fatal error: ERR_DBCls_ExecQuery :
SELECT * FROM count_tmp WHERE user_agent = 'test'test' AND remote_addr = '' AND remote_host = ''
in /virtual/propan/public_html/common/dbcls.php on line 238

DBでアクセス解析してるんだろう
誰かDELETEのSQLでも投げてやれよ、ちゃんと権限設定してあって大丈夫かもしれんが
0502nobodyさん2006/07/31(月) 14:59:02ID:???
SQLインジェクションですな。
0503nobodyさん2006/07/31(月) 15:16:32ID:HekLsGeB
#include<stdio.h>

int main(void)
{
double pai = 3.141592;
double r;
double taiseki;
int h;

r = 10;
h = 12;
taiseki = 1 / 3 * pai * r * r * h;
printf("三角錐の体積 = %d\n",taiseki);

return 0;
}

ってどこがおかしい?
0504nobodyさん2006/07/31(月) 15:18:16ID:???
>>503
お前のレスしてる板
0505nonicebody2006/07/31(月) 15:22:45ID:???
>>503
>>504
久しぶりにわろたw
0506nobodyさん2006/07/31(月) 15:26:48ID:HekLsGeB
mgk
0507nobodyさん2006/07/31(月) 15:52:44ID:???
よくみたらCだな

#include<stdio.h>
が、なつかしー
0508nobodyさん2006/07/31(月) 15:53:15ID:HekLsGeB
頼む!
テスト中なんだ!
0509nobodyさん2006/07/31(月) 16:00:24ID:???
カンニングはいかんよ
0510nobodyさん2006/07/31(月) 16:02:22ID:???
こうなるのか?
三角錐の体積 = 0
0511nobodyさん2006/07/31(月) 16:04:11ID:HekLsGeB
そうそう。
持ち込み可だからパソコン使っても良いはず!
0512nobodyさん2006/07/31(月) 16:05:52ID:???
1/3=0
0513nobodyさん2006/07/31(月) 16:07:07ID:???
%f か
0514nobodyさん2006/07/31(月) 16:07:45ID:???
<?php
$pai = 3.141592;
$r = 10;
$h = 12;
$taiseki = 1 / 3 * $pai * $r * $h;
printf('三角錐の体積 = %d', $taiseki);
?>
0515nobodyさん2006/07/31(月) 16:07:46ID:???
頭痛が痛い
クーラー病にかかった
PHPで治すにはどうしたらよいですか?
0516nobodyさん2006/07/31(月) 16:12:18ID:???
頭痛が痛い
0517nobodyさん2006/07/31(月) 16:12:32ID:???
>>515
そと言って走って来い
0518nobodyさん2006/07/31(月) 16:13:35ID:???
>>515
無限ループさせて、ハードディスクの熱でぬくぬく!
0519nobodyさん2006/07/31(月) 16:15:00ID:???
>>517,518
解決しました
ありがとうございます
0520nobodyさん2006/07/31(月) 16:20:30ID:HekLsGeB
ひとつはfみたい。�dクス。他にないですか?
0521nobodyさん2006/07/31(月) 16:24:42ID:???
>>518
CPUだろ
0522nobodyさん2006/07/31(月) 16:28:21ID:HekLsGeB
オワタ。
楽しかった。ありがとう。
0523nobodyさん2006/07/31(月) 16:41:53ID:???
サイト内の共通する部分(ヘッダーメニューなど)を
PHPのinclude化したのですがwin IEだとインクルードした部分の
上にスペースができてしまいます。
しかし生成されたページのソースを表示してもなんらスペースができる
要因もないしインクルード処理をせずそのままページ上にhtmlを記述すると
スペースはできないのですが対処はあるのでしょうか?
0524nobodyさん2006/07/31(月) 16:46:21ID:???
IE改造
0525nobodyさん2006/07/31(月) 16:48:08ID:???
>>523
こないだの人?
前、なんて言われたか覚えてる?
0526nobodyさん2006/07/31(月) 16:50:23ID:???
>>156- と同じだね。
0527nobodyさん2006/07/31(月) 16:51:18ID:???
>>525
このあいだの人ではないとおもいます
0528nobodyさん2006/07/31(月) 16:52:35ID:???
>>523は、ソース上で改行があるのか、それとも表示上での改行(というか余白)なのかがわからない。
後者なら仕方無いだろ。

ユーザスタイルシートでマージン殺せ。
0529nobodyさん2006/07/31(月) 16:55:04ID:???
>>527
同一人物であろうがなかろうが、再現環境・スクリプトを提示しない限り
時間の無駄だからスルーの方向で
0530nobodyさん2006/07/31(月) 16:55:45ID:???
>>523
インクルードされるファイルの一番最後、
?>
の後に余計な改行が入ってる
0531nobodyさん2006/07/31(月) 16:58:47ID:???
間違いなく >>523 は画面上でのスペースのことを言っている。
要素のデフォルトマージンだろ。

Web板いけ。
05325232006/07/31(月) 17:06:52ID:???
>>156のとまったく同じ状況でした。
ちなみに答えは>>204の通りutf-8n保存で解決しました。
お騒がせスマソ
0533nobodyさん2006/07/31(月) 17:10:17ID:???
>>532 氏ね
0534nobodyさん2006/07/31(月) 17:14:02ID:???
<>
0535nobodyさん2006/07/31(月) 17:53:46ID:86BvdUEa
レスは検索してなかったみたいだけど、ちゃんと解決法も書いてるし、別にマナーも悪くないし、いいんじゃないか。
0536nobodyさん2006/07/31(月) 18:16:12ID:???
PHPって、空でないディレクトリの削除は自分で処理を書くしかないんですか?
再帰的にunlink-rmdirしていくのは、あまり本質ではないディレクトリ削除で
そこそこ行数が増えてしまうので、他の方法があれば是非ご教示ください
0537nobodyさん2006/07/31(月) 18:20:11ID:???
>>536
rm -Rf ./hoge/*\ rmdir ./hoge/
0538nobodyさん2006/07/31(月) 18:26:58ID:???
ちと、お聞きしたいのですが
例えばここWebプログラミング板の
subject.txt(http://pc8.2ch.net/php/subject.txt)を
file_existsで存在の確認をしようとしても
falseしか吐かないのですが、file関数で直接調べることは
不可能、というか許されてないのでしょうか?
0539nobodyさん2006/07/31(月) 18:35:52ID:???
>>537
シェル実行ということですか。
使われる対象が色々なOSである可能性があるので、ちょっと難しそうです。
0540nobodyさん2006/07/31(月) 18:44:08ID:???
>>536
>あまり本質ではないディレクトリ削除で
どういう意味だ?
0541nobodyさん2006/07/31(月) 18:45:29ID:???
>>540
ごめんなさい、深い意味はありませんが、
本来API1つで書けそうなコードに対して、再帰のための関数まで書かなければいけないのは
ちょっと嫌だなと思っただけです。

方法が無いならもちろん書きます
0542nobodyさん2006/07/31(月) 18:51:59ID:???
色んなOSならなおさらラッパー的な役割をしているPHPの関数を使うべきではないのだろうか。
0543(^ω^)2006/07/31(月) 18:56:33ID:????2BP(223)
ユーザーノートに10行ちょいの再帰コード乗ってるよ
0544nobodyさん2006/07/31(月) 18:57:27ID:???
ほかのwebサイトから取得したデータを
キャッシュする関数はありませんか?
0545nobodyさん2006/07/31(月) 19:04:07ID:???
>>542
とすると、やはりPHP関数で書くしかないんですね

>>543
ありがとうございます。それを使って書くことにします
0546nobodyさん2006/07/31(月) 19:14:27ID:63K97mub
質問お願いします。

アクセスログをDBに書いてるのですが
まれにへんなREFERERがきて

invalid byte sequence for encoding "UTF8"

というPostgreSQLのエラーがでます。
UTF-8には存在しない文字コードが含まれてるとのことなのですが
保存する前の文字列から
UTF8にありえない文字列を除去、または
他の文字列に変換するような便利な関数か方法はないでしょうか?
0547nobodyさん2006/07/31(月) 19:26:48ID:AsAaXYbZ
くだらない質問します。

mysqlのクエリをphpで書くときに、たとえば
$sql = "update hogetbl set hogehoge ='$hogehoge'";
といったように、クエリ中の変数をシングルクオートで囲むのは危険なのですか?
\"".$hogehoge."\"のように書けば問題ないでしょうか?
0548(^ω^)2006/07/31(月) 19:33:23ID:???
>>546
http://blog.ohgaki.net/index.php/yohgaki/2006/06/12/a_a_a_a_a_ra_ca_a_oa_pa_fa_ma_sa_sa_raf
を参考にどうぞ
>>547
$hogehogeが外部から来て検査していない変数ならどちらも危険
0549nobodyさん2006/07/31(月) 21:11:59ID:???
>>547
っていうか、その書き方だと$hogehogeは変数だとみなされず、
単なる文字列だと判断されるぞ。
0550nobodyさん2006/07/31(月) 21:16:44ID:???
>>549
んなこたぁない
05515462006/07/31(月) 21:55:58ID:???
>>548
ありがとうございます
encoding attackとみなすのはちょっとあれだったので
mb_convert_encoding($s, "UTF-8", "UTF-8")
をかますことにしました。
0552nobodyさん2006/07/31(月) 21:56:54ID:???
>>547
DBインターフェースを利用してバインドしろ
PEAR::DB の場合は
$result = $db->query("update hogetbl set hogehoge=?", array($hogehoge));

変数の値を自動的にquoteしてくれる
0553nobodyさん2006/07/31(月) 22:46:23ID:???
>>547
え。むしろシングルクオートの方が普通じゃないのか?
つか、危険云々はシングルだろうとダブルだろうと全然変わらんよ。
なんでそんなので危険率が変わると思ってるのか、それが気になる。
どっからそんな誤った知識を聞いてきたんだ。
0554nobodyさん2006/07/31(月) 23:25:37ID:WXdtFlcA
windowsXP PHP5.1.4です。

<FORM ACTION="form02.php" METHOD="POST">
<textarea name="honbun" rows="4" cols="40"></textarea><br>
<input type="submit" value="送信する"><input type="reset" value="リセット">
</FORM>

<?php

$honbun = $_POST["honbun"];

// ↓改行を正規表現で\nにして、それでarrayに入れたつもりになってる
$honbun = explode("\n",$honbun);

//そうしたら↓で上手くいくかなと思いましたがダメでした。
$gyo = count($honbun);
for($i=0; $i > $gyo; $i++) {
echo "$honbun[$gyo]"."<br>\n";}

改行の置き換え方がダメな気がするんですが
こういう場合、どうやってtextareaからの改行を
配列に振り分けたら良いんでしょうか...
■ このスレッドは過去ログ倉庫に格納されています