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

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

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

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

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

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0136店長2007/12/05(水) 05:08:09ID:???
>>133
いつもお世話になっております。

今度カツカレーサービスするので、アルバイトの出勤プログラム作ってください。
デリヘルとかでよくつかっているあれです。

0137nobodyさん2007/12/05(水) 05:20:19ID:???
またデリヘル出勤表かw
0138nobodyさん2007/12/05(水) 07:52:21ID:???
<?php

echo preg_replace('/_(.*?)_/', '$1Manko', '_UnkoChinko_'); echo "\n";
echo preg_replace('/_(.*?)/', '$1Manko', '_UnkoChinko'); echo "\n";

これを実行すると

UnkoChinkoManko
MankoUnkoChinko

となりますが、なぜ二行目はUnkoChinkoがあとに出てくるのですか。

PHPはこれです
PHP 5.1.6 (cli) (built: Oct 10 2006 19:01:22)
0139nobodyさん2007/12/05(水) 08:34:00ID:???
>>136
テラ豚丼はありますか?
0140nobodyさん2007/12/05(水) 09:05:29ID:qveqxfBc
メール送信→メールでスクリプト実行→php://stdin
でメールの内容が受け取れるわけですが、
POST送信やGET送信などをphp://stdinで受け取るってできないですか?
php://stdinの仕様をあまり理解していないもので・・・
0141nobodyさん2007/12/05(水) 09:32:11ID:???
シェルスクリプトとかPerlでCGI作って
そっからPHPスクリプトを呼び出せば
POSTの内容は取れるんじゃない。
GETも標準入力からとりたいんならそういうのをかませて流してやればいい。

PHP単体ではそういうことはしないんでは。しないためにPHPがあるというか。

UNIXのシェルと、HTTPの勉強すると理解が深まると思う。(PHPではなく)
0142nobodyさん2007/12/05(水) 11:03:05ID:???
aa
0143nobodyさん2007/12/05(水) 11:25:26ID:E4JX9yMr
フォームで 記入>確認>登録完了 って流れのとき、完了シーンでセッションを
クリアしたほうがいいんですか?
たとえばスケジューラの場合、ある日の情報を登録した時の $_SESSION['yotei'] ってセッションが
がいつまでも残ってたら、別の日の情報を続けて記入したときにヘンなことになるのかなって気がします
0144nobodyさん2007/12/05(水) 11:30:56ID:???
ワラタ
0145nobodyさん2007/12/05(水) 12:23:49ID:???
<わからない五大理由>
1. 読まない ・・・説明書などを読まない。読む気などさらさらない。
2. 調べない ・・・過去スレ、ググるなど最低限の内容も自分で調べようとしない。
3. 試さない ・・・めんどくさいなどの理由で実行しない。する気もない。
4. 理解力が足りない ・・・理解力以前の問題で理解しようとしない。
5. 人を利用することしか頭にない ・・・甘え根性でその場を乗り切ろうとする
0146nobodyさん2007/12/05(水) 12:31:17ID:I+KKVKo8
spilitで「|」で区切れるのって3つまでですか?

print_r(split(" |,|.", "あ い,う"));

Array (
[0] => あ
[1] => い
[2] => う
)

print_r(split(" |,|.|_", "あ い,う"));

Array (
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
)

となります
0147nobodyさん2007/12/05(水) 12:34:06ID:???
>>143
気がするだけなら別にどっちでもよくね?
0148nobodyさん2007/12/05(水) 12:35:33ID:???
ならそうなんじゃない
0149nobodyさん2007/12/05(水) 12:39:40ID:???
>>146
パターンは正規表現なんだから . エスケープすればいいんじゃね?
0150nobodyさん2007/12/05(水) 12:40:11ID:???
>>146
2つまでじゃないの

split("[ ,._]", "あ い,う.え_お")
0151nobodyさん2007/12/05(水) 13:23:18ID:h1a1P9jY
spamassassinを起動させるphpを作成しているのですが、
前スレでsudoを使えと言われたので、
visudoでapache ALL=NOPASSWD: /etc/rc.d/init.d/spamassassinと書き加えて、
<html>
<body>
<?php
exec('/usr/bin/sudo /etc/rc.d/init.d/spamassassin start');
?>
</body>
<html>
を実行したのですが、spamassassinは起動しませんでした。
開発環境はfedora core 6です。
よろしくお願いします。
0152レベルたっかw2007/12/05(水) 13:36:54ID:???
>>151
昨日は勃起したのか?
0153nobodyさん2007/12/05(水) 14:19:36ID:???
まずは、コンソールで
$sudo -s
#su - apache
$/usr/bin/sudo /etc/rc.d/init.d/spamassassin start

