【PHP】下らねぇ質問はここに書き込みやがれ 25
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/07/23(日) 20:00:03ID:???ここならお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
過去スレは>>2
0514nobodyさん
2006/07/31(月) 16:07:45ID:???$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:???0520nobodyさん
2006/07/31(月) 16:20:30ID:HekLsGeB0522nobodyさん
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:???0526nobodyさん
2006/07/31(月) 16:50:23ID:???0528nobodyさん
2006/07/31(月) 16:52:35ID:???後者なら仕方無いだろ。
ユーザスタイルシートでマージン殺せ。
0534nobodyさん
2006/07/31(月) 17:14:02ID:???0535nobodyさん
2006/07/31(月) 17:53:46ID:86BvdUEa0536nobodyさん
2006/07/31(月) 18:16:12ID:???再帰的にunlink-rmdirしていくのは、あまり本質ではないディレクトリ削除で
そこそこ行数が増えてしまうので、他の方法があれば是非ご教示ください
0538nobodyさん
2006/07/31(月) 18:26:58ID:???例えばここWebプログラミング板の
subject.txt(http://pc8.2ch.net/php/subject.txt)を
file_existsで存在の確認をしようとしても
falseしか吐かないのですが、file関数で直接調べることは
不可能、というか許されてないのでしょうか?
0541nobodyさん
2006/07/31(月) 18:45:29ID:???ごめんなさい、深い意味はありませんが、
本来API1つで書けそうなコードに対して、再帰のための関数まで書かなければいけないのは
ちょっと嫌だなと思っただけです。
方法が無いならもちろん書きます
0542nobodyさん
2006/07/31(月) 18:51:59ID:???0544nobodyさん
2006/07/31(月) 18:57:27ID:???キャッシュする関数はありませんか?
0545nobodyさん
2006/07/31(月) 19:04:07ID:???とすると、やはり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:AsAaXYbZmysqlのクエリをphpで書くときに、たとえば
$sql = "update hogetbl set hogehoge ='$hogehoge'";
といったように、クエリ中の変数をシングルクオートで囲むのは危険なのですか?
\"".$hogehoge."\"のように書けば問題ないでしょうか?
0548(^ω^)
2006/07/31(月) 19:33:23ID:???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が外部から来て検査していない変数ならどちらも危険
0551546
2006/07/31(月) 21:55:58ID:???ありがとうございます
encoding attackとみなすのはちょっとあれだったので
mb_convert_encoding($s, "UTF-8", "UTF-8")
をかますことにしました。
0552nobodyさん
2006/07/31(月) 21:56:54ID:???DBインターフェースを利用してバインドしろ
PEAR::DB の場合は
$result = $db->query("update hogetbl set hogehoge=?", array($hogehoge));
変数の値を自動的にquoteしてくれる
0553nobodyさん
2006/07/31(月) 22:46:23ID:???え。むしろシングルクオートの方が普通じゃないのか?
つか、危険云々はシングルだろうとダブルだろうと全然変わらんよ。
なんでそんなので危険率が変わると思ってるのか、それが気になる。
どっからそんな誤った知識を聞いてきたんだ。
0554nobodyさん
2006/07/31(月) 23:25:37ID:WXdtFlcA<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からの改行を
配列に振り分けたら良いんでしょうか...
0555nobodyさん
2006/07/31(月) 23:32:15ID:???$honbun = explode("\r",$honbun);
$honbun = explode("\n\r",$honbun);
for($i=0; $i < $gyo; $i++)
0556554
2006/07/31(月) 23:41:01ID:???正規表現以前に、条件は$i < $gyo だし
arrayは$honbun[$i]ですね...orz
0557nobodyさん
2006/07/31(月) 23:44:24ID:???> $gyo = count($honbun);
> for($i=0; $i > $gyo; $i++) {
そのループ条件は $i < $gyo の間違いだと思う。
それじゃいきなり終わっちゃうから1行も表示されないだろうw
0558nobodyさん
2006/07/31(月) 23:45:48ID:???"\n\r"は"\r\n"じゃない?
あと、"\n"や"\r"でexplodeする前にまず"\r\n"でexplodeだと思う。
0559nobodyさん
2006/07/31(月) 23:52:57ID:???\r\n→\n、\r→\n、\nでexplode
0560nobodyさん
2006/08/01(火) 00:07:43ID:???どのような関数を使えば良いでしょうか?
0561554
2006/08/01(火) 00:09:34ID:???str_replace("\r","\n",$honbun);
で統一してからexplodeするようにして、変数があべこべになってたのを
直したら無事動きました。
ありがとうございますm(_ _)m
0562nobodyさん
2006/08/01(火) 00:13:37ID:???0563nobodyさん
2006/08/01(火) 00:39:18ID:???http://jp2.php.net/str_pos
0564nobodyさん
2006/08/01(火) 01:02:56ID:rUBuvQ+2データベース(MySQL)を使うのですが、ふつう、テーブルはあらかじめ
作成しておくべきなのでしょうか?
0565nobodyさん
2006/08/01(火) 01:25:18ID:???自分は最初に設計してるけど、大抵後から変更でてくる
0567nobodyさん
2006/08/01(火) 02:26:07ID:???0568nobodyさん
2006/08/01(火) 02:39:57ID:s+Er9w14list($array[]) = split('',$str);
print_r($array);
文字を一文字ずつ区切ろうとしたのですが、
Warning: split() [function.split]: REG_EMPTY in
と出てうまくいきません。
一文字ずつ区切るのはできないのでしょうか?
0569nobodyさん
2006/08/01(火) 02:45:07ID:s+Er9w140572nobodyさん
2006/08/01(火) 10:23:16ID:oOf+GkNUみなさんレスありがとうございます。
危険度という意味では大差ないということでOKでしょうか?
クエリ文のシングルクオートは危険というのを、どこかで聞きかじった気がしたので確認させて頂きたかったのです。ありがとうございました。
0573nobodyさん
2006/08/01(火) 10:30:30ID:???おいおい。結論がおかしい。
とにかく危険なのには変わりないんだから >>552 にあるような書き方に改めな。
0574nobodyさん
2006/08/01(火) 10:39:34ID:???シングルクォートであるとかないとかじゃなくて、
その変数をきちんとエスケープ関数に通したかどうかを気にしろ。
0575nobodyさん
2006/08/01(火) 10:41:57ID:???エスケープ文字がうざいから
0577nobodyさん
2006/08/01(火) 10:46:04ID:???危険度は大差ないというか「どっちも危険」。
多分、聞きかじった内容を思いっきり勘違いしてる。
実際はクオートは関係なく、それ以外にもっと重要な要素が抜け落ちてる。
>>575
それはPHPのクオートの話であってMySQLのクオートとは別の話。
0578nobodyさん
2006/08/01(火) 10:48:12ID:rUBuvQ+2function quote_smart($value)
{
if (get_magic_quotes_gpc()) {
$value = stripslashes ($value);
}
// 数値あるいは数値形式の文字列以外をクオートする
if (! is_numeric($value)) {
$value = "'" . mysql_real_escape_string ($value) . "'";
}
return $value;
}
これでいいじゃん?
0579nobodyさん
2006/08/01(火) 10:49:19ID:rUBuvQ+2意見ありがとうございました。
貝から操作してCREATE TABLEします・・・
0580nobodyさん
2006/08/01(火) 10:57:59ID:???magic_quote設定なんていちいち見ないなー。
汎用のライブラリ作るんならそこまでやってもいいと思うけど、普通の開発じゃ無駄じゃない?
素直に
"select * from table where col = '" . mysql_escape_string($value) . "'";
でいいじゃん。
0584nobodyさん
2006/08/01(火) 11:09:14ID:???0585nobodyさん
2006/08/01(火) 11:15:42ID:???みんなPDOは使ってないの?
0587nobodyさん
2006/08/01(火) 12:38:32ID:???0588nobodyさん
2006/08/01(火) 12:56:22ID:i9MoMR6eが存在するかを調べる関数はありますか?
0589nobodyさん
2006/08/01(火) 12:59:37ID:???0590nobodyさん
2006/08/01(火) 13:12:15ID:???0596nobodyさん
2006/08/01(火) 15:52:25ID:???よくある買い物籠のイメージは、商品の識別番号と個数を籠(セッション)に保持しておくと思うんですが、
実データを入力させてそのままセッションに入れて持ち歩くような動作を考えてます
0597nobode
2006/08/01(火) 16:19:50ID:???ハッシュファイルベースのセッション管理なら
そのセッションファイルを保存しているディスク量がセッションの限界じゃないかな?
あとセッション変数にドンドン代入していくとioの時に一時的にRAM喰うからRAMは多めにつんどいたらいいと思うよ。
スワップすると重くなるよ。レンタルとかだったら基本的に限界は割り当てられたPHPのメモリ使用量じゃないかな。
ハンドラ使ってDBとかに保存するのも基本的にWEB層の制限を受けると思うよ。
ケースバイケースだけど。
間違ってたらごめんまだPHP初めて3日目だから...
0598nobodyさん
2006/08/01(火) 17:38:12ID:???php.iniでの設定値次第だと思うけど、
PHPの配列等で確保できるメモリには上限がある(デフォルトで8MBだっけ?)
から、それを超えるような分量になってくるとメモリ確保エラーを起こすと思う。
0600nobodyさん
2006/08/01(火) 20:18:01ID:CFVLtjTH$str='1234';
$str='12345';
という変数があったとして、
これらの長さを一意にしたいのです。
(指定した文字列になるまで指定した文字で埋めたい)
strlenで長さ読んで、足りない分の文字を足せばいいのはわかっているのですが、もし関数になっていたら知りたいな、と思ってカキコしました。
そんな楽する関数はありますか? or 自分で関数作っちゃった方が良いですか?
0601nobodyさん
2006/08/01(火) 20:18:46ID:???× (指定した文字列になるまで指定した文字で埋めたい)
○ (指定した文字数になるまで指定した文字で埋めたい)
0604nobodyさん
2006/08/01(火) 20:35:20ID:???sprintfで対処できました。
http://jp.php.net/sprintf
ありがとうございました。
0605nobodyさん
2006/08/01(火) 20:39:21ID:???こっちのほうが指定が簡単ですね。
処理速度計算して早いほう使ってみようと思います。
ありがとうございました。
0607nobodyさん
2006/08/01(火) 22:29:09ID:???0608nobodyさん
2006/08/02(水) 00:01:08ID:???例えとして「sample.txt」というファイルには下記のようなテキストが入っています。
2ch;giko;nanasi;\n
test;test;test;\n
これを
$list=$file('../data/sample.txt');
foreach($list as $line){
$array_list_tmp[]=$line;
$n++;
}
で、1行ずつ$array_tmp[]にいれまして
$findme=';';
for($x=$begin;$x<=$end-($end-$n);$x++){
$mystring=$array_list_tmp[$x];
for($y=0;$y<=2;$y++){
$setcount=strpos($mystring,$findme);
$array_list[$x][$y]=substr($mystring,0,$setcount-1);
$mystring=substr($mystring,$setcount);
}
}
で';'が最初に見つかる桁までの値を取得して、';'は必要ないので値-1で必要な文字列だけを取得したいんですが。
変数の中身が1回目のループ分しか取得できず、あとは''になってます。
馬鹿にもわかりやすく易しい文字列処理の方法がありましたご教授して欲しいであります。
0609nobodyさん
2006/08/02(水) 00:06:55ID:???$fdata = str_replace("\n", '', file_get_contents('../data/sample.txt'));
$mystrings = explode(';', $fdata);
何がしたいのかは知らんが。
0611nobodyさん
2006/08/02(水) 00:46:27ID:???■ このスレッドは過去ログ倉庫に格納されています