トップページ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カテゴリ)の各スレで
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に不特定の数字が入っているとおもわれる
0237nobodyさん2007/12/06(木) 19:50:28ID:???
>>234
for($i=0;$i<11;$i++){
print $aaa[$i];
}
とか?
もしくは面倒&パフォーマンス悪いけど
$i = 0;
foreach($aaa as $k => $v){
if($i < 11){
print $k . ' => ' . $v;
}else{
break();
}
}
02382342007/12/06(木) 19:53:15ID:???
ありがとうございます。
var_dumpで$vを調べてみたら int(数字が高い順にarsortでソートされてる)
でした。$vはポイント集計の数字のようです。
$kには人名が入ってました。

この場合で$vを上から10位までのランキングとして11位以下を足切りしたいのですが、

foreach($aaa as $k => $v) {
$v = range(0,10)

としても上手くいきません。 どこがまずいのでしょうか?
0239nobodyさん2007/12/06(木) 19:58:08ID:???
どう上手くいかないのか書かないとわからんっつの。
エラー吐くならエラー文載せろクズ
0240nobodyさん2007/12/06(木) 20:00:43ID:???
>>239

まったく何も表示されません。

考えてみたら$vは

int[112]
int[100]
int[99]
int[78]
int[68]
int[66] ....

こんな感じなのでrangeもくそもないですのね^^;
0241nobodyさん2007/12/06(木) 20:05:09ID:???
>>240
ここはお前のソースをデバッグするスレじゃないっての
0242nobodyさん2007/12/06(木) 20:08:22ID:???
>>240
sine sine sine

kuzu kuzu kuzu

0243nobodyさん2007/12/06(木) 20:50:09ID:???
情報小出し厨は死ぬか俺の専属肉便器になるべき
0244nobodyさん2007/12/06(木) 21:28:56ID:???
えーと
IIS6+PHP5.2(Win2k3 R2)
PostgreSQL(Win2k3)
WebServerとDBServerを別筐体で運用。

move_uploaded_fileを使ってフォームからアップロードされたファイルを
DBServer側に保存させたいのだが...

IIS上でDBServer上の共有ファイルをUDCで強引に割付けて
move_uploaded_fileをやっちゃうと、フォルダかファイルの名前がないぜというエラー
が出ちゃって、移動できないよ・゚・(つД`)・゚・ ウワァァァン

WebServerと保存先となる別Serverの2台構成で、なおかつIIS6を使う時
どうやってuploadファイルを別サーバに移せばよいんだ?

おちえてくれい
0245nobodyさん2007/12/06(木) 21:33:23ID:???
>>1
0246nobodyさん2007/12/06(木) 21:46:15ID:???
>>244
sine sine sine

kuzu kuzu kuzu

0247nobodyさん2007/12/06(木) 22:42:29ID:???
>>238
>=じゃないの?ループが一度も実行されてない
0248nobodyさん2007/12/06(木) 22:44:47ID:???
>>240
何がしたいのか分からん
0249nobodyさん2007/12/06(木) 22:56:40ID:???
仕事の丸投げです
02502402007/12/06(木) 22:57:51ID:???
foreachのループって特定の配列でストップできるんでしょうか?
10までで切り捨てたいのですが・・・

forなら i <= 10 こんな感じでできそうですが。

0251nobodyさん2007/12/06(木) 22:59:49ID:???
数ぐらい数えられるだろw
0252nobodyさん2007/12/06(木) 23:00:27ID:???
自分が何したいのか整理しろ。
情報の小出しをやめろ。


それだけで大分違うんじゃね?
0253nobodyさん2007/12/06(木) 23:01:57ID:???
こんな簡単な仕事で金貰えるんならとっくに学生やめてるっての
02542502007/12/06(木) 23:06:23ID:???
諦めます。ありがとうございました。
0255nobodyさん2007/12/06(木) 23:15:02ID:???
>>250
10になったらやめると条件節書けばおk
0256nobodyさん2007/12/06(木) 23:15:16ID:???
しつもんです。
値の重複を持つフィールドのレコードを引っ張りだしたいのですが、
$st = $db->prepare("SELECT * FROM goods WHERE name = 'バナナ'");
$st->execute();
$ar = array();
$ar = $exe->fetch(PDO::FETCH_ASSOC);
foreach($ar as $key => $value){
echo "キー: $key; 値: $value;
}
では一つのレコードしか表示されません。
重複したレコード全部を表示させるためにはどうすれば良いでしょうか?
0257nobodyさん2007/12/06(木) 23:16:00ID:???
まず>>1を読む
0258nobodyさん2007/12/06(木) 23:19:45ID:???
サルでも書けるPHPみたいな本はたくさんあるのに、どうしてサルでもできるデバッグ
みたいな本はないんだろうな。

デバッグの仕方、問題点の探し方を知っていればこのスレの世話になることもないだろうに。
0259nobodyさん2007/12/06(木) 23:23:49ID:B7iDUoX7
require したclassのファイルが動いてくれませんどこがおかしいのでしょう?

実際にブラウザで開くphp --------------------------------
require_once("testclass.php");
$testPrint= new testPrint();
$testPrint->printIt();

testclass.php ----------------------------------------
require_once("arrayList.php");
class testPrint{
function printIt(){
for($i=0;$<2;$++){ print $this->testAry[$i];}
}
}

arrayList.php --------------------------------------
$testAry = array("a","b","c");

恥ずかしながらこの程度のものが良くわかりません
イメージではabcって出力するつもりだったんですが、、
おねがいします
0260nobodyさん2007/12/06(木) 23:25:12ID:???
>>259
そりゃオブジェクトの中に$testAryが入ってないんだから表示もできないよ
0261nobodyさん2007/12/06(木) 23:36:39ID:B7iDUoX7
>>260
ありがとうございます
うー、ごめんなさい おかしいのはtestclass.phpってことですか?
0262nobodyさん2007/12/06(木) 23:39:38ID:???
>>261
クラス内、メソッド内はスコープが違うんだから外部で定義した変数が勝手に代入されたりしないよ。
02632592007/12/06(木) 23:46:32ID:B7iDUoX7
>>262
ありがとうございます、スコープの概念が良くわかってないみたいです
ためしにクラスの中にrequireしてみたんですが、
 require_once("arrayList.php");
 class testPrint{
エラーで画面真っ白になりました
元の実行するphpにrequire_once("arrayList.php");してもダメだし、、
外部ファイルから読み込むのが無理ってわけでしょうか?
0264nobodyさん2007/12/06(木) 23:49:54ID:???
>>263
function printIt(){ 
require_once("arrayList.php");
for($i=0;$<2;$++){ print $testAry[$i];} 


or

function __construct()
{
require_once("arrayList.php");
$this->testAry = $testAry;
}

or

$testPrint= new testPrint(); 
$testPrint=$testAry;
$testPrint->printIt(); 
0265nobodyさん2007/12/06(木) 23:50:01ID:???
そもそもクラスというものをわかってなさそう
0266nobodyさん2007/12/06(木) 23:51:01ID:???
間違えた最後の例は
testPrint->testAry = $testAry; 
0267nobodyさん2007/12/06(木) 23:51:37ID:???
レベルひっくw

02682592007/12/07(金) 00:29:14ID:buUfpIh5
>>264-266
ありがとうございます
ただ、真ん中のコンストラクタを使うやり方を試しましたが うまくいきませんでした
function __construct(){
require_once("arrayList.php");
echo $testAry;//@
$this->testAry = $testAry;//A
}
@をためしに追加してみたんですが、NULLが帰ってきました (testArray.phpにはもちろんあります)
これがNULLってことはAも当然失敗すると考えていいんでしょうか?
なんか変なことしてたら申し訳ありません  引き続きテストしてみますので、
気づいたことがあったら教えてください
0269nobodyさん2007/12/07(金) 00:30:55ID:???
echoでNULLは出なくね?
02702592007/12/07(金) 00:37:06ID:buUfpIh5
あ、ごめんなさい
var_dump($testAry);//@
でした
ちなみに、以下を試してみたら、「NULL NULL コンストラクタNULL」という結果でした
function __construct(){
//配列リストの読み込み
require_once("arrayList.php");
var_dump($testAry);
var_dump($this->testAry);
echo "コンストラクタ";
$this->testAryX= $testAry;
var_dump($this->testAryX);
}
まいったな… なんでだろう
0271nobodyさん2007/12/07(金) 00:59:54ID:???
エラーを表示するようにすれば一発で解決すると思う。
あとは
・arrayList.phpはPHPモードに入っているのか
・testPrintクラスはちゃんとインスタンス化しているのか
0272nobodyさん2007/12/07(金) 01:13:18ID:???
コンストラクタの引数でプロパティに値を入れてから$this->じゃダメなの?
0273nobodyさん2007/12/07(金) 02:00:20ID:zHjm6pQT
PHPは、ASP.NET を使えない低知能な方々のための言語なのですか?
0274nobodyさん2007/12/07(金) 02:22:58ID:???
いいえ。それが必要ない方々のための言語です。
0275nobodyさん2007/12/07(金) 02:34:39ID:???
asp.netなんてwinでしか公式に使えないじゃん。
■ このスレッドは過去ログ倉庫に格納されています