これが実行できるか確認。
0154nobodyさん2007/12/05(水) 14:28:39ID:E4JX9yMr
今保持しているセッションの数を数えたり、一覧表示させたいんですが
どうしたらいいですか?
0155nobodyさん2007/12/05(水) 14:30:41ID:???
var_dump($_SESSION);
0156nobodyさん2007/12/05(水) 14:43:47ID:LzuIpZZj
>>153 実行できませんでした。以下が行った結果です。
[root@souffl /]# sudo -s
[root@souffl /]# su - apache
-bash-3.1$ /usr/bin/sudo /etc/rc.d/init.d/spamassassin start
Password:
Sorry, try again.
01571562007/12/05(水) 14:54:56ID:LzuIpZZj
>>153 間違えました。実行できました。

[root@souffl /]# sudo -s
[root@souffl /]# su - apache
-bash-3.1$ /usr/bin/sudo /etc/rc.d/init.d/spamassassin start
spamd を起動中: [ OK ]
0158nobodyさん2007/12/05(水) 14:55:29ID:???
>>156
昨日は勃起したのか?
01591542007/12/05(水) 15:46:33ID:E4JX9yMr
>>155
ありがとうございます
is_array($_SESSION)の結果を見ると、セッションは配列なんですね

$_SESSION['namae']="yamada";
$_SESSION['sex']="man";
というのをやって、yamadaという値ではなく、'namae'というセッション名(?)を
取得したいんですが、$_SESSION[0]でも$_SESSION[0][0]でも取れません
どうしたらいいんでしょうか
0160nobodyさん2007/12/05(水) 15:49:26ID:???
print_r(セッソン)
0161nobodyさん2007/12/05(水) 15:56:42ID:???
>>154
array_keysとかforeachとかでまわせば取れるんじゃ
0162nobodyさん2007/12/05(水) 16:18:10ID:I+KKVKo8
#PHPエラー設定
ini_set("error_reporting", "E_ALL");
ini_set("display_errors" , "On");

でエラーが出ません
他に設定するとこってありましたっけ
0163nobodyさん2007/12/05(水) 16:29:52ID:???
第二引数が怪しい
0164nobodyさん2007/12/05(水) 16:31:53ID:???
>>162
エラーの種類によっては
display_startup_errors
を設定する必要がある

http://php.morva.net/manual/ja/ref.errorfunc.php#ini.display-errors
0165nobodyさん2007/12/05(水) 16:32:50ID:???
あぁ確かに変だなw
E_ALLは定義済み定数なので”でかこっちゃだめ
0166nobodyさん2007/12/05(水) 16:59:31ID:QkDOhUsv
携帯コンテンツによくある「空メール機能」の作りたいのですが、
簡単な流れだけ教えてください。
0167nobodyさん2007/12/05(水) 17:08:55ID:???
<mailto: で指定しておいて、届いたメールからアドレスとってるんでしょ。
メールをプログラムが受けるのはPHPの範疇ではない(可能ではあるが)
0168nobodyさん2007/12/05(水) 17:20:00ID:???
>>162
"On"でいいのか
1の方がいいと思うが
0169nobodyさん2007/12/05(水) 17:23:05ID:???
>>166
つ >>140
0170nobodyさん2007/12/05(水) 17:56:16ID:???
>>169
ありがとうございました。さっそく構築することができました。
そこで疑問がでたのですが、これで最後にします。

ログファイルにユーザーが入力した値を書き込むとき、
htmlspecialcharsをして書き込んでます。
出力するときも念のためhtmlspecialcharsをおこなうべきでしょうか?
初歩的な質問ですみません、アドバイスお願いいたします。
0171nobodyさん2007/12/05(水) 18:05:44ID:???
>>170
しなくていい。
0172nobodyさん2007/12/05(水) 18:15:02ID:???
>>170
するべき。ログファイルを改ざんされた場合に備えたほうがいい。


>>171は嘘を言わないように。
0173nobodyさん2007/12/05(水) 18:23:01ID:???
すいません、質問なんですが、ファイル(txt)がある一定のサイズになったら
サイズ0にするような関数ありますか?
いまいち調べてもこれというのがでてきません。
宜しくお願いします。
0174nobodyさん2007/12/05(水) 18:30:55ID:???
ログファイルの改ざんとは?
0175nobodyさん2007/12/05(水) 18:36:18ID:pQhoHUAT
クラスを勉強しています
PHPのマニュアルのサイトにはクラスを使用するときは
$hoge = new MDB2();
のようにした書き方をしているのですが
MDB2などの中身を勉強の参考にのぞいてみると
$hoge =& MDB2::connect($dsn);
といった書き方をしていました

この二つはいったい何が違うのでしょうか?
MDB2::connect($dsn);の方はコンストラクタを実行せずにnew
していると考えて良いのでしょうか?
0176nobodyさん2007/12/05(水) 18:51:05ID:???
>>173
もしもファイルサイズが**以上なら、ファイルを開いて空にする。
そうでなければなにもしない。

これでできますけど何か?
01771542007/12/05(水) 19:08:55ID:???
>>160-161
ありがとう 試してみます
0178nobodyさん2007/12/05(水) 19:23:26ID:???
>>175
なんか問題が整理できてないね。
0179nobodyさん2007/12/05(水) 19:30:39ID:???
session.cookie_lifetime を変更したいんだけど、.htaccessでは変えられない?

php_flag session.cookie_lifetime 250

じゃ、変えられなかった。
ini_set 使うべきなのか。。
01801732007/12/05(水) 19:34:11ID:???
>>176

$file = 'aaaa.txt';
if (filesize($file) > 10000) {
unlink($file);
}

こんな感じでどうでしょうか?
0181nobodyさん2007/12/05(水) 19:48:40ID:???
>>180
unlinkだと、ファイル自体消える。確かに消せばファイルサイズ0だけど。
ftruncate();
0182nobodyさん2007/12/05(水) 19:54:41ID:???
<?php
$filename = $_GET['u'];
$array = file($filename);
$filenaiyou = join("",$array);
echo $filenaiyou;
?>

これのセキュリティ上の対策を教えてください
0183nobodyさん2007/12/05(水) 20:01:54ID:???
>>182
ID出したら教えてやんよ
0184nobodyさん2007/12/05(水) 20:02:12ID:???
全部問題ある
0185nobodyさん2007/12/05(水) 20:02:26ID:???
>>181
ありがとうございます。
確かにファイルが削除されます。^^;

ただ、次に fopen() で モードを a にすれば削除された
ファイルがまた空でよみがえりますよね?

0186nobodyさん2007/12/05(水) 20:06:28ID:DG3jNG37
失礼しました。
<?php
$filename = $_GET['u'];
$array = file($filename);
$filenaiyou = join("",$array);
echo $filenaiyou;
?>

これのセキュリティ上の対策を教えてください
0187nobodyさん2007/12/05(水) 20:20:11ID:???
>>186
自分で試せばいいじゃん。JSでも何でも渡してみて。
まさか、ぶっつけ本番ってわけじゃないでしょ。
0188nobodyさん2007/12/05(水) 20:21:58ID:???
>>185
モード w でも蘇るが。
そうやるなら、wで開いてfputsで 空白を書き込めばいい。
0になるかはわからないけど、とりあえずマシーロになる。
0189nobodyさん2007/12/05(水) 20:25:28ID:???
>>187
>>186は自分で試すほどのセキュリティの知識も持ってないと思われ
0190nobodyさん2007/12/05(水) 20:33:16ID:DG3jNG37
>>187
危ないのはわかるのですが、
どう対策したらいいのやら。

やってみた事
1.先頭のhttpを1度切り離し再度付ける。
2.htmlspecialchars
3.".."はエラー
4.このスクリプトの名称はエラー

このぐらいしか思いつかなくて。。
ここにいらっしゃる方々なら、今ある脆弱性の対策を
しっかりされてるだろうと思い投稿しました
0191nobodyさん2007/12/05(水) 20:36:25ID:???
>>190
追記
5.passwdをエラー
6.htaccessをエラー
0192nobodyさん2007/12/05(水) 21:02:50ID:???
Webアプリのセキュリティについて基礎から学んだほうがいいよ
0193nobodyさん2007/12/05(水) 21:16:41ID:???
>>193
そうですね。
ただ、某フレームワークを使ってる
他サイトさんを見ると、
結構抜け目があったりしてます。

まぁ言い出したらキリがないですね。
ありがとうございました。
0194nobodyさん2007/12/05(水) 21:17:00ID:???
>>179
基本的に.htaccessで設定できないものは
ini_setでは設定できないと思っておいた方がいい

そして値をセットする時は
php_flagじゃなくてphp_value
0195nobodyさん2007/12/05(水) 21:20:09ID:???
>>194
べりーさんきゅー。
ありがとう、覚えておくよ。

On Off で指定するときは php_flag、値を指定するときは php_valueっていう解釈でいいのかな?
0196nobodyさん2007/12/05(水) 21:32:48ID:QkDOhUsv
モジュールで動くサーバにおいて、セーフモードで動くスクリプトを書けば、
セーフモードがoffの状態でも動くものでしょうか?
0197nobodyさん2007/12/05(水) 21:39:04ID:???
>>195
そんな感じでOK
0198nobodyさん2007/12/05(水) 22:01:40ID:wraGx0x2
聞きたいんですが、for文で1〜100までをprintするfunction関数があって、
そのうち一度だけ、その関数の引数を使った条件が真のとき(for文中のif文でチェック)、
その数字を赤字で出力する場合(<font color=red>$i</font>)、
以降の処理ではif文をもう実行しないという方法はないでしょうか?
ただし、現在ある赤字チェック以外のif文を新規に追加しないことと、
数値の出力自体は100まで実行するものとします  …やっぱり無理かな?
0199nobodyさん2007/12/05(水) 22:05:25ID:???
3行にまとめて
0200nobodyさん2007/12/05(水) 22:22:37ID:???
$flag = false;
for($i = 0;$i < 100;$i++) {
    if ($flag == false && hoge($i)) {
        echo '<font color="red">'.$i.'</font>';
        $flag = true;
    }
    echo $i';
}

function hoge($hoge) {
    if ($hoge == true) {
        return true;
    }
    return false;
}

こんな感じか?
標準関数ではそんなのない
0201nobodyさん2007/12/05(水) 22:30:08ID:h+ynIQ9A
PHPていうのは、Webプログラム専用ですか。
Perlみたいにコマンドを入力する黒い画面上での実行は無理ですか。
0202nobodyさん2007/12/05(水) 22:35:02ID:???
むりではありませんが・・・?
0203nobodyさん2007/12/05(水) 22:39:13ID:???
>>198
残りのループの中で無駄なifをやりたく無いって事だろうけど、後で読み辛くなると思うなぁ。

for($i=0; $i<100; $i++){
 if(cond($i)){ do_1; break; }
}
for(;$i<100;$i++){ do_2; }
0204nobodyさん2007/12/05(水) 22:41:41ID:???
そうなのか。
PHPの本3冊共、黒画面の実行プログラムが載ってないからな。
0205nobodyさん2007/12/05(水) 22:42:07ID:???
>>200
どうもです
>標準関数ではそんなのない
聞いて安心しました 赤字を返す処理してるのにそのあとまでif文実行するなんて
無駄だなーって思ってたんですが、自分が知らないのかと不安で、、 ありがとう
0206nobodyさん2007/12/05(水) 22:44:15ID:???
>>203
あ、そんな書き方があったんですね
勉強になりました 助かります ありがとう
0207nobodyさん2007/12/05(水) 23:35:42ID:???

どんだけレベルひくいねんなw

0208nobodyさん2007/12/05(水) 23:56:31ID:???
ロクに答えられない上にスレタイも読めないとか人間として終わってるwwwwww
>>207とかねwwwwwwwwwwwww
0209nobodyさん2007/12/06(木) 01:14:57ID:???
質問内容はともかく質問の仕方が悪い。
0210nobodyさん2007/12/06(木) 02:24:47ID:HrkIjuFX
アップロードされた画像の中心を100×100とかで、切り抜きたいのですが
imagecopyresampledなどを使っても上手くできません。
どうやってやれば良いのか教えてください。
0211nobodyさん2007/12/06(木) 02:28:43ID:???
1.中心点を求める
↓
以下は自分で考えてみろ
0212nobodyさん2007/12/06(木) 02:28:54ID:???
だめもとでコードをさらしましょう
0213nobodyさん2007/12/06(木) 04:28:51ID:5xDWI9jJ
質問です。

HTMLの<form><textarea>タグから得られた複数行の文字列を
1行目、2行目という風に行ごとに分ける方法を教えてください。
0214nobodyさん2007/12/06(木) 04:54:11ID:???
>>213
\nで分割
0215nobodyさん2007/12/06(木) 05:07:11ID:5xDWI9jJ
>>214
\nとexplodeを使ったら、上手く出来ました。
ありがとうございました。。
0216nobodyさん2007/12/06(木) 10:46:08ID:Wo2vC2Xg
セッションを外部から操作する事は可能ですか?
ログイン中のユーザのセッションに保存されてる値を他のユーザから書き換えを行いたいと思います。
0217nobodyさん2007/12/06(木) 10:54:29ID:???
>>216
なぜにセッション?
0218nobodyさん2007/12/06(木) 11:17:23ID:???
リアルタイムでとか言い出す悪寒
0219nobodyさん2007/12/06(木) 11:37:58ID:???
> PHPていうのは、Webプログラム専用ですか。
> Perlみたいにコマンドを入力する黒い画面上での実行は無理ですか。

ふつーにできるでしょ。CLIのやつを使えば。

C:\>php -r "echo 'hogehoge';"
hogehoge
C:\>php --version
PHP 5.2.4 (cli) (built: Aug 30 2007 07:06:31)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies

C:\>


> そうなのか。
> PHPの本3冊共、黒画面の実行プログラムが載ってないからな。

何に対して「そうなのか」と言ってるんだろう
0220nobodyさん2007/12/06(木) 12:30:09ID:???
>>216
自分でセッションのストレージメソッドを書けば可能だろう。
02212162007/12/06(木) 13:00:52ID:Wo2vC2Xg
サイトAからサイトCにユーザが移動する時にクッションするサイトBを作成中なんです。
要件としてサイトAからサイトBにユーザが移動時にパラメータでポイント的な値が渡されます。
その値をサイトBにて表示してます。
サイトCにユーザが移動してなんらかのアクションを起こすとサイトCからサイトBにサーバ間通信されます。
ここでサイトBのポイントを減算する必要があります。
ユーザが戻るリンクでサイトBに戻ればよいのですが、ブラウザの戻るボタンで戻った場合を考慮して
通信を受けた際にセッションのポイントを減らすのが目的です。
ちなみに携帯向けなのでクッキーは使用できません。
DBに都度保存すれば良いのですが、面倒なのでできれば直接セッションを書き換えたほうが楽かなと思っております。
0222nobodyさん2007/12/06(木) 13:49:14ID:???
DBに都度保存したほうが楽かなと思っております。
0223nobodyさん2007/12/06(木) 14:00:06ID:k6INzxiU
<?php
#PHPエラー設定
ini_set('html_errors', "1");
ini_set('error_reporting', 6135);
ini_set('display_errors' , "1");

echo :
?>
ローカル鯖ならエラーが出てくれるのに
レンタルサーバーではエラーが表示されません。
どうにかしてエラーを出すように設定ができないでしょうか?
0224nobodyさん2007/12/06(木) 14:07:17ID:k6INzxiU
あー、
FATALエラーの場合、ini_setだとスクリプト自体が実行されないから
ini_setが反映されないのかorz

他の方法探してみます・・・。
0225nobodyさん2007/12/06(木) 14:20:04ID:k6INzxiU
レン鯖でhtaccessでphp_flagが使えない・・・
さくらまじで死ね!
0226nobodyさん2007/12/06(木) 15:12:16ID:???
情報収集を怠るおまえが死ねよ
0227nobodyさん2007/12/06(木) 15:14:36ID:k6INzxiU
さくら業者乙^^
02282162007/12/06(木) 15:36:20ID:???
>>222
了解しました。
セッションを操作できる方法があればと思いましたが、
DBを使う事にします。
ありがとうございました。
0229nobodyさん2007/12/06(木) 15:44:28ID:???
普通に考えて制限やら何やら調べてから契約するだろwww
初心者丸出しwwwwwww

でも、いい経験になったね。
0230nobodyさん2007/12/06(木) 15:47:39ID:???
>>229
全てがそろっている鯖なんてねーだろ
02312292007/12/06(木) 15:48:53ID:???
>>230
俺、全てが揃ってる鯖を探せなんて言ったっけ?
自分の用途に合わせて選ぶのが普通。
0232nobodyさん2007/12/06(木) 15:50:07ID:???
>>230
つ 自鯖
0233nobodyさん2007/12/06(木) 16:32:30ID:???
sage
0234nobodyさん2007/12/06(木) 19:13:26ID:???
foreach($aaa as $k => $v)

これで$kを0〜10まで表示させたいのですが、どのような形で可能でしょうか?
0235nobodyさん2007/12/06(木) 19:32:55ID:???
>>234
foreach(range(0,10) as $k){
0236nobodyさん2007/12/06(木) 19:38:05ID:???
$aaaに不特定の数字が入っているとおもわれる
■ このスレッドは過去ログ倉庫に格納されています