【PHP】ID出さなくても質問OKなスレ【初心者歓迎】at PHP
【PHP】ID出さなくても質問OKなスレ【初心者歓迎】 - 暇つぶし2ch352:nobodyさん
09/05/03 10:37:40
三項演算子なんてほとんどの言語に用意されてるわけだしわざわざ禁止する会社があるのか?

353:nobodyさん
09/05/03 10:43:38
三項演算子を入れ子にされるとわかりにくくなることはあるなw

354:343=349
09/05/03 10:57:52
なんとか試行錯誤して表示することができました。
これって平成~年とか昭和~年とか表示するドロップダウンリストをつくることはできないのでしょうか?

355:nobodyさん
09/05/03 12:40:21
>>352
グループで開発するってのはそういうことなんだよ

356:nobodyさん
09/05/03 13:04:05
複数人で作業するときとかスクリプトを縮小化とき以外に三項演算子使うやつはバカ

357:nobodyさん
09/05/03 13:21:09


358:nobodyさん
09/05/03 15:01:30
そろそろ話し控えないと参考演算子クンが荒らしに変貌しそうだよ!

359:nobodyさん
09/05/03 15:06:48
参考演算子てwwwwwww

360:nobodyさん
09/05/03 16:44:20
三項演算子を規約で禁止しちゃうような会社はいろんな意味でダメだろうなぁって気はする。
まぁバカでも組めるものを組ませるって考えはあるんだけどさ。

361:nobodyさん
09/05/03 16:56:31
>>360
残念
社会では三光演算子は嫌われます

362:nobodyさん
09/05/03 17:00:05
>>358
残念
社会では三光演算子は嫌われます

363:nobodyさん
09/05/03 17:06:02
確かにドカタの監督からは嫌われるだろうね。

364:nobodyさん
09/05/03 21:25:24
CSVにデータを書き出すスクリプトで、一行終わったら改行が入るようにしているんですが、
処理の途中で止まって(とめて)改行が行われないことがあります(あるとします)。その時に、ファイルの最後に
改行が入ってないことを検知して、改行をした上で新しいデータを次の行から作りたいんですが、
改行の有無はどうやったら検知できますでしょうか?今使っているエディタ(EmEditor)では
「↓」という記号で改行がマークされ、ググったりしましたが、どうしていいものやらよく
わかりません。


1,2,1,2,3,2[改行]
1,1,1,2,3,3[改行]
1,1,2,[処理ストップ、改行なしの行]  <-- [改行]が無いことを検知して改行追加したい

常に改行を冒頭に入れるようにすると、データのない行ができて、のちのち面倒なので、
それは避けたいと思っています。

365:nobodyさん
09/05/03 21:31:37
\n

366:364
09/05/03 21:43:26
fseek($file, -4, SEEK_END);
$string = fgets($file, 1000);
var_dump($string);

dumpしても改行部分は空白になりますよね。
例えば、検索かけて、"\n"でマッチするんでしょうか?

367:364
09/05/03 21:56:26
マッチしますね。失礼しました。m(._ _)m

368:nobodyさん
09/05/04 13:26:07 0LqkTRhF
POSTで送った引数がIE6,7では表示されない
firefoxでは表示されてる。。。
php.iniの設定変更がいるのですか?

369:nobodyさん
09/05/04 13:40:32
いらん

370:nobodyさん
09/05/04 13:53:15 0LqkTRhF
ある掲示板でvariables_orderを「EPGS」にすればとありましたが、
それでも表示されないまま。
HTMLやCSSの問題ですか?

371:nobodyさん
09/05/04 14:09:38
>HTMLやCSSの問題ですか?
それ疑う前に
ソースみて反映されてるかどうか確認してみなよ

372:nobodyさん
09/05/04 14:22:28 0LqkTRhF
list.phpからdetail.phpにsubmitしてます。
ソースは以下です。
「list.php」
<html>
<body>
<form action="detail.php" method="POST">
<input type="image" src="img/detail.gif" name="submit" value="0001">
</form>
</body>
</html>
「detail.php」
<html>
<body>
<p>詳細情報</p>
<?php
print "submit:".$_POST["submit"]."<br>";
?>
取得情報:
<?php
print $_POST["submit"]."<br>";
?>
</body>
</html>

373:nobodyさん
09/05/04 14:34:18
IEでは位置情報しか送られん

374:nobodyさん
09/05/04 15:14:34 0LqkTRhF
解決しました
type="image"でなく、hiddenでPOSTしたらうまくいきました
phpinfo()で表示された値は位置情報だったんですね

375:nobodyさん
09/05/04 15:15:04
phpinfoで出るっけ?

376:nobodyさん
09/05/05 21:05:16
DBのログを取りたいのですがどうすればいいですか?
よく不正アクセスの痕跡を見つけた と言ってますが・・・

377:nobodyさん
09/05/06 12:17:28
二つの文章があります

(☆)(★)(◇)

(☆)(★)(◇)

(★)の部分は文字列、文字数共に不確定で1,2共に全く違う文章です。
(☆)(◇)の部分は文字列、文字数共に不確定ですが1,2共に同じ文章です

(★)の部分のみを切り取りたいのですがどうすればいいでしょうか?



378:nobodyさん
09/05/06 12:18:14
すみません番号を振るのを忘れていました

(☆)(★)(◇)

(☆)(★)(◇)



1.(☆)(★)(◇)

2.(☆)(★)(◇)

379:nobodyさん
09/05/06 12:26:10
>>377
意味がわからん

380:nobodyさん
09/05/06 12:27:01
>>378
URLリンク(pear.php.net)
こんなのとか

381:nobodyさん
09/05/06 12:27:14
>>379
文章が二つあってどこが変更されたか検知するプログラムを作る場合どうすればいいでしょうか

382:nobodyさん
09/05/06 12:28:09
>>380
ありがとうございます!!こんな感じです


383:nobodyさん
09/05/06 13:20:24
>>380
やっぱりこれじゃダメでした
改行していない場合同じ文字列の部分も違う物として取得されてしまいました

改行していない文章の差分を取得したいのですが無理でしょうか・・・

たとえば

aaabbccc

axxaabbbccac

の二つの文章があった場合
xxとbとaを取得したいのです

384:nobodyさん
09/05/06 13:31:31
すみませんやっぱり大丈夫かもしれませんw
全て1文字ずつの配列にしたらしっかり判定されました
お騒がせしてすみません

385:nobodyさん
09/05/06 15:01:48
PDOを使って
MYSQLからデータ表示するコードください?

386:nobodyさん
09/05/06 15:06:38
URLリンク(jp2.php.net)

387:nobodyさん
09/05/06 15:36:58
>>386
ありがとうです
あと、実行時にApache HTTPサーバーと表示させ落とされます
どうすればいいですか?

388:nobodyさん
09/05/06 15:42:54
Apache のログ見ろよ

389:nobodyさん
09/05/06 16:04:07
>>388
! ありがとうです
なんとかできそうです

390:nobodyさん
09/05/06 16:48:50 GdRs26+o
外部サイトからLZHファイルを取得して解凍、内容を取得したいのですが、うまくいきません・・・

$url = 'xxxxx'; //ファイルのURL

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);

$filename = $path . 'test.lzh';

file_put_contents($filename, $data);

exec('lha e ' . $filename);

こんなかんじなのですが、
ファイル取得まではできているのですが、
解凍ができません;

どこがおかしいのでしょうか?

391:nobodyさん
09/05/06 16:54:27
>>383
できる

392:nobodyさん
09/05/06 17:07:04
>>390
lhaにはパス通ってるの?
execの引数でフルパスで指定してみては

393:390
09/05/06 17:32:18 GdRs26+o
>>392
レスありがとうございます。
展開先を指定したらちゃんと解凍できました;
スレ汚しすみません;;

せっかくなので聞きたいのですが、
外部からのファイル取得方法は上記でよいのでしょうか?
いちど変数に格納してfile_put_contentsで書き込むというのがなんだか回りくどい気がするのですが、
ほかに方法がありましたら教えてください!

394:nobodyさん
09/05/06 17:55:33
そらまあローカルの実ファイルが無いと無理だからなあ。
組み込んでメモリストリームから、、、とかはこのスレの範囲外かな

395:nobodyさん
09/05/06 19:39:47
一旦、全部メモリ中に展開するってのはどうなんかね。
fread/fwriteを繰り返した方がいい気もするが。

396:nobodyさん
09/05/06 23:04:45 XF4iBoH0
MySQLでテーブルを作ったとき確認する方法は
PHPで記述する場合mysql_resultでいいのでしょうか?


397:nobodyさん
09/05/07 07:02:22
$data = array(
'hoge' => 'hoge',
'fuga' => 'fuga'
);

$data = array(
0 => array(
'hoge' => 'hoge',
'fuga' => 'fuga'
),
1 => array(
'hoge' => 'hoge',
'fuga' => 'fuga'
)
);

このような配列を、前者のタイプか後者のタイプか判定したいのですが、
どのような方法が考えられますでしょうか?

よろしくお願いします。

398:nobodyさん
09/05/07 10:40:06
前者のタイプか後者のタイプかってどういうこと?

399:nobodyさん
09/05/07 11:34:01
2次元配列かどうかってことだろ?

400:397
09/05/07 12:28:43
>>398
>>399

説明が足りず申し訳ありません。
2次元配列かどうか、というか、
1次元目(?)が連想配列なのか、単純な配列なのかを調べたいのです。

現在は、

if ( isset ( $data[0] ) )
だったら、後者というように判定しているのですが・・・

401:nobodyさん
09/05/07 12:35:38
ループでキーに数値以外が含まれてるかどうか判定するだけじゃん
プログラマーならすぐ思いつくと思うが・・

402:nobodyさん
09/05/07 12:45:30
>>400
多分、PHPには「単純な配列」って無いんじゃないかな。

URLリンク(php.morva.net)
>PHP の配列は、実際には順番付けられたマップです。マップは型の一種で、 値をキーに関連付けます。

403:nobodyさん
09/05/07 13:11:43
>>402
だからキーが数値のみで
構成されているかどうかを
調べたい、ってことだろ?

専用関数あるだろ。

404:nobodyさん
09/05/07 13:25:21
>>403
それは質問者が考えればいいことだし。
ただ、「普通の配列」ってのは無いってだけで。
歯抜けな配列も作れるし、キー値だけでチェックするのもかなりびみょー。

ところで配列のキー値がすべて整数かチェックする専用関数って何?
ざっと見た感じ見当たらないんだけど。

URLリンク(php.morva.net)

405:397
09/05/07 13:25:50
>>401
それはもちろん思いついたのですが、
もう少しスマートな方法はないかと思いまして・・・


return array_keys($array) !== range(0, count($array) - 1);

こんな方法があるのを知ったのですが、
これだと、

$array(
0 => 'hoge',
2 => 'fuga',
3 => 'piyo'
);

のように、配列が歯抜けになっている場合に一致しなくなりますし・・・

>>403
専用の関数とは何のことでしょうか??

406:nobodyさん
09/05/07 13:38:16
きみの言うスマートな方法ってのは明確で解かりやすいというより
制御構造使わないような方法のこと?

407:nobodyさん
09/05/07 18:30:34
クラスってのがなかなか理解できません
どなたか詳しく解説してくれませんか?

408:nobodyさん
09/05/07 18:37:19
どこが分からんの?

409:nobodyさん
09/05/07 22:32:52
>>407
いいよ。

410:nobodyさん
09/05/07 23:13:30
このスレの先輩方はhtmlは得意でしょうか?

411:nobodyさん
09/05/07 23:28:15
おうよ

412:nobodyさん
09/05/07 23:31:35
ほんとかよwwwwwwwwwwwwwwwwwww

413:410
09/05/07 23:34:13
僕は一応html4系とxhtml1.0と1.1で、しかもstrictとtなんちゃらで使えるタグと属性を口頭で全部言えるぐらいの知識しか持ちません
xhtml1.0 strictで使えるタグの数もパッと言えるぐらいの知識です

414:nobodyさん
09/05/08 00:10:55
じゃ言ってみてくれ

