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

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

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

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

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

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0611nobodyさん2008/06/17(火) 01:42:44ID:???
>>610
だから .= だっつってんだろが
0612nobodyさん2008/06/17(火) 01:44:02ID:???
>>610
連結代入って知ってる?
0613nobodyさん2008/06/17(火) 01:53:35ID:???
>>611-612
すいませんでした。意味が理解できたのでやってみます。
ありがとうございました。
0614nobodyさん2008/06/17(火) 07:04:37ID:???
ご教授
0615nobodyさん2008/06/17(火) 10:27:36ID:cJ7L3+9A
ある設定がしてある時のみ実行するのに一番コストの低い方法って何ですか?

とりあえず、設定がしてあるときにはfunctionの中身を定義して、
無いときには、空のfunctionを定義しています。
0616nobodyさん2008/06/17(火) 10:33:45ID:???
エスパー↓
06176152008/06/17(火) 10:42:28ID:cJ7L3+9A
わかりにくかったですか?補足します。
Cだと、
#if
#define NANIKA (hogehoge())
#else
#define NANIKA ()
#endif
という風にやれば、ある条件の時のみ、hogehoge()が実行されます。
PHPのほうでは
function nanika() {hogehoge();} と
function nanika() {;} をifの分岐でそれぞれ定義しています。
今のやり方よりも、実行時の負荷の低くなるやり方があれば、教えてください。
0618nobodyさん2008/06/17(火) 10:45:13ID:???
関数ポインタを変数に入れて切り替えるとか?
0619nobodyさん2008/06/17(火) 10:51:41ID:???
>>617
else節の省略が駄目な理由は?
06206022008/06/17(火) 11:16:09ID:???
>>603
レスありがとうございます。数秒の誤差は気になりますので
やっぱりちゃんと判定できる必要があります。

>何秒に発行したかまでクッキーに書いておいて読み込んで判定させるといい 何秒に発行したかまでクッキーに書いておいて読み込んで判定させるといい

と言うのはタイムスタンプを入れてそれで判別するということでしょうか?
06216152008/06/17(火) 11:18:54ID:cJ7L3+9A
すいません。大分間違った聞き方をしているようです。
整理しなおしてみます。

Cだと、
#if jouken
#define nanika(x) (nanika_func(x))
#else
#define nanika(x) ()
#endif

のようにすれば、nanika(hogehoge());は、
joukenのときだけnanika_func(hogehoge());を実行し、
joukenから外れる場合はnanika_func()もhogehoge()も実行されません。
PHPのほうでは
if (jouken)
function nanika(x) {nanika_func(x);} else
function nanika(x) {;}
のようにしておいて、nanika(hogehoge());というコードを書いています。
この場合、joukenに合わない場合、hogehoge();が一度実行されますが、
hogehoge();も実行されないようにできれば、
負荷を減らせられると考えています。何かありませんか?

hogehoge();が実行されるときの副作用に関しては、
現時点でも注意を払っています。
0622nobodyさん2008/06/17(火) 11:30:17ID:???
凝ったこと考えず素直に
if(JOKEN) nanika(hogehoge());
ではアカンの?
0623nobodyさん2008/06/17(火) 11:30:33ID:???
プリプロセッサとインタプリタの動作はわかってるのかな?
そこまで負荷を気にするのであればAPC等のアクセラレータを考えたほうがいい
0624nobodyさん2008/06/17(火) 11:36:08ID:???
>>621
Cだと、条件成立時には前者が関数としてコード化され実行ファイルに組み込まれ、
不成立だと消滅する。

実行時に条件判定をするなら、これは使えないんじゃないかな。
06256152008/06/17(火) 12:10:45ID:cJ7L3+9A
>>623
インタプリタなスクリプト言語でも、構文解析はともかく、
実行時は処理せずスキップする何かがあるかもと思って質問しました。

よくよく考えると実行時にスキップできるような処理系なら、
特別な構文とか技を使わなくても処理をカットするように実装するだろうから、
普通に記述してれば最適なようになってるでしょうね。

>>624
実行時というか、nanika()を呼ぶたびではなく、
function nanika();の定義時にjoukenを判断するだけでかまいません。
0626nobodyさん2008/06/17(火) 13:13:39ID:DvvNmeRS
URLを色々いじれる.htaccessってなんていう奴だったっけ…

modみたいな…

test.htmlをCGIに偽装して
test.cgiみたいにできる奴…
0627nobodyさん2008/06/17(火) 13:19:40ID:???
mod_rewriteのことか?
0628nobodyさん2008/06/17(火) 14:25:05ID:???
スレチだが、ずっと疑問だったクッキーやらセッションやら消しても、
なぜかこちらの情報が保存されてるサイトがあったから、
MACアドレスでも収集したのかとずっと思ってたんだが、
Flashクッキーなんてものがあったのね。
知らなかったわー
0629nobodyさん2008/06/17(火) 14:32:18ID:???
サーバ側でMACアドレスなんてわかるわけねーだろww
0630nobodyさん2008/06/17(火) 14:36:04ID:???
そもそもMACアドレスってルータ越しには伝わらんのじゃ?
0631nobodyさん2008/06/17(火) 14:39:18ID:wifkyQV+
質問です。
「この商品を見てる人はこんな商品も見てます。」
こういうの良く見るけど、どうやってるのでしょうか?PHPで出来ますでしょうか?
よろしくお願いします。
0632nobodyさん2008/06/17(火) 14:42:53ID:cLskKZdP
for($i = 1 ; $i <= 4 ; $i++)
{
$array['x'] = 15;
$array['y'] = 15;

switch($i)
{
case 1 : $array['x']++;
case 2 : $array['y']++;
case 3 : $array['x']--;
case 4 : $array['y']--;
}

for($j = 1 ; $j <= 4 ; $j++)
{
switch($j)
{
case 1 : $array['x']++;
case 2 : $array['y']++;
case 3 : $array['x']--;
case 4 : $array['y']--;
}

$array_map[] = "[{$array['x']}/{$array['y']}]";
}
}

array_unique($array_map);
print_r($array_map);

こういったループを徐々に深く(3重や4重)にしていきたいんですが、
ループを重ねるのはやはり大変なので、何か良いループ方法はありますでしょうか?
0633nobodyさん2008/06/17(火) 15:13:18ID:???
>>615

hoge.php
--------------------
function hoge(){
//code
}


main.php
---------------------

if(jouken){
require_once('hoge.php');
}


とか。
0634nobodyさん2008/06/17(火) 15:22:28ID:???
>>631
できますよ、実装は様々だけど。
例えばリファラを記録しておいて、一定数に達したらそういうメッセージ出すとか、
実際にはこんな商品を見ているという事実がなくても、
関連商品のリンクを見ているということにして貼る方法もあります。
下の方法は嘘になりますが見てる側からはわからないです。
また下の方法はHTMLだけで出来るのでPHPすら必要ないでしょうね。
06356032008/06/17(火) 15:42:12ID:???
>>620
そういうことです。
必要なデータ+時間をクッキーで送って
時間から60秒経過していれば〜の処理をする
のような感じでいいかと

でもクッキーはユーザー側で切ったり消したり値を書き換えたりできるから
60秒きっちりが取れないかもしれない。
特に連投制限のようなものだと意図的にやってる人には効果が無いので
もしそういう処理をやろうとしているならサーバ側でも何かしないとあまり意味が無いよ。
0636PHP℃素人2008/06/17(火) 16:35:00ID:6VYoJ2QR
自宅サーバの電源を切り忘れたときに外出先から携帯電話を使って
切断できたら便利だと思いPHPでシェルを実行するスクリプトを考え中です。
サーバOSはLinuxでユーザーに予め電源切断のみの権限を与えておきます。
<?php
echo shell_exec('shutdown -h now');
?>
としたのですがこれでよいでしょうか?
0637nobodyさん2008/06/17(火) 16:39:44ID:???
用途にもよるけど普通サーバの電源は年中無休でつけとくものだぜ
echoはしなくてもいいんじゃない?
あとパスワード設定するか誰でもアクセスできるような位置にはおかないこと
0638nobodyさん2008/06/17(火) 16:40:27ID:???
うごけばそれでよい
0639PHP℃素人2008/06/17(火) 16:45:30ID:6VYoJ2QR
>>637
実行したか確認したいのですがechoはいりませんか?
0640nobodyさん2008/06/17(火) 16:54:26ID:???
そんなマネやったことないからわからんけど、echoで出力するハズの
タイミングでは既に落ちてるんじゃ?
0641nobodyさん2008/06/17(火) 16:54:34ID:???
>>639
shutdownするってことはwebサーバも落ちるんだから確認のしようがないんじゃ?
外部のレンタルサーバにpingうつスクリプト置くか、pingうってくれるサイトから、
自鯖をシャットダウン後、ping送って確認してみるといいんじゃないか?
0642PHP℃素人2008/06/17(火) 17:38:30ID:6VYoJ2QR
>>640 >>641
とりあえず試してみます。
0643nobodyさん2008/06/17(火) 18:41:16ID:jPkgqGii
htmspecialchars($str, ENT_QUOTES);

上記でHTMLエンティティに変換したのですが、
HTMLエンティティを元に戻すにはどうしたらよいのでしょうか?
0644nobodyさん2008/06/17(火) 18:57:48ID:???
>>643
http://jp.php.net/htmlspecialchars
0645nobodyさん2008/06/17(火) 19:16:40ID:???
>>639
-tを付けて少し待たせるようにして、その間にメール送信
0646nobodyさん2008/06/17(火) 20:12:03ID:???
>>625の説明文が未だに理解できない……
__AUTOLOAD使うとかじゃいかんの?
0647nobodyさん2008/06/17(火) 20:44:51ID:???
>>632
念のために確認するが、
$array['x'] = 15;
$array['y'] = 15;
は、最初のループの内側でいいのか?
毎回初期化されるぞ。

どういう用途を想定しているのか分からんけど、再帰使えばいいと思う。
0648nobodyさん2008/06/17(火) 20:57:00ID:???
PHPを用いて CSVのデータを検索させたいのですが何かサンプルございませんでしょうか?
0649nobodyさん2008/06/17(火) 21:01:32ID:???
>>648
http://www.php.net/manual/ja/function.fgetcsv.php

少しはマニュアルよめ
0650nobodyさん2008/06/17(火) 22:30:39ID:???
多次元配列に収められた配列の分割方法がわかりません。
$arr[0]['name']=イヌ
$arr[0]['color']=白
$arr[0]['sex']=オス
$arr[1]['name']=ネコ
$arr[1]['color']=黒
$arr[2]['name']=リス
$arr[2]['color']=茶
$arr[2]['sex']=オス
上記のようなデータが格納された配列「$arr」があるとして、

0にあるものを配列「$hoge0」←(name=>イヌ,color=>白,sex=>オス)
1にあるものを配列「$hoge1」←(name=>ネコ,color=>黒)
2にあるものを配列「$hoge2」←(name=>リス,color=>茶,sex=>オス)

といった感じに、各配列に分解したいのですが、その方法を教えてください。
0651nobodyさん2008/06/17(火) 22:31:01ID:???
>>648
え、検索したらサンプルいっぱいでるじゃん
”PHP CSV”
0652nobodyさん2008/06/17(火) 22:34:08ID:???
>.650
array_walk_recursive

試しもせず、具体的なロジックまで求めだしたら、教えて君。
0653nobodyさん2008/06/17(火) 22:59:51ID:cLskKZdP
>>647
座標(15,15)から8歩でいける場所を全て抽出しようと思ってます
再帰とはどのようなものなのですか?
0654nobodyさん2008/06/17(火) 23:09:37ID:???
バカは一生バカのままでいろ。

>>650
for( $i=0; $i < count($arr); $i++) {
 foreach($arr[$i] as $key => $value) {
  ${hoge.$i}[$key] = $value;
 }
}

>>653
関数の中でその関数を呼び出す
0655nobodyさん2008/06/17(火) 23:54:31ID:7t0PU3Q3
サーバー FreeBSD PHP仕様

昔CGI-PLANTさんで配布していた
設定したファイルが更新していた場合に別ファイルで更新マークを付けられる、GETSTAMPを愛用いていました。
この度久しぶりにサイトを作る事にして、
古いデータからそのパッケージを発掘しまして、再利用する事にしました。
ところが、説明書などがなく、配布元さんでは公開停止。
ググって出てきた情報とうろ覚えの記憶で
JavaScript版の設定と記述をしたのですが、
CGI自体は動作しているのですが、HTMLでの表示が出来ません。
エラーなどではなくただスルーされてる感じなのですが、
いかんせんきちんとした説明書がないため何が足りないのかわかりません。

CGIを起動して、IDなどは一通り設定しました。
表示させたいファイルで、CGIを指定する記述と、
マークを出したい部分へはDocument〜の記述もしました。

申し訳ないのですが、どなたかこのCGIの説明書などをお持ちの方、
JavaScript版の設定方法を教えて頂けませんでしょうか。
0656nobodyさん2008/06/17(火) 23:55:17ID:???
>>653
ソレを出したいってことなら、一回発想変えてみたら?
方眼紙とか用意して点打ってみると、もっと効率のいい方法が見えてくる気がする。

function x_y($x, $y, $walk=8){
$map = array();
for($i=0;$i<=$walk;$i++){
$move_x = $i;
$move_y = $walk-$i;
for($j=0;$j<=$move_y;$j++){

$map[] = "[".($x+$move_x)."/".($y+$j)."]";
$map[] = "[".($x-$move_x)."/".($y+$j)."]";
$map[] = "[".($x+$move_x)."/".($y-$j)."]";
$map[] = "[".($x-$move_x)."/".($y-$j)."]";
}
}
return $map;
}

$map = x_y(15, 15, 8);

echo "<pre>";
print_r(array_unique($map));
echo "</pre>";

たとえばこんな。
0657nobodyさん2008/06/17(火) 23:57:59ID:???
>>655
まず、そのソースコードが、PHPか確認して下さい。
次に、スレタイをもう一度確認してください。
06586552008/06/18(水) 00:04:28ID:29hzMdPj
>>657
すみません、PHP専用のスレだと気がつきませんでした。
大変失礼しました。
0659nobodyさん2008/06/18(水) 00:33:45ID:???
PHP自信のアドレスを確認するにはどのようにすればいいのでしょうか?
0660nobodyさん2008/06/18(水) 00:38:31ID:???
PHP_SELF

もういやd
0661nobodyさん2008/06/18(水) 00:39:04ID:???
>>659
$_SERVER調べれ
0662nobodyさん2008/06/18(水) 00:45:48ID:???
http://localhost/hoge/hoge.php?action=entry
みたいなアドレスでPHP_SELFでやりましたら、
/hoge/hoge.php
のような感じで出てきたのですが、
http://localhost/hoge/hoge.php
という感じに出せないのでしょうか?
0663nobodyさん2008/06/18(水) 00:47:15ID:???
>>662
>>661
0664nobodyさん2008/06/18(水) 01:27:41ID:???
おまえら本当にマニュアル読もうとすらしないのな?
検索やキーワードで簡単に調べられるのに、それすらしないのな?
PHPのマニュアルは、スクリプト言語史上、最も親切な部類に属するのに。

だから、いつまで経ってもバカなんだよ。
まともな知識のある奴とバカの温度差が激しすぎる。
0665PHP℃素人2008/06/18(水) 01:32:36ID:FEsYSSp5
>>642 中間報告です
はじめにsudo設定でユーザhogeにノーパスワードおよびシステム終了権限を与える。

<?php echo shell_exec('sudo shutdown -t 5'); ?>
は白ページが出てなにも実行されない

そこでwhoコマンドであなたは?とたずねる
<?php echo shell_exec('who'); ?>
hogeですよと表示される hoge pts/0 Jun 17 20:22 (192.168.1.10)

でもsudoの実行ログを確認すると
Jun 17 22:01:45 linux sudo: (pam_unix) authentication failure; logname= uid=0 euid=0 tty= ruser= rhost= user=www-dataとなっていた
Apacheはwww-dataユーザの権限で動作しているのが原因か?
0666nobodyさん2008/06/18(水) 01:44:19ID:???
$ php hoge.php
$ php -f hoge.php

こいつらってなんか違うの?
0667nobodyさん2008/06/18(水) 01:50:39ID:???
ajaxについて教えてください。

以下のサイトにあるサンプルをサーバにあげて実行したのですが、
エラーになって正常に動きません。
エラーメッセージは xmlDoc has no properties です。
ttp://www.geekpage.jp/web/google-maps-api/gxmlhttp-3.php

このサンプルでは、phpからXML出力したものを読み込んでいますが、
ためしに、読み込み先をxmlファイルにして、サーバにxmlファイルを置くと
問題なく処理されます。

他のサイトで見つけたものを試しても、PHPからのXMLではうまくいかず、
読み込み先をxmlにした場合にうまくいきます。

関係あるかわかりませんが、サーバはXREAを使っています。

よろしくお願いします。
0668nobodyさん2008/06/18(水) 01:53:31ID:???
>>687
よくわかりませんがajaxはJavaScriptですよね
よくわかりませんがheaderでこのファイルはxmlですよって教えてあげてください
よくわかりませんがxrea無料なら自動広告が原因の可能性もなきにしもあらず
よくらからないのはめんどうなので適当にレスしたからです
0669nobodyさん2008/06/18(水) 04:43:20ID:zzNhp0Rl
ネットカフェからの接続を一部制限したいんですが、
何かよい方法ないでしょうか?
ネカフェ専用のブラウザがあったりして特別なUA持たせてるとか、
届け出るときにIP帯も届け出て公開しなければならなくてどこかに一覧があるとか、
ネカフェは絶対特定のProxy経由で接続しないといけないとかとか・・・
犯罪予告の防止にも国として何か対策を講じてくれるのが一番なのですが、
現状ないので何かネカフェからの接続がわかるような方法がありませんか?
0670nobodyさん2008/06/18(水) 05:06:32ID:z89NqzwY
区切り文字ごとにハッシュ配列に分解してくれる関数ってないですか?
$text = "a=1@b=2@c=3@=@@";
$hash = parseText($text,"@","=");
echo $hash["a"] // 1
echo $hash["b"] // 2
echo $hash["c"] // 3
こんな感じにしたいのですが。
0671nobodyさん2008/06/18(水) 05:12:48ID:???
explode
0672nobodyさん2008/06/18(水) 05:27:50ID:z89NqzwY
explode組み合わせて作りってことですか?
0673nobodyさん2008/06/18(水) 06:20:16ID:z89NqzwY
なんかぐぐってもそれらしいのは出てくるんだけど、汎用的なのがない;;
0674nobodyさん2008/06/18(水) 07:11:58ID:???
>>673

おいおい。答え書いてくれてるじゃん・・・。
別に正規表現でもいいけど。
マニュアル読め。
0675nobodyさん2008/06/18(水) 07:26:09ID:???
要するにレディメイドな関数が欲しいんだろ。
ここ数スレ回答し続けてるけど、怠け者の次元が桁外れ過ぎる。
はっきり言って、無能だらけ。
0676nobodyさん2008/06/18(水) 07:43:37ID:???
function str2hash( $input, $delimiter1, $delimiter2 = '=' ) {
 $temp = explode( $delimiter1, $input );
 for( $i = 0; $i < count( $temp ); $i++ ) {
  if( preg_match( "/^(.+?){$delimiter2}(.+?)$/", $temp[$i], $matches ) ) {
   $hash[$matches[1]] = $matches[2];
  } 
 }
 return $hash;
}

ほれ、レディメイドな関数だよ。
parseTextなんて名前じゃ意味分からんから変えたよ。

俺は、PHPはじめてまだ1週間くらいなので、
言語への慣れを身につけたいから、
クソみたいな質問にも極力まじめに回答し続けてるんだけど、
質問者はこの先、未来ないぜ?
ちょっとはマジメに覚える気になれよ。
0677nobodyさん2008/06/18(水) 07:47:45ID:???
ちなみに、foreachじゃなく、forを使ったのは、
array_spliceで配列中のゴミを削除しようと思ったからだけど、
途中方向転換したから。
適当にforeachで書き換えた方が可読性は高まる。
0678nobodyさん2008/06/18(水) 08:07:58ID:???
function str2hash($str, $sep1, $sep2) {
    $data = explode($sep1, $str);
    foreach($data as $tmp) {
        if (trim($tmp) == "") {
            next($data);
        } else if (preg_match("/^(.+?){$sep2}(.+?)$/", trim($tmp), $matches)) {
         $hash[$matches[1]] = $matches[2];
      }
    }
    return $hash;
}
06796672008/06/18(水) 08:45:28ID:???
>>668
PHPからの出力に問題があるのかと思って、こちらに書かせてもらいました。
それで、ためしに広告が出ないサーバ(お金払ったところ)で試したら、
うまくいきました!!
ありがとうございました。
0680nobodyさん2008/06/18(水) 10:31:02ID:???
ホスト名を逆引き検索する以下の関数があると思うのですが、
逆引き検索に時間が掛かると処理がここで長い時には30秒も止ることがあります。
gethostbyaddr($ip)
マニュアルを見ましたが、タイムアウトを設定できるようなことが書いていなかったのですが、
時間が掛かる場合には強制的にタイムアウトさせる方法などありますか?
逆引きできれば別の方法でもいいのですが。
0681nobodyさん2008/06/18(水) 10:54:43ID:???
無理矢理バージョンだと、
set_time_limitをgethostbyaddrの前後に追加する。
前のset_time_limitは指定タイムアウト時間。
後のset_time_limitは元に戻す。

ソケット使って自作した方がいいと思うよ。
あんまり安定した関数じゃない。
0682nobodyさん2008/06/18(水) 11:02:55ID:???
class SubClassA {
...
public function method( SubClassB ) {}
}

サブクラスのメソッドの引数にクラス名を入れているサンプルをよく見るんだが、
これはどういう処理をしているの?

マニュアルのどこに載ってるかだけでもいいから教えて欲しい。
さんざん探したけど、分からなかった。
06836822008/06/18(水) 11:14:25ID:???
追記です。

class SubClassA {
...
public function method( SubClassB $hoge ) {}
}

と、引数部分にクラス名 変数となっている場合がほとんどです。
この二者の関係性がどうしても調べられずに困っています。
0684nobodyさん2008/06/18(水) 11:28:30ID:???
http://jp.php.net/manual/ja/language.oop5.typehinting.php
0685nobodyさん2008/06/18(水) 11:31:43ID:???
>>684
ありがとうございます!
クラス(オブジェクト)における型指定をしているだけなんですね。
もっと複雑な処理をしているものと思って、理解できるのか戦々恐々としてました。
勉強になりました。
0686nobodyさん2008/06/18(水) 12:39:32ID:???
くだすれPHP(超初心者用)4
http://pc11.2ch.net/test/read.cgi/php/1213356756/
くだすれPHP(超初心者用)4
http://pc11.2ch.net/test/read.cgi/php/1213356756/
くだすれPHP(超初心者用)4
http://pc11.2ch.net/test/read.cgi/php/1213356756/
くだすれPHP(超初心者用)4
http://pc11.2ch.net/test/read.cgi/php/1213356756/
くだすれPHP(超初心者用)4
http://pc11.2ch.net/test/read.cgi/php/1213356756/

とりあえず張っとく
0687nobodyさん2008/06/18(水) 14:24:51ID:AqO1gOD5
YYYYMMDDhhmmの形で十分刻みで値を変えてたいです。

ex)
2008年06月18日14時18分だったら
200806181400

2008年6月18日14時25分だったら
200806181410
といった感じです。

そこで簡単に組んだのですが最初は毎時0分から20分ぐらいまでは使えませんでした。
(原因は分を10で割って丸めた値から単純に-1して10倍したため-10という値を吐いた)
この点を修正した後にどんどん問題はスケールが大きくなって行くことに気づきました。
結局日にちをまたぐとき(毎日0時0分から20分まで)も同様の問題が起こることになり、
月替わりのときですと、さらに面倒なことになると思うのですが、単純に解決することは出来ないでしょうか。


宜しくお願いします。
0688nobodyさん2008/06/18(水) 14:34:01ID:???
>>687
お前が「簡単に組んだ」内容を示してみろ。

あと、例示の内容だが、
ってなんか不思議なんだが。
俺なら
18→10
25→20
ってする。
0689nobodyさん2008/06/18(水) 14:39:44ID:???
その手の処理をするときは、一度UNIXタイムタンプ(time_t)に変換してから処理して終ったら戻せ
0690nobodyさん2008/06/18(水) 14:49:02ID:???
>>687
688に賛成だけど

$y 年,$m 月,$d 日,$h 時, $i 分
date("YmdHi", mktime($h, (intval($i / 10) - 1) * 10, 0, $m, $d, $y))
0691nobodyさん2008/06/18(水) 14:59:20ID:???
date('YmdHi',floor(time() / 600) * 600)
こんなんとか?
0692nobodyさん2008/06/18(水) 15:09:13ID:???
じゃあ俺ならこうしてみようかな
preg_replace('/^(\d{11})./', '${1}0' ,date('YmdHi'));
0693nobodyさん2008/06/18(水) 15:11:44ID:AqO1gOD5
>688
http://firestorage.jp/download/4aa4312921c6d26b8669b1a7ede8229b677cc851

こんな感じです。
例示についてはどうしてもそこの数字の一つ減らしたかったためです。
分かりづらかったらすみません。

>689,690
いまmktimeについて読んでいます。

ちなみに鯖はxreaです。
0694nobodyさん2008/06/18(水) 16:25:20ID:???
>>680
http://jp2.php.net/gethostbyaddr
タイムアウト付きのコードがある
0695nobodyさん2008/06/18(水) 18:35:37ID:mVAzEHez
よくPHPで
『この画面で30秒以上経過したためタイムアウトしました。』
というのを見つけるのですが、
セッションを使ったやり方と使わないやり方が知りたいのですが実際に可能でしょうか?
教えてください
0696nobodyさん2008/06/18(水) 18:39:15ID:???
>>695
例えばどのページ?
0697nobodyさん2008/06/18(水) 18:42:25ID:mVAzEHez
>>696
ヤフー知恵袋です。
携帯(モバイル)でアクセスするさいの質問時によくタイムアウトしてしまいます。
0698nobodyさん2008/06/18(水) 18:53:35ID:EJ2w77Il
$num=10;
for($i=0;$i<$num;$i++){
$hoge.="<tr><td>$i</td></tr>";
}

上記に4行毎

<tr><th>No</th></tr>

を入れたいのですが
どこをどう繰り返せばいいのか教えてください。
お願いします。
0699nobodyさん2008/06/18(水) 19:32:07ID:???
>>698
if文
0700nobodyさん2008/06/18(水) 19:38:51ID:mVAzEHez
誰か教えてください(◎-◎;)
0701nobodyさん2008/06/18(水) 19:43:56ID:???
>>698
思ったとおりの動作になるかはわからんが

$num = 10;
for ($i = 0; $i < $num; $i++) {
$hoge .= "<tr><td>{$i}</td></tr>\n";
if ($i % 3 == 0 && $i != 0) {
$hoge .= "<tr><th>No</th></tr>\n";
}
}
0702nobodyさん2008/06/18(水) 19:44:19ID:KjbYRyD7
>>700
4で割って余りが無い時とかは?
0703nobodyさん2008/06/18(水) 19:45:07ID:KjbYRyD7
>>700
$iを4で割って余りを見れば
0704nobodyさん2008/06/18(水) 19:47:39ID:NgS9+r3y
質問です。フォームメールのプログラムを練習で作ってみたのですが、うまくいきません。
以下コード
<?php
$to = $_POST[to];
$from = $_POST[from];
$body = $_POST[body];
$sub = $_POST[sub];
$frname = $from;
$fradrs = $from;
$toname = $to;
$toadrs = $to;
$subject =$sub;
$comment = $body;
mb_language("ja");
mb_internal_encoding("sjis");
$frname0 = mb_encode_mimeheader($frname);
$toname0 = mb_encode_mimeheader($toname);
$sdmail0 = "$toname0 <$toadrs>";
$mlhed = "From:\"$frname0\" <$fradrs>";
$rslt = mb_send_mail($sdmail0,$subject,$comment,$mlhed);
print "送信完了";
?>

実行すると、以下の文章が出力されます
"; $mlhed = "From:\"$frname0\" <$fradrs>"; $rslt = mb_send_mail($sdmail0,$subject,$comment,$mlhed); print "送信完了"; ?>
どなたかわかる人いましたらレスおねがいします。
0705nobodyさん2008/06/18(水) 19:47:53ID:???
>>700
どこでつまずいてるのさ?
それとも1から書いてくれって丸投げ?
0706nobodyさん2008/06/18(水) 19:48:18ID:???
>>700
これか?
http://www.tagindex.com/html_tag/page/meta_05.html
0707nobodyさん2008/06/18(水) 19:49:38ID:???
>>704
PHPが動作していない
0708nobodyさん2008/06/18(水) 19:52:19ID:???
>>694
助かりました。まさにそれです。
正常に処理できました。

このソースeclipseに張ると赤い印でソースコードのエラーが出るんですよね。
たぶん、eclipseの解析が悪いだけだと思うのですが、少し気持ち悪いです。
でも、正常に動いているので、問題はないです。
0709nobodyさん2008/06/18(水) 20:49:34ID:???
eclipseなんて使うな
07107042008/06/18(水) 20:58:22ID:NgS9+r3y
>>707

レスありがとうございます。再度動作できる環境を整えてやりましたところ、
エラーが出てしまいました。
Parse error: syntax error, unexpected $end in /home/www/free/XXX/XXXXX/mail.php on line 42
XXXXXはサーバーのURLです。

そしてコードの42行目は、

?>
です・・・。これは鯖が悪いのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています