【PHP】下らねぇ質問はここに書き込みやがれpart20
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/04/28(金) 04:12:33ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
本スレ【PHP】質問スレッドpart34【php】
http://pc8.2ch.net/test/read.cgi/php/1142903954/
【PHP】下らねぇ質問はここに書き込みやがれ Part19
http://pc8.2ch.net/test/read.cgi/php/1144513878/
過去スレは>>2-3あたり
0709nobodyさん
2006/05/19(金) 00:12:04ID:???しらべる方法はあるのでしょうか。
0710nobodyさん
2006/05/19(金) 00:45:32ID:???ない。
まあMLやメルマガの配送とかやってるなら、
User unknownのエラーメールが返ってきたら
配布リストの休止にマークとかいう処理で良いんじゃない。
配信に影響すんのはそういったエラーリターンとかだから、
相手のメールサーバはUser unknownのエラー返さなくて捨てても
その場合は自分には関係ないと思われ。
0711nobodyさん
2006/05/19(金) 00:47:29ID:???0714nobodyさん
2006/05/19(金) 01:30:06ID:???0715nobodyさん
2006/05/19(金) 01:36:22ID:???幸いなことに、ロケットのガイドソフトをJPLで開発しているような少数の例外を除けば、私たちの職業
ではミスは滅多に致命傷にはならない。だから、学ぶべきだし、学ぶことができるんだ。そして笑い、前
するんだ。
2:あなたの書いたコードはあなたの分身ではない。レビューのポイントは、問題を発見すること、そして問題は
見つけられるのだだということを覚えておくといい。誰かが指摘してくれるときのために、コードを公開しな
いのは良くない。
3:あなたがどれだけ「空手」について知っていようとも、ほかのだれかがもっと知っているのだ。あなたが教え
を乞えばだれかが教えてくれる。第三者からの情報を探して受け入れるんだ。特に、もう教えてもらうことな
んてないと思っていることに対して。
4:会議の一つもしないで、コードを書き直しちゃいけない。「コードを修正すること」「コードを書き直すこと」
この二つには明確な境界がある。違いを知り、一匹狼としてではなく、コードのレビューという形を通してスタ
イリッシュな変更を目指そう。
5:あなたよりも知識が劣っていると思う人たちに対して、尊敬、尊重、寛容の気持ちを持つことだ。例外なく、技
術系でない人間は、次の通説を支持している。できる技術者とできない技術者の違いはプリマドンナと泣き喚く
赤ん坊ほどの差があると。こんな怒りと絶望に満ちた決まり文句は、広めてはいけない。
0716nobodyさん
2006/05/19(金) 01:36:53ID:???プラットフォーム、ツールの変化は、拒否すべき不便なことではなく、新しいチャレンジだと受け取ろう。
7:真の尊厳は地位ではなく、知識にある。知識は権威を起こし、権威は尊敬を起こしてくれる。エゴレスな環境に
おいて、尊敬が欲しいなら、知を探求することだ。
8:あなたは自分の信じていることを突き崩し、そして敗北を受け入れなければならない。あなたのアイデアはしば
しば踏みにじられるものだということを理解しよう。あなたの意見が正しかったことがのちにわかったとしても、
「だから言ったのに」なんてうらみごとは言っちゃいけない。そして葬られたアイデアは、殉教者や、左翼の集会
のように扱ってはいけない。
9:「引きこもり」になっちゃいけない。真夜中のオフィスで、コーラを買うためだけに部屋をでる、そんなプログ
ラマになっちゃいけない。そんなことをしていると、コミュニケーションもなく、かえりみられることもなく、
コントロールも効かなくなってしまう。オープンで、協調的な環境を築くことはできない。
10:人ではなくコードを批判しよう。プログラマには優しく接して、コードには厳しく接しよう。できるかぎり、
あなたの発言はポジティブでコードを改善するものでなくてはならない。コーディング標準や、プログラムの構
造、パフォーマンスの改善に向けられた発言をすべきなんだ。
0717nobodyさん
2006/05/19(金) 01:52:55ID:???これにはクッキーは必要ないのでしょうか?
私が試しに作ったログイン処理コードは、よく見たらsetcookieなどを使っていません。
つまりクッキーを使用せず、セッション関数のみです。
(※ログインフォームで入力されたIDとパスがDBに保存しているものと一致したら、$_SESSION['login'] = "true"とフラグを立てる。
そのフラグがtrueでなければログインしていない状態と判断する。)
上記のようにクッキーを使っていませんが、期待した通りの動作(ログイン処理)をしているように見えます。
しかし以前に何かで読んだのですが、「ログイン処理ではセッションIDをクッキーに保存して云々」とか
書かれていたような気もします。
セッションを使ったログインには、クッキーは必須なのでしょうか、必須ではないのでしょうか。
そもそもクッキーが何のためにあるのか、よく分からなくなってきました。
0718nobodyさん
2006/05/19(金) 02:06:29ID:???PHPではセッションIDの保存は自動でしてくれる
大抵Cookieに保存してるがCookieが使えない場合URLの末尾に自動的に付記される
Cookieはデータをクライアント側に保存する技術
セッションはデータをサーバ側に保存する技術
0719717
2006/05/19(金) 02:34:29ID:???セッションIDはURLの末尾には付加されてませんが。。。。
php.iniではクッキーのみ使うような設定にしてありますが、
実際にスクリプト内で明示的にSetCookie関数を使わないと
クッキーは使用されませんよね??
0720nobodyさん
2006/05/19(金) 02:59:03ID:???よく嫁
>"Cookieが使えない場合"URLの末尾に自動的に付記される
それとCookieが使える場合はセッションIDはCookieに保存される
SetCookieはコッチがCookieに保存したいときに使う関数だ
マニュアルにもちゃんと書いてあっからまずマニュアル読んで来い
0721nobodyさん
2006/05/19(金) 03:59:15ID:???で紹介されていることをやりたいー
ためしにそのページにあるやつコピペして
phpで保存して鯖にうpしたら
そこで説明されてるとおりにならなかった・・・
知りたいのは・・・・
たとえば「ttp://www.japan.co.jp」があるとして
indexページから001.phpに移動したときに
「ttp://www.japan.co.jp/001.php」と表示されますよね?
これを「ttp://www.japan.co.jp/?aaa=link」 ←このような感じにしていんです
知ってるかた教えてください
0722nobodyさん
2006/05/19(金) 06:02:21ID:???そのページのドコでやってるのか分からんが
ttp://www.japan.co.jp/?aaa=link ってのはレンタルサーバじゃまず不可能
やるとしたらApacheの方でやるしかないが・・・多分そのスクリプト以外動かせないWebサーバになるぞ
ttp://www.japan.co.jp/001.php?aaa=link なら可能
どっちにしろPHPとは関係ない。
CGIの本でも読みなさい。
0723nobodyさん
2006/05/19(金) 07:40:11ID:???こういうことじゃないの?
index.php
<?php
switch ($_GET['aaa']) {
case "link":
include "001.php";
break;
case "hoge":
include "002.php";
break;
default:
header("Location: http://www.2ch.net/");
break;
}
?>
0724nobodyさん
2006/05/19(金) 08:10:56ID:???>それとCookieが使える場合はセッションIDはCookieに保存される
いや、自分もそうだと思っていたんですが、
自作スクリプトにアクセス直後(≒ログイン直後)にIEのクッキー保存フォルダを
開いてみても、該当するクッキーが見当たらないんですよ。
でもたしかにセッションによるログインはうまく行ってる・・・だから混乱してます。
0725nobodyさん
2006/05/19(金) 08:23:27ID:???ファイルが生成されるかどうか確かめて見ればいいんじゃないかな。
おいらは面倒くさがりなのでproxomitronとかのプロキシソフトを使って直接HTTPヘッダを覗いてるけど。
0726nobodyさん
2006/05/19(金) 08:39:57ID:???0729nobodyさん
2006/05/19(金) 11:28:09ID:???例)
index.php?hogehoge
index.php?you=hage
これ自体は普通にindex.phpが返るだけなのであまり気にしてなかったんですが、
少し前にミスったせいで
例)
index.php/hoge.php
index.php/?/hage
index.php/index.php/index.php
のようなリクエストが来るようになってしまいました。
前者の原因は不明なんですが、後者はミスって修正するまでの数十分の間に
クロールされてしまい、index.phpで表示するはずの画像ファイルのリクエストも
全てindex.phpに送られちょっと無視できなくなってきました。
これらのリクエストに対し404を返したいのですが、どのような方法がありますか?
apache1.3.34 php4.4.2 です
htaccessの方がいいでしょうか?
0733nobodyさん
2006/05/19(金) 12:59:46ID:b+EKMyUQ0736nobodyさん
2006/05/19(金) 13:52:56ID:b+EKMyUQありがとうございます。
0737nobodyさん
2006/05/19(金) 14:46:50ID:???$_SERVER['PATH_INFO']あたりで判定できないかな?
phpinfoを呼び出すプログラムを書いて
そのURIにいろいろくっつけて使えそうな引数探してみるといいかも。
404はheaderで飛ばせるはず。
0738nobodyさん
2006/05/19(金) 15:33:15ID:???0739nobodyさん
2006/05/19(金) 15:33:27ID:???if( ログイン判定 ){
内容表示
}
else{
echo 'ログインして下さい';
}
みたいな感じが基本?
if文の中でコンテンツがばーっと続くのがちょっと嫌な感じだったんだけど、どんな風にやるのがいいかな?
0740nobodyさん
2006/05/19(金) 15:47:07ID:???0741738
2006/05/19(金) 15:47:32ID:???・ログインできない人は同じ画面でエラーメッセージ表示
・OKな人は別ページへ飛ばす(飛ばした先でセッション確認)
<?php
if ( ログインできない人 ) { $error="ログインできません"; }
header("Location: ログイン後のページ");
?>
<html>ログインページ内容 <?= $error ?> </html>
0742nobodyさん
2006/05/19(金) 15:50:33ID:???else { header("Location: ログイン後のページ"); }
0743nobodyさん
2006/05/19(金) 16:49:30ID:???とでたんですが、
考えられる設定漏れはなんでしょうか?
0744nobodyさん
2006/05/19(金) 18:26:48ID:???0746nobodyさん
2006/05/19(金) 19:21:00ID:???>>741
ログイン画面ならそのような感じでいいんですが
私が今考えているのは、例えば投稿ページのように、ログインしていないとフォームが表示されないように
したいといったページについてです。
そういう場合はどうしていますか?
0747nobodyさん
2006/05/19(金) 19:30:50ID:???0748nobodyさん
2006/05/19(金) 19:35:07ID:???既に出ている答えで何が不満なのか良く分からんが、
俺の場合は殆どテンプレートファイルを切り替えるだけだから問題ないな。
あとは、ページ表示を関数化したら?
0749nobodyさん
2006/05/19(金) 19:37:08ID:???date関数で日を取得するのはわかるのですが、、、
0751nobodyさん
2006/05/19(金) 19:45:05ID:???$last_day = date("d", mktime(0, 0, 0, date("m") + 1, 0, date("Y")));
0752nobodyさん
2006/05/19(金) 20:05:30ID:???これってどういうときに生じるエラーなのでしょうか。
Warning: pg_query() [function.pg-query]:
Query failed: ERROR:
could not serialize access due to concurrent update in
/phpページのアドレス on line 94
ここでは
Postgresql7.4へupdateのクエリーを送っているのですが、
5人くらいが同時に何度もその問題のページへアクセスしてみると
100回に1回くらいでてきます・・・。
なお、updateするレコードはひとつなので、
取り合いになっていて、その処理がおかしいのかと考えて、
5時間くらいいろいろ試行錯誤してみましたが、
解決していません。
また、このWarning文をブラウザに表示させないようにする方法が
ありましたら教えていただきたいです。
よろしくお願いします。
0753nobodyさん
2006/05/19(金) 20:07:12ID:???0755nobodyさん
2006/05/19(金) 20:24:31ID:???それ、PHPの問題じゃないじゃん。
「could not serialize access due to concurrent update in 」でぐぐったら?
Warningを表示させたくないなら、
設定のdisplay_errorsディレクティブとか、
error_reporting関数を見てみな
0756nobodyさん
2006/05/19(金) 20:52:39ID:???preg_match( "/<title>.+<\/title>/i", $data, $matches);
$title = $matches[0];
0757nobodyさん
2006/05/19(金) 21:09:19ID:???なんかの宿題か?
0759nobodyさん
2006/05/19(金) 21:44:09ID:???preg_match('/<title>[^<>]+<\/title>/i', $data, $matches);
の方がいいんじゃないか
0760nobodyさん
2006/05/19(金) 21:47:00ID:???例えば、「2006年5月19日〜2006年5月25日までバイト」などの指定が出来る場合、
2006年5月19日〜2006年5月25日までの期間を一度に複数登録出来る必要が
あると思います。
1件ずつデータを追加するのはわかるのですが、どうやって複数の期間を
判別するのかがわかりません。配列に入れてcountで計算?とか思ったのですが、
なんか違うみたいだし・・。登録処理はforでその期間分を回すと思うのですが・・。
0762nobodyさん
2006/05/19(金) 22:10:34ID:???0763760
2006/05/19(金) 22:13:09ID:???すみません、、簡略化しました。
$main_time1= date("Ymd"); //現在の日時
$main_time2= "20060525"; //開催期間の最終日時
$main_time=$main_time2-$main_time1;
for($i=1;$i<$main_time;$i++){
$kaisai=$main_time1+$i;
echo"開催期間は"."$kaisai"."です。"."<br>\n";
}
これでとりあえず開催期間は表示されますが、20060520のような形になります。
これを2006-05-20のように表示出来ないでしょうか?
0768nobodyさん
2006/05/19(金) 22:24:09ID:???だからマニュアルを読め
substrでもstrtotimeでも好きなのを使え
あと日付差分のアルゴリスムはめんどいぞ、と忠告しておく
0769nobodyさん
2006/05/19(金) 22:33:13ID:???0771nobodyさん
2006/05/19(金) 22:41:49ID:???> あと日付差分のアルゴリスムはめんどいぞ
unix秒に変換→計算→再フォーマット
ってだけじゃないのか
0772nobodyさん
2006/05/19(金) 22:59:27ID:???1ヶ月を30日で計算するか31にするかとかのこと。
3ヶ月単位の作業があって、○月の3ヶ月後とか出すのがめんどかった。
90日後なら楽なんだが、11/29の3ヶ月後が2/28なのか2/29なのか、それとも3/1にするのかとかね。
作ること自体は簡単なんだがな。
その年の月の日数を計算する関数つくるだけだし。
0773nobodyさん
2006/05/19(金) 23:10:58ID:???0774nobodyさん
2006/05/19(金) 23:14:07ID:???$d++;
$main_time1 = mktime(0,0,0,$m,$d,$y);
echo"開催期間は".date("Y-m-d",$main_time)."です。<br>\n";
な感じ
0775nobodyさん
2006/05/19(金) 23:16:33ID:???最初の年月日を$y,$m,$d分解しておいて
$d++;
$main_time = mktime(0,0,0,$m,$d,$y);
echo"開催期間は".date("Y-m-d",$main_time)."です。<br>\n";
を最後の日($main_time2)までループする感じで
0776nobodyさん
2006/05/20(土) 00:18:10ID:???$a[] = 1;
とかをしてみたら
Fatal error: [] operator not supported for strings in *******
というようにその行がエラーだと言われるのですがこれはPHPのバグでしょうか?
PHPは5.0.4です。
0779nobodyさん
2006/05/20(土) 00:48:15ID:???PATH_INFOで判別できました。
headerがうまく動いてくれないんですが(他のスクリプトでは問題ないのに)
エラーを表示するようにしました。
助かりました。ありがとうございました。
0780nobodyさん
2006/05/20(土) 01:17:33ID:???くだ質じゃなくてPHP質問スレってどうなったの?
0782724
2006/05/20(土) 01:47:02ID:???phpinfoでsession.cookie_lifetimeを調べたところ、値は「3600」でした。
ということで期限の設定もされていると思うのですが、
もしかして調べるべきディレクティブを間違ってるでしょうか??
他には「session.cache_expire」は「60」、「session.use_cookies」は「On」です。
0784nobodyさん
2006/05/20(土) 04:00:40ID:???0785nobodyさん
2006/05/20(土) 04:20:40ID:???ワケ ワカ ラン♪
∧_∧ ∧_∧ ∧_∧
( ・∀・) ( ・∀・) ( ・∀・)
⊂ ⊂ ) ( U つ ⊂__へ つ
< < < ) ) ) (_)|
(_(_) (__)_) 彡(__)
0787784
2006/05/20(土) 05:03:45ID:???をIE5で開いても番組ファイルが残ってないのでクリックし直さなきゃなんないのです
0789724
2006/05/20(土) 05:04:48ID:???いえいえ、もちろんそんなこと思ってませんよ。
もし何か保存されてるとしたらセッションIDだけですよね。
自分では明示的にクッキーに何か保存するコードは書いてませんので。
っていうか、とにかくIEのクッキー保存フォルダに、該当ドメインのクッキーが
見当たらないんですよね。。。 他のサイト(たとえばyahooとか)のクッキーはもちろんそのフォルダにあります。
0790nobodyさん
2006/05/20(土) 06:32:41ID:???スレ違いかもしれないのですが、SQLiteってidentityって使えませんでしょうか。。
SQL文は通るのですが、値が入ってないみたいでして。。
PHPは5.1.4使ってます。
0791nobodyさん
2006/05/20(土) 07:23:44ID:???identity使えるのはSQL ServerとMS Accessだけ
SQLite含めOracleやpostgreSQL, MySQLでは使えない
0793nobodyさん
2006/05/20(土) 12:09:03ID:???なんで?
携帯サイトだから、SJISなんだけど
0794nobodyさん
2006/05/20(土) 12:11:52ID:???今までで、これは使いやすい・または優秀だと思ったWebアプリのUIは何ですか?
ちょっとPHPとは関係ない感じではありますが、(DHTMLよりかも)
デザイナーではなく、マの視点が聞きたいのもありますので。
Virtual Earth
http://local.live.com/
0796nobodyさん
2006/05/20(土) 14:40:18ID:???0798nobodyさん
2006/05/20(土) 15:13:58ID:???<head>
<title>aaa</title>
</head>
<body>
<?php
$hour = date('H');
if (3 <= $hour < 10) {
$greeting = 'おはようございます';
} else if (10 <= $hour < 18) {
$greeting = 'こんにちわ';
} else {
$greeting = 'こんばんわ';
}
echo $greeting."現在の時刻は".date('H時間')."です";
?>
</body>
</html>
Parse error: syntax error, unexpected 〜と出るんですが
何がおかしいですかね
うんこな質問だったらごめんなさい
0799nobodyさん
2006/05/20(土) 15:27:38ID:???とりあえず、この書き方がキモく感じるから、これが間違ってるんでね?
if (3 <= $hour < 10) {
0800nobodyさん
2006/05/20(土) 15:40:19ID:???0801nobodyさん
2006/05/20(土) 16:30:53ID:???ある会社が提供してるサービスを再販するために、システム開発のためのAPI提供してくれてるんですが、
その使用形式ってのが
http://その会社のアドレス/api.php?id=$id&pass=$pass&action=$action
というアドレスへシステム(php等)からアクセスするっていう方式なんです。
ここでかなり不安になったのが、
URLにID/PASSを含んでることです。
まずSSL使用しなければ危険性盛りだくさんな気がしますし、
このシステムはクライアントに対して利用してもらうことになるので
他にもなんかかなり不安です。
(たとえば、php.iniでエラー表示させる設定にしてて
何かエラーが発生したら簡単にID/PASSを漏らしちゃいそうな・・・
これの場合はその設定をoffにすればいいだけですが)
注意点とかあったら教えてください m(_ _)m
お願いします
0804nobodyさん
2006/05/20(土) 17:02:24ID:???ああああ
もしかして最後のline 7とか出てたのがそれだったんですか
>>780
お二人ともありがとうございました
0805nobodyさん
2006/05/20(土) 17:09:46ID:???例:「COUNT=1 COUNT2=2」のCOUNTの値を取り出したい場合は
$var = "COUNT=1 COUNT2=2";
preg_match_all("/COUNT=([0-9])/", $var, $match_list);
$count = $match_list[1][0];
とやってますが、この $match_listの後ろの配列っぷり([1][0])が苦手です。
もっとわかりやすい方法あったら教えてちょ
0806nobodyさん
2006/05/20(土) 17:26:52ID:???全てのページ分の数字を出すと、多すぎて邪魔になってしまいます。
そこで、「1 2 (3 表示中) 4 5」や「25 26 (27 表示中) 28 29」のように、指定した数だけ表示させたいのですが、
方法がいまいちわかりません。どのようにすれば良いでしょうか。
0807nobodyさん
2006/05/20(土) 17:59:24ID:???$var = "COUNT=1 COUNT2=2";
preg_match_all("/COUNT=([0-9])/", $var, $match_list);
これでOKなのかと小一時間?
0808nobodyさん
2006/05/20(土) 18:00:15ID:???表示中の位置(3とか27とか)はわかるんでしょ
ループの開始値は「現在の位置−2」、ループの終了値は「現在位置+2」
■ このスレッドは過去ログ倉庫に格納されています