415:410
09/05/08 00:13:27
>>414
76個

416:410
09/05/08 00:14:07
ちなみにhtml4.1 strictとxhtml1.0 strictで使えるタグは同じです

417:nobodyさん
09/05/08 00:16:17
はよ全部言えよ

418:nobodyさん
09/05/08 01:36:40
なんだよ質問じゃなくただの知ったかかよ

419:nobodyさん
09/05/09 08:57:00
4択問題をcsvに記録していくスクリプトを作っています。
csvに下のように書き込まれるようにしています。

名前,答え,答え,答え,答え,答え,(改行)
名前,答え,答え,答え,答え,答え,(改行)
名前,答え,答え,答え,答え,答え,(改行)

複数の人が同時に行うと、下のようにデータが混ざってしまいますよね?

Aさん,答え(Aさん),[Bさん参入で改行]
Bさん,答え(Bさん),答え(Bさん),答え(Aさん),答え(Aさん),答え(Bさん),

実際に試してみるというのがやりにくい問題なので、何を勉強しないといけないか
教えていただけますか。
そもそもCSVでこの手の記録をやろろうとするのはどうなんでしょうか。

420:nobodyさん
09/05/09 09:09:56
flock

421:nobodyさん
09/05/09 10:00:00
>>419
コード書いてもらわないと的を得た回答はでないよ

422:nobodyさん
09/05/09 17:18:10
以前$_SERVER["DOCUMENT_ROOT"]のことでググったときに
DOCUMENT_ROOTの値が実際の値とは違う場合がある事例を見ました。
とすると<base>タグやスクリプト内で絶対パスを作るときにこの変数を使うのは
危険な可能性もあるんでしょうか。
$rootPath = $_SERVER["DOCUMENT_ROOT"];
$a = $rootPath."/sample";
<base href="{$rootPath}">
また$_SERVER["DOCUMENT_ROOT"]以外にルートパス(?)を取得する方法はありますか?

423:nobodyさん
09/05/09 17:40:17
aru

424:nobodyさん
09/05/09 18:05:56
そのDOCUMENT_ROOTの値が実際の値とは違う場合がある事例を知らないけど
その事例がわかれば対応できないか?

425:nobodyさん
09/05/09 23:32:39
DOCUMENT_ROOTって、
public_htmlとか、
htdocとかのこと?

426:nobodyさん
09/05/10 00:07:15
>>425
知らない奴に聞いてねえよ
ロムってろks野郎

427:419
09/05/10 00:07:59
概略はこんな感じです。最初のifで名前の処理をした後は、最初の問題提示が
一番下のelseから始まり、まず二つ目のifに入り、その後は最初のelseの中をぐるぐるやって、
問題がなくなったら終了するような仕様です。今のところflockはあてずっぽうに入っている状態です。
15問あったとしてAさんがそれを終えるまでのすべてにろっくをかけておかないといけないのでしょうか。
複数の人が同時に問題を解けるようにしたいのですが。
if($_POST["id"] =="999"){
$file_name = "record.txt";
$file = fopen($file_name, "a+") or die("OPENエラー $file_name");
flock($file, LOCK_EX);
中略(解答者の名前の書き込み)
fputs($file, $time);
flock($file, LOCK_UN);
fclose($file);
}

if (is_numeric(@$_POST['answer']) || $_POST['id'] == "2"){
$file = fopen($file_name, "a") or die("OPENエラー $file_name");
flock($file, LOCK_EX);
if(intval(@$_POST['k']) == "0")
{
中略(正誤判定)
fputs($file, $string);
flock($file, LOCK_UN);
fclose($file);
中略(問題提示とPOST)
}


428:419
09/05/10 00:11:40
スクリプト後半です。長いので細かいところは省略してありますが、
本物は期待通り動くことは動きます。
**********
else {
$file_name = "record.txt";
$file = fopen($file_name, "a") or die("OPENエラー $file_name");
flock($file, LOCK_EX);
中略(正誤判定)
fputs($file, $string);
flock($file, LOCK_UN);
fclose($file);
//////全問終了
if($question[0] == ""){
echo "<br><br>終了です!";
中略
$file_name = "record.txt";
$file = fopen($file_name, "a") or die("OPENエラー $file_name");
flock($file, LOCK_EX);
$string = $array.",";
$time = $time."\n";
fputs($file, $string);
flock($file, LOCK_UN);//同時アクセスを防ぐロックを解除
fclose($file);
}
else{
中略(問題提示とPOST)
}
} }
else {
$fname = "voc.csv";
$data = file($fname);
中略(問題提示とPOST)}  }

429:nobodyさん
09/05/10 00:12:13
>>427
マジレスするとflock($file,LOCK_UN)はいらない
なぜならfcloseでファイルが閉じられるから

430:nobodyさん
09/05/10 03:06:05
>>427
> 複数の人が同時に問題を解けるようにしたいのですが。
全問終了時だけファイル操作(とロック)すればいいと思うんですよね。

431:419
09/05/10 07:43:14
>>429
ありがとうございます。

>>430
ありがとうございます。

そうですね。最後に一気に書き込む仕様にしておけばいいですよね。
今の仕様ですと、最初のelseの中でぐるぐると出題するごとに
各問題に対する回答者の答えを一つ一つ書き込む
仕様なので(<私の理解が間違ってなければ)、おそらく複数の人が
回答すると419のようにデータ混じるのではないかと思っています。
途中の回答を回答者ごとに一時的にどこかにためておけばいいんですね。

テンポラリーファイルを回答者ごとに別々に作成して回答を一時的に格納し、
最後にひとつの記録用ファイルに書き込むというのを今考えたんですが、
これどうでしょうか、他にもっといいやり方があるでしょうか?


432:nobodyさん
09/05/10 12:07:35 glvoYFM0
掲示板の親記事にコメントすると
その親記事にコメントが表示されますが
これってどういうアルゴリズムなんでしょうか?

433:nobodyさん
09/05/10 12:14:49
全てはデータ構造
データ構造が決まればそれに合わせてプログラムがコーディングされるだけ。

434:nobodyさん
09/05/10 20:17:25 kteLIAQk
携帯電話で対応機種を判別するWebページをphpで作っています。
エラーは出ずに動作はしたのですが、対応機種に一致しているはずなのに
一致判定を通ってくれません。
判定条件が間違っているのかもしれませんが、自分ではさっぱりわからないので
ご指摘を頂ければと思います。

【test.php】
<?php

$userAgent = $_SERVER['HTTP_USER_AGENT'];
$deviceList = file("DeviceDisplay.csv");

foreach ($deviceList as $key => $value)
{
rtrim($value);
list($name, $agent) = explode(',', $value);
print $name."<br />";
print $agent."<br /><br />";
if ((strstr($userAgent,$agen))!= false){
print "おk";
break;
}
}
print $userAgent."<br />".$agent;
}


【DeviceDisplay.csv】
903i,D903i

よろしくお願いします。

435:nobodyさん
09/05/10 20:18:00
>>434
PEAR使えば?

436:nobodyさん
09/05/10 20:21:35
$value= rtrim($value);

じゃないか?

437:nobodyさん
09/05/10 20:34:37
$getUA = $_SERVER['HTTP_USER_AGENT'];
$f = file("DeviceDisplay.csv");

foreach ($f as $k=>$v){
list($name, $ua) = explode(',', rtrim($v));
if ($getUA == $ua) {echo "csvに記録されてました";}
}

438:nobodyさん
09/05/10 20:45:09
>>437
===

439:nobodyさん
09/05/10 20:45:11
> if ((strstr($userAgent,$agen))!= false){
$agent

なんかいろいろあるな

440:434
09/05/10 20:55:16 kteLIAQk
>>435-439
ご指摘ありがとうございます!
今回は自力でやりたいのでがんばってみます。

改行を消したのにそれを代入してないのと、
==で判定、そして決定的な綴りミスですね・・・orz
以上を踏まえてリベンジしてきます。


441:nobodyさん
09/05/12 10:24:23
1.ファイルがない時は作成し、ある時は追加モードでオープン。
2.ファイルが新規作成された時は、chmod 0666
という処理をしたいです。

fopen($filePath, 'a')でファイルオープンした時に、
新規作成されたかどうかが分かれば簡単にできると思うのですが、
できません。
どのようにすれば目的の処理ができるでしょうか?

442:nobodyさん
09/05/12 10:34:06
file_exisitsでだめなん?

443:nobodyさん
09/05/12 10:54:04
chmodで失敗したらファイルがないでいいじゃん

444:nobodyさん
09/05/12 10:54:47
マジレスするとファイルの作成&書き込み時にfile_exisitsなどはやめた方が良い

445:nobodyさん
09/05/12 11:07:09
flockと組み合わせればfile_exisitsはアリかと

446:nobodyさん
09/05/12 11:18:38
>>444
何故に?

447:nobodyさん
09/05/12 11:32:33
>>445
chmod するしないぐらいなら、そんなに神経質にならなくても良いと思うが。

448:nobodyさん
09/05/12 21:45:37
>>446
ファイルがあるかな?
ファイルがないなー
よーしファイルをつくるぞー
ちょーーとまったーワシが先にファイルを作るでぇ~ゲヘゲヘ
よっしゃーワシが先にファイル作成完了~~大勝利~~~
、、、さーーって、さっき調べた時にファイルなかったから、作るかな,,,
作成、っと、、、ん?今、なんか、違和感を感じたが、、、、なんだったんだ???

449:nobodyさん
09/05/12 21:47:19
file_exisits使うのはネタに見えてしまうw

450:nobodyさん
09/05/12 21:54:39
file_existsの何が悪いのかkwsk

451:nobodyさん
09/05/12 22:36:38
>>448
今回はaモードでopenだから関係ないじゃん。

452:nobodyさん
09/05/12 23:01:41
俺的にはスクリプトでパーミッションを弄る動作はダメコードだと考えている

453:nobodyさん
09/05/12 23:06:33
だからfile_existsの何が悪いのよ
適当なこと言わないでよ

454:nobodyさん
09/05/12 23:06:47
別にいいやん。
ただWindowsだとchmodできんのはチト不便。

455:nobodyさん
09/05/12 23:10:17
>>453
まず貴様がfile_existsって問題ない理由を述べればいいよ

456:nobodyさん
09/05/12 23:13:14
>>455
マニュアルに使用上の注意について書いてないじゃない

457:nobodyさん
09/05/12 23:15:59
また荒らしかよ

458:nobodyさん
09/05/12 23:18:11
0666ってことはログファイルか

459:nobodyさん
09/05/14 21:19:26
なんだってー

460:nobodyさん
09/05/15 06:59:21
結局file_existsが駄目な明確な理由を誰も上げられないんですね
2chなんて所詮口だけ野郎ばっかりか・・

461:nobodyさん
09/05/15 07:11:40
何を今更

462:nobodyさん
09/05/15 08:06:57
>>460
ホント期待できなくなったね。
昔と違って、OK waveとか知恵袋とかあるし、まともな連中はそっちの方を見てるのかな。

463:nobodyさん
09/05/15 08:18:07
>>460
このスレにはニートとフリーターしかいないんだからしょうがないよ
それにPHPはバカ専言語だから優秀な人間は興味を示さないし

464:nobodyさん
09/05/15 08:23:51
>>463
たしかにPHPなんて使えても所詮WEB開発が関の山だからねw
そのWEB開発にしても最近はRubyとかPythonが台頭してるわけだからPHPを好んで使ってる奴は
アレとしか言いようがないね

465:nobodyさん
09/05/15 08:24:53
何を今更

466:nobodyさん
09/05/15 08:30:41
とまぁここまで全部>>460の自作自演なんだけどね

467:nobodyさん
09/05/15 08:34:55
どこでRubyとPythonが台頭してるんだ?

468:nobodyさん
09/05/15 08:36:49
>>467
地球上のどこかで

469:nobodyさん
09/05/15 08:40:09
>>467
お前の知らない外の世界でだよ
まったくこれだから警備員は(ry

470:nobodyさん
09/05/15 08:40:41
じゃちょっと示してみ

471:nobodyさん
09/05/15 08:41:47
釣られてソース厨出現ww

472:nobodyさん
09/05/15 10:14:37
>>460
仰る通りニートとフリーターの憩いの場なんで帰っていただけませんか?

473:nobodyさん
09/05/15 12:25:37
>>460
じゃあこのまま使い続けてください
誰も止めはしませんので^^

474:nobodyさん
09/05/15 13:22:36
過疎杉sage

475:nobodyさん
09/05/16 22:47:21
可変変数って大抵他の書き方した方がスマートでわかりやすいソースになると思うんだけど、
一体どういうときに使えばいいのだろう?

476:nobodyさん
09/05/16 23:33:14
>>475
特に使う必要はない。
perlであったから、いれてみました、ってだけ。

477:nobodyさん
09/05/16 23:42:36
>>476
じゃperlではどのように使われてるの?

478:nobodyさん
09/05/16 23:45:50
それは老人にきいてください

Perlについての質問箱 39箱目
スレリンク(tech板)

479:nobodyさん
09/05/16 23:48:44
お前は知らないんかw

480:nobodyさん
09/05/17 00:49:35
>>475
配列をextractで展開するのと似たようなことが出来るかな。

$arr = array('a'=>'b', 'c'=>'d', 'e'=>'f');
foreach($arr as $key=>$value){

${$key} = $value;

}
んで、最終的に例えばテンプレートファイルを
include 'template.html'
とか呼んでやれば、テンプレート内で展開した変数を使えたりとか?
これだけだったらextractすればいいけど、配列のキーの特定の文字だけ展開したくない場合とか、
(例えば、先頭がアンダーバーで始まってるものは展開しないとか)
条件をつけて展開できるかな。


481:nobodyさん
09/05/17 06:43:27
本日も過疎。
最新50に1週間も前のレスが表示されるってどんだけww

482:nobodyさん
09/05/17 11:51:52
この板ではよくあること

483:nobodyさん
09/05/17 22:52:05
俺が常駐してるスレなんて連続20レスほど保守あげ
しかも俺の

484:nobodyさん
09/05/18 02:39:12
本番マシンで、エラーを表示させたくない場合、
ini_setと
error_reportingと
どっちを使うの?

485:nobodyさん
09/05/18 02:49:39
display_errorsじゃねーの?

486:nobodyさん
09/05/18 03:04:08
>>485
書き方は?

487:nobodyさん
09/05/18 03:05:27
display_errorsってディレクティブでしょう?
ディレクティブってphp.iniにしか設定できないんでしょう?

レンタルサーバーなので、pnp.iniはいじれない環境です。
なので、php.iniをいじらなくてもできる方法を教えてください

488:nobodyさん
09/05/18 03:11:25
じゃhtaccessでok

489:名無し募集中。。。
09/05/18 03:28:45 wP2DRNT9
ini_set('display_errors','on')

490:nobodyさん
09/05/18 10:16:50
情報小出しうぜえ

491:nobodyさん
09/05/18 10:36:42
小出しにしたほうがなんだかミステリアスでいいじゃないか

492:nobodyさん
09/05/18 20:39:24
>>490
自閉症のあなたがたの
質問能力を鍛えてあげているのです。

営業にまわったとき、
「情報の後だしウゼエwww」
とかって見込み客に言うんですか??

493:nobodyさん
09/05/18 20:40:09
>>489
これでいいの?

494:名無し募集中。。。
09/05/18 20:53:48 wP2DRNT9
今決まってることを先に全部伝えれば余分な工数が圧縮できるので
納期も見積もりも低く抑えることができるわけで
積極的な答えを引き出したいなら客も小出しにはしないけどな

495:nobodyさん
09/05/18 20:55:50
>>494
それであなたは営業に回ったときに、

「情報の後出しウゼエwww」

とかって見込み客に言ってるの?

496:nobodyさん
09/05/18 21:34:39
<a href="XXX">vvv</a>

これで、XXXにユーザーからの入力値を入れるんだけど、
javascriptのコードを書かれると
そのまま実行されるんで、
サニタイズしたいんだけど、専用関数あるの?

497:nobodyさん
09/05/18 21:41:15
サニタイズ言うな

498:nobodyさん
09/05/18 21:42:52
>>496
URLリンク(jp.php.net)

499:名無し募集中。。。
09/05/18 21:47:19 wP2DRNT9
>>495
「今決まってることを先に全部伝えてもらえれば余分な工数が圧縮できますよ 」
って言うけど

500:nobodyさん
09/05/18 22:14:26
>>498
それだとサニタイズできないでしょ。

501:nobodyさん
09/05/18 22:53:23
>>500
・・・・え? 何がしたいの?

502:nobodyさん
09/05/18 23:01:36
<a href="javascript:[ここにjavascriptのコード]">vvv</a>


こう書かれると、htmlなんとかでは
サニタイズできないでしょう?

だからjavascriptって文字をかけない
ようにしなければならないんだけど、
これって正規表現使ってゴリゴリ書かないと
だめなの?

503:nobodyさん
09/05/18 23:03:28
error_reporting(0);

これって使わないの?

504:nobodyさん
09/05/18 23:11:09
>>502
実際にそこに何が入るのか知らんが、入力値を分解してURL作ればいいだけの話じゃないの?

505:nobodyさん
09/05/19 02:17:09
ログファイルの中味を見られないようにするために、
拡張子を.phpにしようと思います。

これだと、たとえブラウザで直接ファイルを指定しても、
拡張子が.phpなのでPHPファイルとして実行しようとするので
(そして中味はPHPのスクリプトでなくて単なるテキストファイルなので)
見られないというわけです。

でもパーミッションが書き込み可能になっていると
問題ありますか?

506:nobodyさん
09/05/19 02:28:01
ドキュメントルート外や.htaccessでアクセスできないようにする方が吉
拡張子phpは最後の手段

507:nobodyさん
09/05/19 02:31:21
>>505
発想は悪くないんだがとりあえず試してみ。たぶん思ったのと違う結果になるw
あとパーミッションはあまり気にするな。共用鯖じゃsafemodeでも無い限りどーにもならん。

508:名無し募集中。。。
09/05/19 03:02:13 qJyAGOVK
PHPは<??>で囲まない部分はHTMLと同じ扱いだからなw

509:nobodyさん
09/05/19 10:05:00
>>495
素直に謝って今後そうすることが無いようにすればいいのに
開き直ってそんなこと言ってるから未だにろくな仕事が出来ねえんだよ。

510:nobodyさん
09/05/21 17:42:51
php_browscap.ini は商用利用可能なのでしょうか。
その他の制限があったりしないか不安なので質問です。
よろしくおねがいします。

511:nobodyさん
09/05/22 00:11:50
教科書に、

「 magic_quotes_gpc がONになっているときは、
stripslashes を使ってエスケープを取り除く」

と書いてあるのですが、そんなことをするよりも、
ini_set
とかで、
magic_quotes_gpc をOFF
にするほうが
いいのではないですか?

512:nobodyさん
09/05/22 00:13:11
>>511
いいと思います。

513:422
09/05/23 14:25:12
>>484に遅レス便乗で、今のレン鯖で.htaccessは使えますがOptionsディレクティブが使えないので
ini_set("display_errors", 0)をファイルの先頭に書こうと考えてます。
ini_set実行以前にエラーが出たら意味なしになってしまいますが、それはどういった場合が考えられるでしょうか。

514:nobodyさん
09/05/23 14:27:08
ん名前欄は関係ないです。すみません。

515:名無し募集中。。。
09/05/23 14:27:44 sw/qjhoP
ini_setを最先頭行に書けばいいだけだと思うが

516:nobodyさん
09/05/23 15:28:46
>>515
そうですね。
たとえば何らかの理由でファイルが読み込めない、実行できない場合ini_set前なのでエラーが出ると思います。
でよくよく考えたら今はerror_reporting(0)でエラーメッセージが出ないようにしてるんですけど
上記のようなときは結局エラーが出るだろうから、ファイル外で設定を変更できない以上エラー表示から逃れられなさそうです。
完全にエラーメッセージを非表示にできなければerror_reporting(0)で対処するつもりで質問をしたんですが、
これも完全でないなら素直にini_set("display_errors", 0)+ログ書き出しで対処します。
失礼しました。

517:nobodyさん
09/05/23 15:36:50
PHP前ならPHPのエラーはでないと思うが

518:nobodyさん
09/05/23 15:38:13
データベースのエラー文がそのまま表示されてるサイトとかもあるし
そこまで気にしないでも

519:名無し募集中。。。
09/05/23 16:00:00 sw/qjhoP
流石に本番運用では気にした方がいいと思うが

520:nobodyさん
09/05/24 19:13:43
携帯で画像をランダム表示したいのですが
どのようなスクリプトが使えるのでしょうか?

521:nobodyさん
09/05/24 19:26:51
業者に1万円払って作ってもらえ

522:nobodyさん
09/05/24 22:03:26
今なら俺が9980円で

523:nobodyさん
09/05/25 00:22:37
session.use_only_cookiesが0の場合、

URLにセッションIDが含まれてしまうので
セキュリティ的に、危険です。

なのでこれを普通は1にすると思いますが、
それはphp.iniを編集できる場合のみです。

レンタルサーバーなどでは、php.iniを編集
できない場合も多いです。

その場合は、session.use_only_cookiesの値を
取得して、それが0なら1にする、と
自分でPHPスクリプトの先頭に書くのでしょうか?

でもそれで間に合うのでしょうか?

524:nobodyさん
09/05/25 00:24:05
URLリンク(phpc2.seesaa.net)

例えばこのページだと、

ini_set( 'session.referer_check', "example.com" );
ini_set( 'session.use_trans_sid', 0 );
ini_set( 'url_rewrite.tags', "" );
ini_set( 'session.use_only_cookies', 1 );
ini_set( 'session.use_cookies', 1 );
ini_set( 'display_errors', 0 );


こんくらい書いてます。
セキュリティをカンペキにするには、
全部でどれだけ書かないといけないのでしょうか?

525:nobodyさん
09/05/25 00:29:11
ini_setじゃなくてphp.iniで設定しとけよみたいな

526:nobodyさん
09/05/25 00:29:42
クッキーもヘッダ部に平文で流れてるだけだろ
これを安全というのならURLにセッションID含まれてても同様に安全というしかないだろ

527:nobodyさん
09/05/25 01:19:22
URLはそれをブックマークしたり知らずに晒したりできるからまた違うんじゃないの

528:nobodyさん
09/05/25 01:39:29
セッション要るようなエリアはhttpsにしとけばいいだけの話

529:nobodyさん
09/05/25 02:09:17
いやブックマークとかURL流出はHTTPSだからとかいう問題じゃないだろ

530:nobodyさん
09/05/25 02:14:14
セキュリティの話をすると
ついてこれないヤツが必ずいるよね

高卒なのかな?

531:nobodyさん
09/05/25 02:15:06
「外出するときは、必ずドアにカギをかけましょうね」
.
「そんな、カギなんてプロの泥棒が本気だせば5分で開くんだよ
だからいちいちかける意味ないよ」

532:nobodyさん
09/05/25 02:18:16
httpsにしなくていいって話じゃなくてhttpsにするだけじゃ不十分って話だろ

533:nobodyさん
09/05/25 02:33:17
<a タグや、<imgタグのsrcにjavascripの
コードを直接書かれると、そのまま実行されてしまいます。

なので、javascriptをサニタイズする必要があるのですが、

ググって出てきたページに

URLリンク(php-web.net)

a、imgタグでは、<a href="javascript:...といった記述でj
avascriptが実行できます。このため、URL等は javasc
ript挿入対策として、「javascriptで始まる文字列をサニ
タイズする」作業が必要になります。

if (substr($_POST['url'],0,10) == "javascript:") {
die("Illegal URL!\n");
}

----------------------------------------------------

と書いてあるのですが、このコードでサニタイズできますか?

正規表現は使わなくてもいいの?

こういうとき、perlerだったら、100%の確率で
正規表現を駆使した渾身の一作を出してくるはずなんですけど。

534:nobodyさん
09/05/25 02:51:01
htmlspecialcharsでいいだろ

535:nobodyさん
09/05/25 03:15:54
URLリンク(php.benscom.com)

ここで

「PHP 6.0.0 で削除されました。」
という記述があるが、6なんて
まだ出ていないだろう?

それとも、漏れが知らないだけで、
もう出ているのか?

536:nobodyさん
09/05/25 03:18:53
出てるよ

537:nobodyさん
09/05/25 03:23:54 aHvsLNiK
simplexmlで下記xmlのstartTimeを取得するにはどうすればいいでしょうか?
<entry>
<gd:when startTime='2009-05-28T19:00:00.000+09:00' endTime='2009-05-28T21:00:00.000+09:00'>
<gd:reminder minutes='10' method='email'/>
<gd:reminder minutes='10' method='alert'/>
</gd:when>
</entry>

538:nobodyさん
09/05/25 04:42:43
$xml = simplexml_load_file('hoge.xml');
var_dump($xml);
してみれば分かるよ

539:nobodyさん
09/05/25 23:18:15
ini_set('magic_quotes_gpc', '0');

このやり方でオフにするのって

phpのバージョンが4.2以下でないと
使えないの?

540:nobodyさん
09/05/25 23:35:00
いや? そんなことないけどなんで?

541:nobodyさん
09/05/25 23:48:05
URLリンク(xoops.ec-cube.net)

ここのページに、

>magic quotes gpcがini_setできるのはPHP4.2.3以下だったと思います

って書いてあるけど??

542:nobodyさん
09/05/25 23:49:14
URLリンク(www.webdeveloper.com)

ここのページにも、

>you can only modify magic_quotes_gpc this way in PHP versions <= 4.2.3.

って書いてあるけど???

543:nobodyさん
09/05/26 00:12:13
Manualを見ろよ。 URLリンク(jp2.php.net)
4.2.4以降 PHP_INI_PERDIR になったからini_setじゃ無理。

544:nobodyさん
09/05/26 00:17:18
>>541-543
そこまでわかってるならわざわざ聞きに来なくても・・・

545:nobodyさん
09/05/26 01:13:59
アクセスログ等から
アクセスしてきたやつの
コンピューター名抜くのって
どうやってたの?

546:nobodyさん
09/05/26 01:37:40
User Agentの話?

547:nobodyさん
09/05/26 01:58:06
ウィンドウズなら同じワークグループだったらコンピュータ名抜けそう

548:nobodyさん
09/05/26 11:21:02
特定のディレクトリ$dirの中でもっとも作成日付が新しいファイルのファイル名を取得したいのですが、

globでディレクトリ内の一覧を作ってfilectimeで作成日付を取得して・・・えーとえーと・・・と考えたものの、
「あれ?このあとどうしよう」となってしまいうまくコードにまとめることができません

良い方法はないでしょうか

PHP5

549:nobodyさん
09/05/26 11:50:15
ソート

550:nobodyさん
09/05/26 12:02:33
$last = new SplFileInfo(null);
foreach(new RecursiveDirectoryIterator('target') as $entry)
if($entry->isFile() && $entry->getCTime() > $last->getCTime())
$last = $entry;
こんなんとか。

551:548
09/05/26 18:32:03
>>550
うわ~一回で動きました
PHP5で実装された関数まだ使い慣れないんで初めて見ました
ありがとうございます

たまたまディレクトリ内の、取得したいファイル群の名前が全部日付なので、
これの応用で作成日付順じゃなくて名前の順で一番遅い(=新しい)ものを
取得できるんじゃないかと改造してるんですが私には不可能でしたw

552:nobodyさん
09/05/27 16:01:50
メールフォームから送信してるんですけど相手に届きません
ローカルサーバです
PHP.iniのどの設定を変えたらいいですか?

553:nobodyさん
09/05/27 16:40:06
ローカルアカウントには届くってんならOP25Bでググれ

554:nobodyさん
09/05/27 23:11:44
それって自分のISPの回線の
SMTPサーバー経由でないと
メールを送信できないってやつ?

555:nobodyさん
09/05/28 00:21:44
>>554
いえ、違うんです
レンタル鯖だとできたんですけど・・・

556:nobodyさん
09/05/28 00:26:24
レン鯖だとOKで自宅鯖だとNGって間違いなくポートブロックだろ
プロバイダのヘルプをサブミッションポートで検索してみ

557:nobodyさん
09/05/28 01:30:28
$filename = $month."/".$day.".csv":
$data = @file($filename);

PHP5でローカルのWindows機でテストしているのですが、上のように下位フォルダにあるファイルを開こうとすると失敗します。
ディレクトリを表す"/"の部分がWinだと\だからだと思うのですが、そもそも根本的に"/"で変数を繋ぐのが変なような気もします。
サーバー上でもローカルWin機でも動くようにできないものでしょうか。



558:nobodyさん
09/05/28 01:44:46
ごめんなさい、自己解決しましたw
$が間違って&になってましたw
切腹してきますw

559:nobodyさん
09/05/28 08:09:32
>>552
自宅ってどうせ窓でしょ?
「windows php mail」でググって味噌。

560:nobodyさん
09/06/01 20:27:02
JISの漢字コードから

3021 → 亜

のように、実際の文字を表示するには、
どのようにしたらよいのでしょうか?

よろしくお願いします。

561:nobodyさん
09/06/01 21:02:57
JISコードの場合、エスケープシーケンスで漢字であることを知らせないといけないから
echo "\x1b\$B",pack('H*', 3021);

562:560
09/06/01 21:29:46
>>561

できました!
ありがとうございます。

こういうことって、どこで覚えるんでしょうか?

563:nobodyさん
09/06/01 21:55:20
>>562
今のお前さんのような状況に陥ったときに覚える。
人に聞くか自分で調べるかの違いはあるけどな。

564:nobodyさん
09/06/07 01:18:31 q/9VwFhz
SSLを使って「login」というディレクトリをSSLのみの接続にしていますが、
loginディレクトリ内のリンクで<a href="../index.html">とするとhttpsのまま
階層が1つ下がるだけとなります
これをhttpにする関数はあるのでしょうか?

565:名無し募集中。。。
09/06/07 01:42:48 kkylNn0/
ない

566:nobodyさん
09/06/07 01:53:33
PHPって同じことやるのにも複数の似通った関数があるイメージがあるんだが、
コレとアレならこっち使うのがイイ!
みたいなベストプラクティスとかある?

567:nobodyさん
09/06/07 02:08:23
あるよ

568:nobodyさん
09/06/07 02:15:41
>>566
よくあるのが
is_nullを使わないで、 $hoge === null で評価したほうが早いとか
正規表現で評価できるsplitを使うより単純に「,」とかできりたいならexplodeを使ったほうが早いとか



569:nobodyさん
09/06/07 02:35:59
おれが作るから半年待て

570:nobodyさん
09/06/07 10:51:54
バッファの意味がわかりません><
どなたか親切な方^^いないでしょうけど教えてくdさい!

571:nobodyさん
09/06/07 11:08:03
ゴミを一粒ずつひろってゴミ箱に捨てるより、ちりとりで集めてゴミ箱に捨てるほうが効率いいの解かるならOK

572:nobodyさん
09/06/07 11:50:14
すいません。記載するスレを間違えてしまいました。
初心者ながら自作サイトを作成しているのですが、なぜか作成したページが
「疑わしいWebページを遮断しました」とノートンが反応するようになりました。
ソースが長いので記載はできないのですが、内容はmailtoで送信するための
名前やメアドを入力した後の「以下の内容で間違いないですか?」みたいな
画面です。値はメアド入力画面から$_POSTで受けとってます。
遮断される可能性としてはどのようなものがありますでしょうか?
すいませんがアドバイスを御願いします。

573:nobodyさん
09/06/07 11:53:14
ノートンよく知らないけど遮断した理由書いてあるログとかないの?

574:572
09/06/07 12:01:37
>>573
ノートンのセキュリティ履歴をみると
「疑わしいサイトとしてシマンテックに提出しました」としか記載がなく
なぜ疑われているのかがわからない状態です。


575:nobodyさん
09/06/07 13:06:34
ソース見ないで答えるのは情報処理の試験でも出題されないくらいの難易度の高さ
ノートンの判断はノートン作った人にしかわからん
つまり、「疑わしいWebページを遮断しました」でぐぐって似たケースを見るのがいいかと

576:nobodyさん
09/06/07 13:25:53
最終的に吐き出したものをHTMLに保存してそれを表示させて
疑わしいものを削っていけばわかるかもよ

577:572
09/06/07 15:11:25
>>575 >>576
すいません。ソース長くてどこを見せればいいかわからない状態です。
ソース削りながら色々試してみます。
ありがとうございました。

578:nobodyさん
09/06/10 11:22:45
変数に格納された数字を、正の数なら+を、負の数なら-を頭に付けて表示したいのですが、
それに便利な関数はないでしょうか

PHP4

579:nobodyさん
09/06/10 11:30:01
そんくらいなら自作してやれば

580:nobodyさん
09/06/10 11:31:18
宿題か?

581:578
09/06/10 11:56:17
自作しますた
30秒で終わりますた
15分ぐぐって損しますた


582:nobodyさん
09/06/10 11:59:44
>>581
You!ここに載せちゃいなよ!

583:nobodyさん
09/06/11 10:23:35
んなもんifで数値比較するだけだろw

584:nobodyさん
09/06/11 13:32:40
$str = $val > 0 ? '+' . $val : '-' . $val ;

あ、0のときはしらん。

585:nobodyさん
09/06/11 14:09:33
-1を--1にする気か?

586:nobodyさん
09/06/11 14:10:28
みんな printf 嫌いなの?

587:nobodyさん
09/06/13 16:08:22
あえてセッション使わずにglobal変数使いまくって

入力画面←→確認画面→送信

と行ったり戻ったりするフォーム作るって変?
遷移するたびに文字のエスケープやらなんやらで埋もれるんで明らかにいけてないなと

588:nobodyさん
09/06/13 16:18:56
global変数でどうやってリクエスト跨いでデータ受け渡しすんの?

589:nobodyさん
09/06/13 18:08:42
hiddenかsession以外でそれやる奴バカだろ

590:nobodyさん
09/06/13 18:21:00
>>587
>あえてセッション使わずに

の時点で変だけど、そうしたい理由は何さ?

591:587
09/06/14 21:34:45
>>588
フォームに入力→POST→確認画面→戻るリクエスト→hidden大量で入力画面にバックして反映
この間globalでユーザー関数またぎまくり

>>589
戻ると次へと送信でhiddenとそのエスケープ処理が100コくらいある

>>590
クッキー使えないのと、心理的にURLに埋め込みたくないのと、
ブラウザのバックボタンで期限切れだしたくない(じいちゃん連中向けなんでヤツらはパニクる)のでどうしていいやら

最後のはセッション関係なかったっけ

機能的にはできあがってきちんと動いてるんだが超気持ち悪い
やり方あったら教えてプリーズ

592:nobodyさん
09/06/14 21:54:41
>>591
>ブラウザのバックボタンで期限切れだしたくない

youメニュー隠しチャイナyo
っていうか心理面を克服してでもセッション使ったほうが楽だと思うんだがなぁ。

593:nobodyさん
09/06/14 21:56:49
セッションキーをhiddenで渡せばいいだけの話だろ常考

594:nobodyさん
09/06/14 22:00:08
>>593
そんなことできたのか
しらんかった

595:nobodyさん
09/06/14 22:11:51
まぁ実際はただのリクエストだからなw

596:nobodyさん
09/06/15 20:18:19
正規表現についてお尋ねします。
あるフォームに入力された全角文字を半角文字にして他のフォームに代入するといった事をやっていますが、
全角→半角にするのはmb_convert_kanaでやるとして問題は半角に出来ない文字(例えば漢字など)を取り除いて
代入したいのです。要は半角に変換した後の文字列から全角文字だけを取り除いて半角文字列だけにしたいのです。
例:HOGE安弘MOGE → HOGEMOGE
こういう事は正規表現で可能でしょうか?

597:nobodyさん
09/06/15 20:32:09
>>596
preg_match_allで欲しい部分を抜いてきて、implodeでくっつけるってのは?

preg_match_all('/([A-Z])/', $str, $match);
$newStr = implode('', $match);

パターンは自分の条件に読み替えてくれ

598:nobodyさん
09/06/15 21:11:06
PDOを使ったスクリプト配布してるとこ教えてください

599:nobodyさん
09/06/16 13:07:05
どなたか~~

600:nobodyさん
09/06/16 13:22:26
スレ違い

601:nobodyさん
09/06/16 17:27:04
ですか。失礼しました

でっこれはこのスレとマッチすると思うんですけど
海外からのフリースクリプトダウンロードしてもPDOをほとんど使って無いんですよ
なぜですか?

602:nobodyさん
09/06/16 18:15:13
Manualのサンプルじゃ足りないの?

さておき、質問の答えは「今のところわざわざPDOを使う理由が無いから」じゃないかなぁ。

603:nobodyさん
09/06/16 22:33:48
>>601
ソース見たフリースクリプトってどれ?

604:nobodyさん
09/06/16 23:00:21
えと、見すぎであまり覚えてないのですが・・・
ほとんどhotscriptからです

605:nobodyさん
09/06/17 01:01:12
適当に挙げてみてもらえると参考になるんだけど。
合計では約いくつ?

606:nobodyさん
09/06/17 10:46:14
まあ作られた時期も見てみ

607:nobodyさん
09/06/18 23:33:25
たった今澪抱き枕\7,300*4ポチったwww
今日の最終回泣くかもしんね俺www

608:nobodyさん
09/06/18 23:34:17
うわああああああああああああああああああああああああああああ
誤爆したああああああああああああああああああああああああああ
俺死ぬマジ死ぬw

609:nobodyさん
09/06/18 23:39:01
wwwwwwwwwwwwww

610:nobodyさん
09/06/18 23:43:23
kimoi

611:nobodyさん
09/06/19 01:47:29
早速ニコ動にうpかよw
保存すますたw

612:nobodyさん
09/06/19 01:48:10
ごむぇん・・・誤爆・・・

613:nobodyさん
09/07/01 11:28:04
WordPress の質問ってここで聞いてもいいんでしょうか。

arras theme というテーマを使っているのですが
そのテーマにはトップページに記事のサムネイルを表示する
javascript のスライドショーがあります。
それを他のページ(たとえば普通のページなど)にも
設置することはできるでしょうか。

home.php のそれっぽい場所をコピーして single.php に貼り付ければ
出来なくもなさそうなんですが、複雑でわかりにくいのと
そもそもそういう設定ができるかもしれないので質問しました。

環境はwordpress のバージョンは2.8 arras theme は最新のものを使っていて
自分は php と javascript であれば編集できます。よろしくお願いします。

614:nobodyさん
09/07/02 11:12:33
foo($array, 'a') なら $array['a'] を返し
foo($array, 'a', 'b') なら $array['a']['b'] を返すには

function foo() {
// ???
}

をどうしたらいいでしょうか。

func_num_args() を使って再帰で、
なんて思ったのだけど、考えがまとまらなくて。

615:nobodyさん
09/07/02 14:46:54
なんのためにそんな関数を
$var = foo($array, 'a');
なら
$var = $array['a'];
でいいじゃん

616:nobodyさん
09/07/02 15:38:49
foo($array, $bar, $baz) と書くんだったら $array[$bar][$baz] でいいよね。

foo($array, array('a', 'b')) を $array['a']['b'] にするんだったら
foo($array, $arr_keys) みたいに渡したいのかなとも思うんだけど。

617:614
09/07/02 15:41:46
>>615-616
E_ALL 環境で isset() が面倒なんので、
foo 内で isset して値を返したり、
値があるか判定するのを作ろうと思って。

618:nobodyさん
09/07/02 16:47:20
>>617
foo:セットされてないときfalse,セットされているときはその配列の内容が返る

$arr["a"]["b"]["c"] = "hoge-c";
$arr["a"]["b"]["d"] = "hoge-d";
$arr["a"]["b"]["e"] = "hoge-e";
var_dump(foo($arr,"a", "b")); // result array
var_dump(foo($arr,"a", "b","c")); // resurt string
var_dump(foo($arr,"a", "c")); // resutl false
var_dump(foo($arr,"b")); // result false

function foo() {
$cnt = func_num_args();
$var = func_get_args();
$arr = $var[0];
for ($i=1; $i<$cnt; $i++) {
if (!isset($arr[$var[$i]])) return false;
$arr = $arr[$var[$i]];
}
return $arr;
}


619:614
09/07/02 16:55:15
>>618
最高です。。。
ありがとうございます!

620:nobodyさん
09/07/02 21:49:43
せっかく5.3から省略三項演算子が使えるようになったというのに

621:nobodyさん
09/07/03 06:14:31
echo "<input type=hidden name=※>";

のような、出力するHTMLタグ内の※の部分に変数を置きたいのですが、
今までname=".$aaa.">のように". ."の間に変数名を入れて繋いでいたところ、
たまたま違う人がname={$aaa}>と{ }で囲っているのを見つけました。

変数の中身を{ }で参照できるのは納得できたのですが、
". ."で囲う場合、変数ではなくname=".session_name()."のようにできるところを
{ }で囲う場合はどうすればよいでしょうか。

PHP5

622:nobodyさん
09/07/03 06:15:55
{}で参照なんかできないよ

623:nobodyさん
09/07/03 06:21:26
とするとタグの途中に変数とか関数の戻りを表示したいときどうつなげるのが普通なんでしょう
". ."は超自己流なんで定番が知りたく。

624:nobodyさん
09/07/03 06:23:18
マニュアルか他のアプリのコードでも見てみれば?

625:nobodyさん
09/07/03 06:31:04
いくつかの他アプリで{ }と・・・・

626:nobodyさん
09/07/03 06:36:58
じゃそうすればいいんじゃね?

627:nobodyさん
09/07/03 06:39:26
すみませんでした
もうちょい詳しい人に聞いてみます

628:nobodyさん
09/07/03 06:40:56
死ね低脳w

629:nobodyさん
09/07/03 06:45:36
echo '<input type="hidden" name="',session_name(),'>';

630:nobodyさん
09/07/03 08:57:30
>>621-622
まあできるかできないかで言えばできる

631:nobodyさん
09/07/03 10:55:19
PHP は { } で関数と定数が埋め込めないのがダサい

632:nobodyさん
09/07/03 11:43:51
そんなものにまで対応させてたら文字列リテラルをパースするのにもっと時間がかかってしまう

633:nobodyさん
09/07/03 11:50:14
だいいち{}で変数が埋め込めてるわけじゃないし。
埋め込めてるのはダブルクオーテーションの機能だろ
{}は区切り文字なだけ

634:nobodyさん
09/07/03 12:48:46
>>632
" や ' 以外の括り文字でもあればいいのかもね。
それとは別に Perl や Ruby の q| | とかもほしいなぁ。

635:nobodyさん
09/07/03 23:23:32
613ですが自己解決しました。

プラグインで smoothview というのがあったので
そのインターフェースを改造しました。

636:nobodyさん
09/07/04 07:55:20
もしかしてsmartyなんじゃないの?
smartyって{}を多用するよね。

637:nobodyさん
09/07/05 21:23:19
powerd by *****
と表示しなくてもいいCMSはありませんか?

638:nobodyさん
09/07/08 11:36:42
すいません、こちらで質問していいのかどうかわからないんですが
レンタルサーバの設定では、PHPを「FastCGI アプリケーションモード」で動かしているらしいのですが
結構頻繁に「The FastCGI process exceeded configured activity timeout」ってエラーが出ます。
サーバ会社に聞くと、「FastCGIに対応したコードを記述してないからです」と言われたのですが、
当方、参考書を見ながら作成しているのですが、どこにもFastCGIについて書かれておらず
どこかにその対応コードなどが記載されているような参考にできるサイトを知っている方はいらっしゃらないでしょうか?

639:nobodyさん
09/07/08 11:48:42
>>638
      _______                     __
    // ̄~`i ゝ                    `l |
    / /        ,______   ,_____    ________  | |  ____ TM
   | |     ___ // ̄ヽヽ // ̄ヽヽ (( ̄))   | | // ̄_>>
   \ヽ、   |l | |    | | | |    | |  ``( (.  .| | | | ~~
      `、二===-'  ` ===' '  ` ===' '  // ̄ヽヽ |__ゝ ヽ二=''
                         ヽヽ___//   日本
  _____ _____  ______  _______
  |  ウェブ  | | イメージ | | グループ | | ディレクトリ |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       ._________________
      |FastCGI PHP               │・検索オプション
      └────────┘・表示設定
         | Google検索 | I'm Feeling Lucky |  ・言語ツール
          ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       ○ウェブ全体から検索 ◎日本語のページを検索

640:nobodyさん
09/07/08 11:52:55
たんに処理時間が長くてタイムアウトしているんじゃないかなぁ

641:nobodyさん
09/07/08 11:59:11
>>638
すいません、すでにいろいろとぐぐってはいるんですが
サーバ側でFastCGIを導入する方法ばかり記載されており、PHPでサイトを作る際の注意点などが記載されているものがなく
困っております。
そこで、そのような記載があるサイトがないかお尋ねしたのですが、やはり難しいのでしょうか。

642:nobodyさん
09/07/08 12:01:18
ActivityTimeout=300

643:nobodyさん
09/07/08 12:11:40
>>642
ありがとうございます。
タイムアウトの設定を変える内容のようですが、そちらはPHPファイルのどの当たりに記載すればよろしいのでしょうか?
そのコードがレンタルサーバ会社の言う、こちらが記載すべき「FastCGIに対応したコード」というものなのでしょうか。
なんどもお聞きしてしまって申し訳ありません

644:nobodyさん
09/07/08 12:37:53
FCGIext.iniだよ

645:nobodyさん
09/07/08 12:55:07
>>644
ありがとうございます。
調べたところ、レンタルサーバの管理上FCGIext.iniの編集はこちらではできないようになっているようです
わからないことばかりなので、もうすこしぐぐったりして基礎知識から勉強をしなおそうと思っています
ご助言をしていただいた方々、ありがとうございました

646:nobodyさん
09/07/08 14:16:07
PHPを始めたばかりでどうしてもよくわからない点があります。
考え方といいますか、流れを教えてください。

XHTMLとCSSで縦2分割サイトを考えており、左に配置したドロップダウンリストから選択、
右側に内容表示というよくあるパターンです。内容はMySQLから取り出す予定です。

ここでわからないのが、内容の表示位置の指定です。
MySQLのデータとCSSタグを一緒に出力すればよいのでしょうか?

根本的な勘違いをしているような気がしてならないのですが、どこが勘違いなのかも
よくわからないです。

647:nobodyさん
09/07/08 14:34:54
MySQLのデータとHTMLタグを一緒に出力して
CSSでその位置を指定すればいいのでは

648:nobodyさん
09/07/09 12:14:47
prototype.jsのAjax.Updaterを使えば簡単なんじゃないか。
推奨はしないけど。

649:nobodyさん
09/07/09 13:19:44
>>647
ありがとう。
その方法だとうまくいかないのです。
サイト全体が置き換わってしまうので、結局すべてのHTMLにメニューをつけないと
ダメっぽいです。

>>648
ありがとう。
いまググってみました。
たしかにやりたいことと合致します。
ただ、これから言語をマスターするので、より簡単といわれているPHPを覚えたい
という気持ちがあります。JSと両方覚えれば済む話ではあるのですが、オレには
キャパがないです。たぶん。

650:nobodyさん
09/07/09 14:26:18
>>649
iframeって手もあるな。

651:nobodyさん
09/07/09 17:26:11
phpを使うならJavascriptはある意味必須だよ。
連携しないと実現出来ない事も多々あるし。

652:nobodyさん
09/07/09 18:41:50
>>650
ありがとう。
iframe

653:nobodyさん
09/07/09 18:48:35
すまんそん。

>>650
ありがとう。
iframeは考えたんですけど、XHTML1.1で非サポートになり、策定中のHTML5.0でも
廃止になるということで、使わない方向を考えてました。

>>651
ありがとう。
JavaScriptも必須ですか。
まったくの初心者なので、PHPの公式マニュアルを読むだけで苦労してます。

654:nobodyさん
09/07/09 21:36:35
iframeなくなるの?

655:age
09/07/09 22:48:26 DwSsHHgt
ファイルをアップロードしmove_uploaded_fileをした時点で
強制的にサーバとPCとのコネクションを切断する事は可能ですか?

656:nobodyさん
09/07/10 02:40:08
>>655
exit か die で終了させちゃえばいいんじゃないの。

657:nobodyさん
09/07/10 12:50:37
>>654

iframeは、XHTML1.1ではすでに無いです。
W3Cの勧告でもHTML5.0で無くす方向で進めているようです。

658:ユキ
09/07/12 04:36:26 au+P+rHJ
初めまして。
PHPど素人です。

インターネットで調べながらPHPの問題に取り組んでいますが、
2週間以上掛けても全く分かりません。
どのように書くのか教えていただけないでしょうか。
『EmEditor Free Version 6.00.4』とザンプを使っています。

問題は以下のとおりです。

『数値1~9があります。全て4桁です。
9つの数字の中の最大値と最小値を出力しなさい。
負の数と5桁以上の数値が入力された場合エラーと出力する。
さらに数値1~9のどの数値が最大値、最小値か出力しなさい。』

ループとfunctionを使うそうなんですが、どう使えばいいのか分からず、
ゼロの状態です。

皆様、お忙しいと思いますが、助けていただきたいです。
お願い致します。

659:nobodyさん
09/07/12 05:09:19
宿題は自分で

660:nobodyさん
09/07/12 08:09:56
>>658
数値1を入力する
数値2を入力する
数値3を入力する
数値4を入力する
数値5を入力する
数値6を入力する
数値7を入力する
数値8を入力する
数値9を入力する


    ↓
数値1に入れられた数値を、$aに入れる
、、、、
数値9に入れられた数値を、$iに入れる

661:nobodyさん
09/07/12 08:11:34
$aが4桁か調べる。

もし5桁以上なら、エラーを吐いて死ぬ。

4桁なら、こんどは、$aが負の数かどうかを調べる。

0以上なら、おk。
もし負の数なら、エラーを吐いて死ぬ。

$aのチェックが終わったら、$b、そして
、、、、$i。

662:nobodyさん
09/07/12 08:14:51
次に、$a~$iを配列に入れる。

そんで、その中の最大値を調べる(専用関数あり)

そして、こんどはその配列の、最小値を調べる(専用関数あり)

そんで、最大値のvalueに一致するkeyを調べて、
「この数値○が最大でした」って表示

次に、最小値がでたところのvalueのkeyを調べて、
「この数値のときに最小でした」って表示。

以上。あとは上記の仕様書をプログラマーに食わせれば
ソースコードを吐く。

663:nobodyさん
09/07/12 08:24:10
>>660-662
それだと「さらに数値1~9のどの数値が最大値、最小値か出力しなさい」
の設問には答えられないので、もう一工夫が必要。

664:nobodyさん
09/07/12 08:51:58
preg_matchでチェックとセットが同時にできる

665:ユキ
09/07/12 14:48:56 tG558Uf0
>>660-664
ご親切にありがとうございます!!!!!

おかげさまで$aの桁を調べるまで出来ました!
書いていただいた内容をヒントにもう少し自分で頑張ってみます!

666:ユキ
09/07/12 22:27:20 tG558Uf0
以下のように書いてみましたが、
これからどのようにfunctionとループを使えばいいのかどうしても分かりません。
解答、あるいはヒントを頂けないでしょうか?
度々すみません。

if($a > 9999 or $a < 0){
echo "<div>エラー</div>";
} else { echo "<div>$a</div>";
}
     if($b > 9999 or $b < 0){
echo "<div>エラー</div>";
} else { echo "<div>$b</div>";
}

if($c > 9999 or $c < 0){
echo "<div>エラー</div>";
} else { echo "<div>$c</div>";
}

if($d > 9999 or $d < 0){
echo "<div>エラー</div>";
} else { echo "<div>$d</div>";
}

if($e > 9999 or $e < 0){
echo "<div>エラー</div>";
} else { echo "<div>$e</div>";
}


667:ユキ
09/07/12 22:28:07 tG558Uf0

if($f > 9999 or $f < 0){
echo "<div>エラー</div>";
} else { echo "<div>$f</div>";
}

if($g > 9999 or $g < 0){
echo "<div>エラー</div>";
} else { echo "<div>$g</div>";
}

if($h > 9999 or $h < 0){
echo "<div>エラー</div>";
} else { echo "<div>$h</div>";
}

if($i > 9999 or $i < 0){
echo "<div>エラー</div>";
} else { echo "<div>$i</div>";
}


$x = array( $a , $b , $c , $d , $e , $f , $g , $h ,$i );
echo " 最大値: " .max($x). "<br />\n";
echo " 最小値: " .min($x). "<br />\n";

668:nobodyさん
09/07/12 23:06:46
人力ループしてから配列に叩き込むセンスに感心しすぎて何も言えない

669:nobodyさん
09/07/13 02:32:15
すげぇ。授業はこれまで全部受けてるの?
受けてたとしたらこの段階でこんな問題出した教師が悪い

670:nobodyさん
09/07/13 11:10:34
>>666
function は 一部の値だけを変えて同じ処理が続く場合に使います。
>>666-667を良く見てみると、同じ記述が見つかりますね。
まずは、共通化できる処理をfunction化してみましょう。

ループ(for while fareach)は、
一部の値を変化させながら同じ処理を繰り返すときに使います。
同じような命令が繰り返している箇所をループ化してみましょう。

671:nobodyさん
09/07/13 18:25:41
ローカル環境でテストするときに
実際のフルパスを書き換えないでテストできる
フリーの開発ツールを前に何かで見つけたのですが
ご存じないでしょうか?

672:nobodyさん
09/07/13 18:29:50
PEAR使うとエラーが出まくるんだけど、これって
どうすればいいの?

673:nobodyさん
09/07/13 19:15:29
>>671
パスは設定ファイルに入れておけばいいじゃない。

完全一致を期待してるとカスタマイズとかのときにも
パスの全チェックをしなきゃいけなくなるから面倒だよ。

または、Windows/OSXにもそれぞれ仮想環境ツール
が出ているから、仮想環境ツールに、お目当てのOS
を入れて、Explorer/Finderからコードを更新できるよう、
Sambaあたりを入れて動かしておけばいいかと。

674:nobodyさん
09/07/13 19:16:10
>>672
PEARのインストールができているかまずチェック。

675:nobodyさん
09/07/13 21:11:07
>>673
php.iniで簡単に出来ました。
ただすべてのページにbase hrefを入れているので階層めぐりは無理でしたorz

どこかにコールバック関数と連携させてうまく開発出来る海外のツールがあったと思うんだけどなぁ。。
もう一度探してみます。ありがとうございました。

676:nobodyさん
09/07/15 03:07:14
[環境] WinXP(XAMP) + PHP5
[質問] メンバ関数をメンバ変数の連想配列にぶち込みたい。
※2が通るような使い方をしたいのですが、やりかたをご教授いただけませんでしょうか、、、。
----------------------------
※1 OK
function HogeFunc {
 echo "Called HogeFunc1";
}
class HogeClass1{
 public function Action() {
  foreaech( $m_Array as $key => $value ) {
   $value();
  }
 }
 $m_Array = array( "HOGE_TAG", "HogeFunc1" ); //! 呼び出しOK
};
----------------------------
※2 こいつはNG
class HogeClass2 {
 public function Action() {
  foreaech( $m_Array as $key => $value ) {
   $value();
  }
 }
 public static function HogeFunc2 {
  echo "Called HogeFunc2";
 }
 $m_Array = array( "HOGE_TAG", "HogeClass2::HogeFunc2" ); //! 呼び出すとエラー
}
※※エラー内容※※
Fatal error: Call to undefined function HogeClass2::HogeFunc2() in ....省略
----------------------------

677:nobodyさん
09/07/15 03:15:04
下の奴パースエラーにならないか?

678:nobodyさん
09/07/15 03:16:29
上もだった。
色々ひどい。HOGE_TAG関数もないし

679:nobodyさん
09/07/15 05:17:03
Reflection API

680:nobodyさん
09/07/15 10:01:02
>>674
そういう問題じゃなくて。
PEARの書き方が古すぎて、
noticeが出まくるってこと。

681:nobodyさん
09/07/15 15:59:14
エラー表示の制御は基本中の基本だぞ

682:nobodyさん
09/07/16 17:37:24
PHPを勉強しようと思ってPHPをDLするのにサイトに行ったけど
全く繋がらないんだが俺だけかな?

683:nobodyさん
09/07/16 18:39:37
www.php.netやphp.netじゃつながらなかったが
jp.php.net jp2.php.netとかはつながった

684:nobodyさん
09/07/16 19:15:41
>>683
ホントだ! これでDLして勉強できる・・・
ありがとうございます

685:質問です
09/07/22 01:15:02
xhtml構造で
他ページにおいてるphpを読み込むには
どうしたらいいですか?
いまはとりあえず、インラインとかobjectタグで
呼び出しています

ほかに良い方法があればお教えください
 

686:nobodyさん
09/07/22 04:17:36
>>685
軽くエスパーして
つ require


687:nobodyさん
09/07/22 16:32:04
すいません。超初心者ですが、配列と変数について困っています。
$ar = array(1,2); とすると
Array ( [0] => 1 [1] => 2 ) と表示されるのですが、

$date = "1,2";
$ar = array($date); とすると
Array ( [0] => 1,2 ) と表示されてしまいます。

$dateにはテキストボックスから自分で数字とコンマを入力して代入するようになっているのですが、
これらを配列として扱うようにするには、どのように記述すればよいのでしょうか。

申し訳ありませんがよろしくお願いします。

688:nobodyさん
09/07/22 17:05:38
$date = explode(",",1,2);
while ($i == 0){
$date1 = mt_rand(0,1000);
$date2 = mt_rand(0,1000);
if ($date1 == $date[0]){
if ($date2 == $date[1]){
break;
}
}
}
$ar = array($date1,$date2);

689:687
09/07/22 17:05:52
すいません、自己解決しました。
$ar = array($date); を
$ar = explode(",", $date); とすることでうまく動きました。
お手を煩わせて申し訳ありませんでした。

690:687
09/07/22 17:07:43
>>688さん
ありがとうございました。

691:nobodyさん
09/07/23 00:45:19
685です
>>686トンです
require_onceとhtaccessやっても無理でした
再度トライ中
 

692:nobodyさん
09/07/23 15:34:36
$this->name = "名前";
$this->mail = "メアド";
$this->tel = "電話";

などとあった場合、$thisの配列の中身を全部一括出力したい場合どうすればよいでしょうか

693:nobodyさん
09/07/23 15:39:20
var_dump($this);

ちなみに配列じゃないけどね

694:nobodyさん
09/07/23 16:15:48
>>693
おおーこれ便利ですねー
ググって類似のprint_rも覚えました
ありがとうございました

695:nobodyさん
09/07/23 16:51:40
セッションを使ったフォームで、入力してもらったフォーム内容を確認画面に飛ばした後、
入力画面に戻って修正箇所を再入力、というような普通のフォームを作っているのですが、
修正入力のときにフォームのリセットボタンが動作しません(全消去ではなくセッションで渡された内容に戻ってしまう)

スクリプトの挙動としては作った通りなので当然なんですが、機能としてどうも違うような気がします
何か解決方法はないでしょうか

696:nobodyさん
09/07/23 17:44:36
リセットはJSでやりゃあいいじゃん

697:nobodyさん
09/07/23 17:57:10
UI としてリセット機能は不要なことが多いけど

698:695
09/07/23 18:08:13
なるほど、どっちもアリだと思うので両方検討してみます

699:nobodyさん
09/07/23 22:50:23
Apache入れないでphp.exe -lって出来る方法ってありますか?
Apacheを入れたPCでは現在使えています。

700:nobodyさん
09/07/23 23:04:04
CLI版ならできるんじゃ?

701:nobodyさん
09/07/23 23:49:44
win zip版を落としてきて
パスphp.exe -l "%1"

これでダメなのです。
Apacheを入れてるときは動いてたのですが

702:nobodyさん
09/07/24 10:45:01
エラー文言を出さないのは釣りということ。スルーで。

703:nobodyさん
09/07/24 18:48:34
$_SESSION["input"] = $_POST;

としてフォームからPOSTされた中身を一括して$_SESSION["input"]に放り込んでるんですが、
さらにそれを一括してhtmlspecialcharsする方法はないでしょうか

現状べた書きでずらずらっと書いてるんですがどうも美しくなく・・・


PHP5

704:nobodyさん
09/07/24 18:57:24
最後$_SESSION["input"]にhtmlspecialcharsをすればいいんじゃないの?

705:nobodyさん
09/07/24 19:15:54
function h($data) {
if (is_array($data)) {
return array_map('h', $data);
}
else {
return htmlspecialchars($data, ENT_QUOTES);
}
}


706:nobodyさん
09/07/24 19:49:53
POSTとかSESSIONじゃなくて出力用データにまとめてかけなさいよ

707:nobodyさん
09/07/24 20:12:12
>>705
ありがとうございます
勉強がてら意味を追いながら似たような関数も合わせて調べてるんですが、
addslashes($data);
とするとフォームに"が入力されたとき\\\"と\が3つ増える怪現象にはまって脱線中ですw
ググろうにも\がGoogleにエスケープされるというw

>>706
本当にやりたいのはそれなんですが、出力用データがHTMLを含んでるので表示がおかしくなってしまうんです

708:nobodyさん
09/07/24 20:16:44
>>707
magic_quote

709:nobodyさん
09/07/24 20:20:38
>>707
普通はHTMLに出力用データを埋め込んで表示

710:nobodyさん
09/07/25 03:07:01
>>705>>708をベースに、htmlspecialchars後の&まで&に置き換わってしまう謎を無理矢理解決して最終的にこうなりました

function h($data){
 if(is_array($data)){
    return array_map('h', $data);
 }else{
    return stripslashes(preg_replace("/&/i", "&", htmlspecialchars($data ,ENT_QUOTES, "SJIS")));
 }
}

呼び出し箇所
if(get_magic_quotes_gpc()){ $_SESSION["input"] = h($_SESSION["input"]); }

動いてはいるものの正直自信全くナシですw


>>709
こっちもできるようになりたくて試行錯誤3時間
今日はできませんでしたorz
明日また粘ります

出力したいデータを詰め込んだ変数の中身はこんなかんじです

$output = "
 <table><tr>
   <td>名前</td>
   <td><input type=\"text\" name=\"name\" value=\"".$_SESSION["input"]["name"]."\" /></td>
 </tr></table>
";

711:nobodyさん
09/07/25 03:08:44
あ、書き込んだら勝手に記号置き換えられてました
>>710の「&まで&に」は「&まで&amp;に」です

712:nobodyさん
09/07/25 06:09:00
>>710
<?php
/* ~前処理~ */
$data['name'] = htmlspecialchars($_SESSION["input"]["name"]);
?>
<table><tr>
 <td>名前</td>
 <td><input type="text" name="name" value="<?php echo $data['name']; ?>"/></td>
</tr></table>

713:nobodyさん
09/07/25 09:38:50 njtiSjD4
&が置き換わるのは
htmlspecialcharsの仕様

714:nobodyさん
09/07/25 17:11:32
>>712
おかげさまでできました
$_SESSIONの中身を一度別の配列に放り込むのは
$_SESSIONの中身をいじるべきではないから
と解釈しましたがよいでしょうか

>>713
ググってさっそく調べました
「そういうもの」と考えるしかないみたいですね・・・


ところで、>>710で書いたfunctionなんですが、
フォームに\を記入するとstripslashesの作用で\が消えてしまうというトラブルに見舞われてます


該当部分の処理を順番に並べると下のようになるのですが

$data = htmlspecialchars($data ,ENT_QUOTES);
$data = preg_replace("/&amp;/i", "&", $data);
//*//
$data = stripslashes($data);


これだと\が消えてしまうので、上の//*//の部分に


$str = preg_replace("/\\\\/i", "\\", $str);

を入れてstripslashesをだまして強引に解決している状況です
なんか違和感があるのですがこれでよいものでしょうか

715:nobodyさん
09/07/25 17:16:16
stripslashesって何のために入れてるの?

716:nobodyさん
09/07/25 17:35:20
これをいれないと、なぜか画面遷移やリロードのたびにフォームに記入された\の数が倍々で増えるんです

717:nobodyさん
09/07/25 17:48:38
magic_quotes_gpc が効いてるだけでは

718:nobodyさん
09/07/25 17:49:57
うん。
あと野村監督じゃないけどバグに不思議のバグなしなので
「なぜかこうなる」はちゃんと原因探ったほうがいい

719:nobodyさん
09/07/25 17:58:30
>>717
なってます・・・
支障のないところまで組み上げて1度実装用のサーバーでこの部分必ずテストしてみます
とりあえず保留にして内容送信の機能先に作っちゃいますね
セッションすら閉じてない状況なのでw

720:nobodyさん
09/07/25 19:12:06 y2BFJd1A
配列をJavaScriptのオブジェクトにするプログラムを考えているのですが
どうしても配列の深さだけ処理を繰り返す必要があります。再帰的に繰り返すにはどうしたらいいのでしょうか。

この例だと配列を2階層しか整形出来ない
function makejson($array){
    $return = "{\n";
    foreach($array as $key => $value){
        $return .= "\t".$key.":";
        if(is_array($value)==true){
            $return .= "{\n";
                foreach($value as $key => $value_2){
                    $return .= "\t\t".$key.":";
                    $return .= "\"".$value_2."\",\n";
                }
            $return .= "\t},\n";
        }else{
            $return .= "\"".$value."\",\n";
        }
    }
    $return .= "}";
    echo $return;
    exit;
}

721:nobodyさん
09/07/25 19:12:30 y2BFJd1A
入力例
$array = array{
    'example' => array{
        'test1' => 'value1',
    },
    'example1' => 'value3',
}
makejson($array);
出力例
{
    example : {
        test1 : "value1",
    },
    example1 : "value3",
}

よろしくお願いします。

722:nobodyさん
09/07/25 19:25:21
>>720
URLリンク(www.php.net)

723:nobodyさん
09/07/25 19:48:52 y2BFJd1A
そんな便利な関数があったのねありがとう

724:719
09/07/26 17:13:42
最近皆さんにお世話になった>>719です
その後メール送信機能はすったもんだありつつなんとかなって、
実装サーバーで>>715,717について実装サーバーでテストしたら
stripslashesがなくても問題ない(php.iniの設定が鯖とローカルで違った)ことが判明しました
おかげさまで機能は全部完成しトラブルも起きてません

ところで、ソースを最終チェックしてるうちに、
セッションを使ってるのにもかかわらずセッションIDを何にも利用してないことに気づいたんですがいいんでしょうかw

具体的にはhiddenで各画面にセッションネームとセッションIDを渡してはいるものの、ただ渡してるだけなんです
URLの後に付加してるわけでもなく、セッションIDを評価する条件分岐があるわけでもなく・・・
クッキーオフにしても普通に動いてるんですが、なんか根本的なところでおかしかったりしないでしょうか

725:nobodyさん
09/07/27 11:41:33
CSRF とか大丈夫なんかな

726:nobodyさん
09/07/28 18:19:31
php5.2.5で、mb_send_mail()を使ってメールを送信する際、
spam扱いをなるべく避けるため第5引数で-fパラメータのReturn-Pathを設定したいのですが、

$r_path ='-f aaa@bbb.com';
mb_send_mail($to,$sub,$body,$header,$r_path);
としてもエラーが出て送信できません
第5引数を外せば送信できるので第5引数が原因だと思うのですが、
対策はないでしょうか

php.iniの設定は以下の通りです
sendmail_from → no value
sendmail_path → /usr/sbin/sendmail -t -i


727:nobodyさん
09/07/28 19:54:00
>>726
-fの後ろに余分なスペースがあるとか。

728:nobodyさん
09/07/28 21:42:53
これって何をしたいんですか?(汗
$password = sha1(md5(md5(sha1(md5(sha1(sha1(md5($_POST[password]))))))));


729:nobodyさん
09/07/28 21:45:07
ワロタ

730:728
09/07/29 00:14:01
わかるかたいませんか?

731:nobodyさん
09/07/29 00:18:36
>>730
パスワードを推測されにくくしてからDBとかファイルとかに記録して
おきたいんじゃないかな。パスワード文字列そのものは保存しない。
で、MD5とsha1で滅茶苦茶にした文字列をファイルとかDBに保持し
ておく。

次にパスワードが合致しているかどうかを確認する場合、同じよう
に、入力した内容をMD5とsha1で滅茶苦茶にした文字列と合致する
かどうかをチェックする。これなら、DBやファイルに保存された文字列
を盗まれても、本物のパスワードは推測しにくいわけで。

732:nobodyさん
09/07/29 00:30:42
それって逆にパス文字列に戻せるのかな

733:nobodyさん
09/07/29 00:34:01
戻せない

734:nobodyさん
09/07/29 00:52:28
戻す必要ないしな

735:nobodyさん
09/07/29 00:55:37
あの青春は戻らない

ハッシュのように、曖昧な記憶が残っているだけさ

736:nobodyさん
09/07/29 00:57:34
>>728
別にそんなことしなくても、
sha1(25)
とかって書けば、25回暗号化してくれるのにな。

737:nobodyさん
09/07/29 09:23:39
>>736
ホント?

738:nobodyさん
09/07/29 09:39:56
ソノウソホント

739:nobodyさん
09/07/29 13:45:36
25が暗号化されるんじゃないのか?

740:nobodyさん
09/07/29 14:02:50
セッションについて悩んでます

ローカル環境で送信フォームをテストすると、
同一ページ内にある全てのリンクのURL末尾に自動的に
セッション名とセッションIDが付加されてしまいます
レンタル鯖上では起こらない現象なのですが、
どうしてローカルでだけ起こるのでしょうか

741:nobodyさん
09/07/29 14:11:35
>>740
session.use_cookies
session.use_only_cookies
session.use_trans_sid

これらの値をphpinfoで比較してみて。
session.use_trans_sidが有効だと、
coockieが使えない時に、URLの末尾に自動的にセッションIDを付加する。

742:740
09/07/29 14:23:22
>>741
>session.use_trans_sid

ありがとうございます
ビンゴでした
一発で治りました
秀樹感激

743:nobodyさん
09/07/29 14:57:52 YfqDSQPl
この性器表現の意味分かる人教えて。
!preg_match("/^$type\.\w+\.php$/", $entry)

744:nobodyさん
09/07/29 16:59:17
>>743
$typeで始まって、そのあとピリオド、そのあとに英数字が1文字以上続いて.phpで終わる

ちょっと質問なんだけど、オブジェクトのデストラクタ中で__getとか__setとかのマジックメゾットが正常に機能しない挙動があるんだけど、これってマジックメゾットだけなのか、他のメゾットも正常に機能しない可能性があるのか・・・
一応テストした限りでは正常な機能を失ったのは__getと__setだけなんだけど・・・

745:nobodyさん
09/07/29 17:23:30
>>744
ごめん勘違い

746:nobodyさん
09/07/29 19:47:14
>>744
さんきゅ

747:nobodyさん
09/07/31 09:32:14
童貞ですが何か?

748:nobodyさん
09/07/31 18:48:49
PHPのゲームってどれくらい負荷かかるのですか?

749:nobodyさん
09/07/31 19:11:43
PHPを何に使っているかによる。
ADVゲームの画面切り替えに使っているのなら、
それほど負荷はかからない。

リアルタイムの多人数同時プレイゲームのデータ
を常に送信しつづけるサーバーとしてPHPを使って
いるのなら、負荷はかなりのものになる。

750:nobodyさん
09/07/31 20:55:23
なるほど
ありがとうございます

751:nobodyさん
09/08/01 23:44:33 FfAyQxIr
初心ですいません。今PHPで複数のサイトの更新情報を表示できるrssをつくりたくて
やっと表示できたソースがあったんですが、↓のやりかただと更新時間順に表示されなくて、
URL順になってしまいます。
$rss = array('http://○○','http://○○','http://○○');

これ以上ぐぐっても答えが出そうにないのでお知恵をお貸しください

752:nobodyさん
09/08/01 23:52:02
RSSを表示できるなら、その内容をパースすることもできるだろう。
パースして各RSSの更新日時を取得、それを順に並べて出力すりゃいい。

753:nobodyさん
09/08/02 10:58:28
微妙にスレチなんだけど、このスレの凄腕達はPHP開発環境使ってる?
var_dumpでブラウザに毎回出力してたんだがさっき自称凄腕に失笑された

754:nobodyさん
09/08/02 12:27:20
デバッグするならZendStudio、とりあえずさっと作って動作確認するなら秀丸+ブラウザorコマンドライン

755:nobodyさん
09/08/02 12:28:46
>>753
つ FirePHP

756:nobodyさん
09/08/02 15:17:53
var_dumpを笑う者はvar_dumpに泣く

じっちゃんがよく言ってた

757:nobodyさん
09/08/02 15:24:41
俺なんてブラウザでprint_rですけど

758:nobodyさん
09/08/02 16:16:05
フリーのIDEがZendFWに完全対応してくれるならいいんだけど・・・


759:nobodyさん
09/08/03 09:48:18
リモートデバッグとかステップ実行したいときはPDTだけど
普段はPHPエディタ+tortoisesvn
デバッグ表示はVar_Dump::display(); // pearのVar_Dump

あとはXdebug有効にしてる(エラー時にブラウザに色々情報でる)
凄腕じゃないのでほとんどの場合、これで十分。

760:nobodyさん
09/08/05 23:34:19
公式マニュアルのミスは何処に言えばいいんだ?

URLリンク(jp.php.net)
>min() は配列の中で最も大きい数値を返します

761:nobodyさん
09/08/05 23:39:36
>>760
ドキュメントの改善を手助けするには
URLリンク(jp.php.net)



762:nobodyさん
09/08/06 09:46:57
※ただしストレスが溜まる

763:nobodyさん
09/08/09 02:42:18
PHPの総合開発環境で何かおすすめないですか?
PHPエディタという奴は起動してすぐ落ちるのでだめでした
VisualStudioみたいのがいいんだけど、やはりフリーじゃなくお金払わないとだめですかね

764:nobodyさん
09/08/09 02:48:28
eclips + PDT

765:nobodyさん
09/08/09 04:26:11
>>764
コード書いた後の出力の確認ってどんな感じになるの?

766:nobodyさん
09/08/10 00:19:53
教えてください
CSVから1行一件のデータを読み込み
最初のforeachの中でif文使って条件分けしたデータを配列に入れて
その分けた数とforeachで表示させたいのですが
条件分けしたデータを入れる変数?配列?の宣言の仕方が分かりません
$Alllist = file("data.csv");
foreach( $Alllist as $list )
{


767:766
09/08/10 00:22:54
改行間違って送ってしまった orz
if( strcmp( $list, "A" ) == 0 )
$array = $list;
}
printf( "Count count($array)" );
foreach( $array as $wake )
{

768:766
09/08/10 00:25:21
最悪だ、2度失敗した
  表示;
}

すみません、質問以前な事してますが
よろしくお願いします m(_ _)m

769:nobodyさん
09/08/10 00:30:52
strcmpで条件分けしたCSVの1行だけ
foreachで各列を表示したいんだよね?
それでいいのでは?

770:nobodyさん
09/08/10 00:55:07
推測になるが、例えばcsvデータの1列目の文字に応じて、分類したいということなら、

function group_lists($list, $key, &$group) {
if (! array_key_exists($key, $group)) $group[$key] = array();

$group[$key][] = $list;
}

// ここから呼び出し元

$group = array();
foreach( $Alllist as $list )
{
if (stripos($list, 'A') === 0) {
group_lists($list, 'A', $group);
}
else if (stripos($list, 'B') === 0) {
group_lists($list, 'B', $group);
}
// 以下、場合分けの数だけelse ifが続く
}


771:nobodyさん
09/08/10 01:16:15
submitボタンが押されたらフォームの内容を
ファイルに書き込むプログラムを作りました。

a.php
-----------------------------------------------------
if($_POST['submit']) {
writeData();
}
-----------------------------------------------------

これは正常に動いているのですが、
a.phpからb.htmlなどにページ移動し、ブラウザの戻るボタンで戻ると
再度POSTデータが送信されてファイルに書き込まれてしまいます。
これを避ける方法がありましたら、ご教授願えますか?

772:nobodyさん
09/08/10 03:15:03
>>770
なんで===にしてんの?

773:nobodyさん
09/08/10 03:15:45
>>771
Locationで飛ばすとか

774:nobodyさん
09/08/10 06:26:50
>>771
書き込む内容をチェックしたり、セッション使ったり
用途に合わせた選択をすればいいと思う
>>772
==を使う方が例外的だろう
普通は===を使うぞ

775:nobodyさん
09/08/10 07:11:59
えっ

776:nobodyさん
09/08/10 07:30:39
なにそれ

777:766
09/08/10 10:34:50
>>769 >>770さんレスありがとうございます
まずCSV内に一致した数を表示させて
その後に分類されたデータを表示させたいので
分類と表示を一緒にはできない・・・ですよね

配列を宣言して、その配列にどんどん分類したデータを追加していく
C++で言うvector見たいなのはphpでは無いのでしょうか?

778:nobodyさん
09/08/10 10:39:06

hairetu = array();
hairetu[]="hogehoge";
hairetu[]="hagehage";
hairetu[]="tsurutsuru";


779:nobodyさん
09/08/10 12:16:40
== は型を無視して比較、
=== は型まで同一かどうかを比較、
だったっけか

780:766
09/08/10 13:47:28
>>778
ありがとうございます、うまくいきました

>>779
知らなかったー

781:nobodyさん
09/08/10 14:09:08
>>774
普通は===を使うぞの根拠をkwsk

782:nobodyさん
09/08/10 15:46:06
>>781
URLリンク(d.hatena.ne.jp)
この記事がとても参考になると思う

783:nobodyさん
09/08/10 15:51:30
>>782
全部マニュアルで明記されてることじゃん??
どの辺が普通なの?

784:nobodyさん
09/08/10 15:58:42
粘着質な奴だな

785:nobodyさん
09/08/10 17:08:21
答えられないんだw

786:nobodyさん
09/08/10 17:24:39
テキストファイルからURLを抽出するphpを書きたいのですが、

$source (元のテキストファイル)
$result (URLリスト)
とします。

URLリンク(phpspot.net)
ここを参考に以下のコードを書きました。

// $pattern = '/http:\/\/[a-z0-9\/\-_\.]+/i';
// $pattern = '/(?:")?(http:\/\/[^\s"]+)/';
$pattern = '/^(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$/';

preg_match_all( $pattern, $source, $maches );
fputs($pointer, count($matches[0]));
fputs($pointer, "\n");

for ( $i=0; $i< count($matches[0]); $i++ )
{
fputs($pointer, $maches[1][$i]);
}

色々パターンを変えてやってみても、結果はいつも0(何もマッチしない)です。
これ以外の方法でも構わないので、テキストからURLリストを作る方法を教えてください。
よろしくお願いします。

787:nobodyさん
09/08/10 18:31:55
>>782
string型同士でも10e0とか数字比較されるのは知らなかった。
これは危険だな。

788:nobodyさん
09/08/10 20:09:42
>>786
ひょっとして
$source = 'hoge.txt';
とかじゃないよね?
preg_match_allの第2引数は検索対象となる”文字列”だからね?

789:nobodyさん
09/08/10 20:11:45
型まできちんと意識するときは===使うけど、意識するまでもないときは普通に==使うなあ。
まあ用心とか念のためとかいわれたらそう言う考え方もあるよね、だけど。

790:nobodyさん
09/08/10 20:17:14
型を意識しなくてもいい言語だからこそ型に関連するバグに嵌るんだよな

791:770
09/08/11 00:47:34
>>772

いまさらだが、striposは、見つからなかった場合、falseを返す。
== 0 とした場合、0文字目かfalseかを判断出来ないため、=== 0とした。

792:786
09/08/11 11:34:24
>>788
そうやってました。
っていうことは、$sourceから一行づつ文字列引っ張ってpreg_matchでチェックしていくんですかね。
どう書けばいいんだ… CかC++なら一瞬で終わるのに…


793:786
09/08/11 11:37:04
おそらく$sourceから fgetsでラインを取りだすと思うんですが、行はどうやって指定するんですか?
(ポインタをどうやって進めるんですか?)


794:nobodyさん
09/08/11 11:45:01
$source = 'hoge.txt';
$pattern = '/(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/mi';
preg_match_all( $pattern, file_get_contents($source), $maches );
print_r($maches);

795:786
09/08/11 11:46:06
<?php
 $pointer=fopen("./book/memo", "r");    //ファイルを開きます
   $line = fgets($pointer);       //内容を取り出します
  echo $line;               //画面に内容を表示
 fclose($pointer);              //ファイルを閉じます
?>

こういうクソサンプル載せてるサイトってなんなんだろう…
全く意味がないw

796:786
09/08/11 11:48:25
>>794さん
ありがとうございます。
file_get_contentsがキモだったんですね。

797:nobodyさん
09/08/11 11:48:48
お前が言うな

798:nobodyさん
09/08/11 12:29:46
ワロタ

799:nobodyさん
09/08/12 11:34:05
Apache で聞くべきか悩んだのですがここで。
.htaccess で

php_value mbstring.func_overload 0


と書いても設定が変わりません。試しに

php_value mbstring.func_overload = 0


と書くとエラーになるので .htaccess は読まれているようです。
( mod_rewrite などは動いている )

解決策をご存知の方はいらっしゃいませんか。

800:nobodyさん
09/08/12 11:41:53
ini_get("mbstring.func_overload"); はいくつ?

801:799
09/08/12 11:54:07
>>800
7 なので 0 にしたくて

802:nobodyさん
09/08/12 13:46:11
>>801
だからよ、7ってことはその.htaccessが効いてないってことじゃないか。

803:799
09/08/12 13:47:48
>>802
なので何でだろう、と。
Apache スレの方がいいですかね。

804:nobodyさん
09/08/12 14:04:17
ini_set してまたini_getするとどうなる?

805:nobodyさん
09/08/12 14:05:09
AllowOverrideがNoneになってるとか?

806:nobodyさん
09/08/12 14:05:24
そもそも環境は?バージョンとか。
一部レンタルサーバじゃその変更使えないとか書いてるサイトもみかけたぞ

807:799
09/08/12 14:44:31
みなさん、いろいろとありがとうございます。

>>804
mbstring.func_overload は PHP_INI_PERDIR なので
ini_set() できないだろと思いつつ、試してみましたが 7 のままです。

>>805
あ、それ怪しい、と期待したのですが
AllowOverride All
Options All
でした…。

>>806
自分のパソコンの実験サーバです。
Apache/2.0.63 + PHP 5.2.9-1 ( Windows Vista )

とりあえず php.ini の mbstring.func_overload = 0 をしてますが、
古いアプリが 7 を期待しているのがあって、普段は 7 がいいんです…。

808:nobodyさん
09/08/12 15:16:49
いやまあAllowOverrideはrewrite効いてるって書いてるから無いでしょ。
とりあえずこっちで試す限り普通に変更できるので、どこかで上書きしてるか
変更しないようになってるのでは。
インストールした直後の設定に戻しても同じかな


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch