【PHP】質問スレッドpart31【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/11/27(日) 00:07:12ID:eBvjdczp【基本ルール】
・新規質問の方は上げてください。age進行でお願いします。
・質問者は2回目以降、最初のレス番号を名前欄に入れてください。
・回答者は質問者に対して>>(アンカー)をつけてください。
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry
・解決しなくてもこたえてもらったら礼を。
【質問テンプレ】
・マニュアルを調べたか、google検索したか(調べたキーワード)
・タイトル(禁:教えてください!etc) 例:requireとinclude
・内容 例:requireとincludeはどう違うのですか?
・質問する際には環境も明記。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
【PHP マニュアル】
http://www.php.net/manual/ja/
※マニュアル上部の「search for」から検索を活用すべし(便利)。
過去スレ、関連リンク、FAQ等>>2-10辺り
0231nobodyさん
2005/12/06(火) 15:22:41ID:???15ページほどのサイトで全てのページに
同じディレクトリをフラグとしてロックをかけたら、
アクセスが増えるとすぐに破綻しますか?
どのページでも同じファイルにアクセスしているので
こういう事をしなければならなくなってしまったのですが。
0232nobodyさん
2005/12/06(火) 16:22:55ID:???>1-5
>1-5
>1-5
>1-5
>1-5
>1-5
0234nobodyさん
2005/12/06(火) 16:58:36ID:???そうそう破綻しない。
いまのマシンはスペックが昔と段違いなので大丈夫。
心配しすぎです。
0236nobodyさん
2005/12/06(火) 17:02:41ID:???0237nobodyさん
2005/12/06(火) 17:20:18ID:???0238nobodyさん
2005/12/06(火) 18:28:29ID:???$numには数字が入ってるとして
$function = "f_$num";
$function($arg);
を1行で実行する事ってできませんか?
$functionの引数はいくつとるかわからないと仮定してます。
0239nobodyさん
2005/12/06(火) 18:29:11ID:???"f_$num"($arg);
はいけそうな気もしましたがパーサーエラーになりました。
0240nobodyさん
2005/12/06(火) 18:39:46ID:???0241nobodyさん
2005/12/06(火) 18:40:38ID:???0244nobodyさん
2005/12/06(火) 19:32:33ID:???0245nobodyさん
2005/12/07(水) 00:55:03ID:???returnとexit()以外に何かありますか?
0246nobodyさん
2005/12/07(水) 01:05:31ID:???質問の意図がよく分かんないけど、
想定していない場所で終了しちゃってその場所を特定したいしたいってことなら、
エラー処理や関数の返り値をチェックをきちんとしたり、デバッガーを通すとかしたほうがよいかと。
0247nobodyさん
2005/12/07(水) 01:13:43ID:???0248nobodyさん
2005/12/07(水) 01:14:27ID:sd3DaoFD0249nobodyさん
2005/12/07(水) 01:35:55ID:???どうすればいいんでしょうか。
0250nobodyさん
2005/12/07(水) 01:37:33ID:???xml宣言なら
<? echo "<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>" ?>
とか
0251nobodyさん
2005/12/07(水) 01:44:25ID:???0252nobodyさん
2005/12/07(水) 02:32:31ID:pljJCe1f実体参照
0254nobodyさん
2005/12/07(水) 03:08:57ID:???if ($_SESSION['name'] == '') {
$_SESSION['name'] = 'hoge';
} else {
echo $_SESSION['name'];
}
のようなコードを書いて実行したところ、
PCからは上手くセッションが実行できましたが、
携帯からは実行できませんでした。
何がいけないんでしょうか。
0255nobodyさん
2005/12/07(水) 03:09:27ID:???0256nobodyさん
2005/12/07(水) 03:13:17ID:???0258nobodyさん
2005/12/07(水) 03:28:12ID:???セッションの説明のどこにありますか?
長すぎるのでヒントだけでも教えてください
0259nobodyさん
2005/12/07(水) 03:46:25ID:???0260254
2005/12/07(水) 05:25:40ID:???クッキーを使う方法とURLを使う方法があると書いてありました。
URLを使う方法はセッションIDをURLに埋め込んで渡すと書いてありました。
たぶん254のコードは、携帯がクッキーを扱えないことが
原因となっていたのだと考えました。
が、違うサーバで上のコードを実行したら
見事意図したとおりに動きました。
もちろんURLに埋め込みなんてしていません。
これはどういうことでしょうか。
0262nobodyさん
2005/12/07(水) 06:05:53ID:???0263262
2005/12/07(水) 06:11:42ID:???こんな時間に起きてるヤツいないべ、と思ってリロードしなかったワタクシめを土ブタと泥ガメと罵りくださいませ・・・
0266nobodyさん
2005/12/07(水) 11:09:11ID:???0268nobodyさん
2005/12/07(水) 11:37:22ID:???ex) hoge.php?page=2
$path = "hoge.txt";
$count = 5; // $_GET['count']
$offset = ($_GET['page'] - 1) * $count;
foreach (array_slice(file($path), $offset, $count) as $line)
echo $line;
0269nobodyさん
2005/12/07(水) 12:32:01ID:???ありがとうございました。
0272nobodyさん
2005/12/07(水) 13:28:18ID:???話はそれからだ
0273nobodyさん
2005/12/07(水) 13:33:12ID:???0274nobodyさん
2005/12/07(水) 13:42:04ID:???携帯用サイトで動画ファイルのダウンロード数を計上したいのですが、
どのタイミングで変数をインクリメントしたらよいのか分かりません。
現状では単に動画ファイルへのリンクを張っていて、ダウンロードはできるのですが
「ユーザがそのリンクを押したかどうか」を捕捉してなんらかの処理をさせるということができていません。
携帯用のサイトなのでjavascriptは使えません。
ファイルがダウンロードされたかどうか知るための方法といったものは用意されていないのでしょうか。
よろしくお願いします。
0275nobodyさん
2005/12/07(水) 13:47:36ID:???簡単な話がPHPでファイルの中身を出力したらいい。
download.php
<?php
// ここらへんでカウント
header("Content-type: 〜");
readfile($_GET["filename"]; // すげーテキトーだけどまあ雰囲気だけ
?>
で動画へのリンクはdownload.php?filename=hoge.mpgみたいな感じ。
0276nobodyさん
2005/12/07(水) 14:31:04ID:???auだと分割ダウンロードしようとするから、
rangeとかの処理を書いてやるか、
PEAR Downloadを使わないとだめよ。
0277nobodyさん
2005/12/07(水) 16:06:56ID:Umsh9cPc海外だと、ユーザ認証させてから閲覧・投稿等の権限レベル毎にページを生成するフォーラムサイトとか多いですよね。
ユーザにアカウントを申請させ〜仮発行メール送信〜そのメールに記載したURLをクリックして本登録〜認証〜投稿、
みたいにしてるのってよくあると思うのですが、あれと同程度のセキュリティを備えた物をSendmailが使えないレンタルサーバで実現させるには、どうやったらいいでしょうか。
既に作成されている掲示板に本機能を盛り込みたい為、phpBB等の改造以外の方法を探しています。
・phpのライブラリか何かでSendmail的にデータを送る事ができるものってありまでしょうか?(おそらく扱えるプロトコルが違う為普通はできないと思うのですが。)
・メールのやりとり以外で同程度のセキュリティを持つアカウント発行をする仕組みで、オーソドックスな方法というのはあるのでしょうか。
・仮発行メールの様な物は、何かハッシュ値を計算した物をユーザ側に送付していたと思うのですが、あの仕組みが分かる様なサンプルスクリプトや解説サイトなどありますでしょうか。
定番物をご存じの方、こうすればいいよ的なアイデアをお持ちの方、是非お教え頂ければと思います。よろしくお願いします。
0278nobodyさん
2005/12/07(水) 16:16:36ID:???仮発行メールはメールアドレスの正当性を確認するために行うのでメールアドレス登録しないなら必要ない。
ハッシュはuniqid()でも使えばいいんじゃない。
0279nobodyさん
2005/12/07(水) 16:43:41ID:???一人の人が何個もアカウントを取れない様、メールアカウント(無料メルアカは弾き)で登録させるのが良いのかなと思っていまして、
また、仮メールを送る方法であれば、なりすましを防げる為、できればメールやりとりで自動登録させたいと思います。
0281nobodyさん
2005/12/07(水) 17:28:25ID:OA204ccisendmail_from
で指定した値になってしまいますが、これを
自由に変更する方法ってないでしょうか?
0282nobodyさん
2005/12/07(水) 17:33:33ID:???sendmailが何をするもの(ソフト)か
もちっと基本的な事を勉強汁。
自分のやりたいことと方法は明確なようだから
こつこつとやれば大丈夫。
1.メールを送るだけならSMTPが話せりゃいいので
SMTPがどういうものかは理解したうえで、
pearのとかphpmailerとか好きなライブラリを使えば?
勉強用に作っても良いけど。
2.ない。
3.特に難しいものではない。
ユニーク性があって、他人に容易に類推できるものでなければ良い値なだけ。
連番や時間、発行先メールアドレス等はユニーク性はあるが、
容易に類推可能なので、それらを元に組み合わせたもののハッシュを取ってる。
0283nobodyさん
2005/12/07(水) 17:36:05ID:???釣りか?自由にsendmail_fromを変更すればいい。
ini_set('sendmail_from', 'hoge@example.com');
mb_send_mail(...
0284nobodyさん
2005/12/07(水) 17:36:15ID:???あったらその方法を教えてください。
0286nobodyさん
2005/12/07(水) 17:41:54ID:???入れておいて、新しく画像がアップロードされたらfread()で読んでDB内を検索、とか?
ファイルで持っておくと既存の画像のバイナリ全部読んでくのが大変そうな気がするんだけど、
どういう方法が一番効率的なんだろな?
0287nobodyさん
2005/12/07(水) 17:50:37ID:???その次には、それの実用性を上げるために
バイナリ→ハッシュ生成&保存→ハッシュ比較
とワンクッションいれるかね。
0288nobodyさん
2005/12/07(水) 17:52:28ID:???ハッシュが面倒だったらファイルサイズでもそこそこ弾けると思われ。
0289277
2005/12/07(水) 17:53:49ID:???3.は良いサンプルあると良いんですけどね。自分でやるとなると結構たいへんです。
ハッシュ値は可逆性ないものじゃないと危ないですよね。という事は、演算したハッシュ値は2〜3日限定で覚えておけばいいのかな。がんばってみるか…。
0292281
2005/12/07(水) 17:58:57ID:???sendmail_from
に
hoge@hige.hage
とか設定してみても
@の前の部分しかfromに記載されません。
後ろの部分は出ないものなんでしょうか?
0296nobodyさん
2005/12/07(水) 19:29:33ID:???日本語のファイルを添付して送信しても
化けないイケてる奴はどれ?
0297nobodyさん
2005/12/07(水) 20:59:35ID:???そのままコピペしてアップロードしても
ソース表示など出来ません。
過去ログには
[511 のレス1] Name:いきのむし Date:2005/01/08(Sat) 16:47
もしHTTP GET2号のソースをコピーしてそのまま使ってらっしゃるなら、ほぼ100%動かないでしょう。そういうプログラムになってますので。
29行目 if(!$site || !strstr($HTTP_HOST,"php.s3.to") || !ereg("^http://";,$site)){
と、ありました。しかしよくわかりません。
どうすればソースなど表示出来るでしょうか?
宜しくお願いします。
0298nobodyさん
2005/12/07(水) 21:05:41ID:???スレ違い
【 スクリプト改造依頼スレ 】(丸投げ) part4
http://pc8.2ch.net/test/read.cgi/php/1127916965/
0300nobodyさん
2005/12/07(水) 21:23:05ID:???自分で設定したいのですが、どうすればいいのでしょうか。
0301nobodyさん
2005/12/07(水) 21:30:18ID:???0302nobodyさん
2005/12/07(水) 21:31:42ID:???0303297
2005/12/07(水) 21:42:42ID:???0304nobodyさん
2005/12/07(水) 22:17:29ID:???0305nobodyさん
2005/12/07(水) 22:32:52ID:???糞のやることだ。
0307nobodyさん
2005/12/07(水) 23:33:28ID:jWNRrWnpclass Human {
var $name;
function getName() {
echo $this->name;
}
}
$human = new Human;
$human->$name = "名無しさん";
// これはだめ
echo $human->$name;
//これはOK
echo $human->getName();
みたいな感じでメソッドを通してのみやり取り可能なのかな?直接代入はできて参照はできないってなんか変な感じなのですが直接参照する方法とかあるんでしょうか?
0308nobodyさん
2005/12/07(水) 23:45:14ID:???0309nobodyさん
2005/12/07(水) 23:45:29ID:???var $name;
^^^^^ここを publicにすれば
echo $human->name;
このようにアクセスできますよ!
0310nobodyさん
2005/12/07(水) 23:46:03ID:???0312nobodyさん
2005/12/07(水) 23:56:30ID:???$name = "name";
echo $uma->$name;
0313nobodyさん
2005/12/07(水) 23:58:21ID:???0314307
2005/12/08(木) 00:08:25ID:???0316nobodyさん
2005/12/08(木) 02:21:19ID:???0317nobodyさん
2005/12/08(木) 02:52:53ID:???という配列の中に
ある要素が含まれているか判定したいのですが
foreachなどを使わずにスマートに行う方法はないでしょうか。
'bbb' => true
'gaxtu' => false
みたいな感じになればいいです。
0318nobodyさん
2005/12/08(木) 02:53:34ID:???0319nobodyさん
2005/12/08(木) 03:04:03ID:???実は私もその問題で以前悩んだことがあります。
googleで検索してもMLに投げてもぜんぜんわかりませんでした。
そこで友人のハカーに相談したところ殆どの方がご存じ無いような
のですがphpの裏マニュアルが存在するということがわかりました。
特別にお教えしますが、絶対に人には教えないで下さいね。
http://jp.php.net/manual/ja/function.in-array.php
0320nobodyさん
2005/12/08(木) 03:12:55ID:???絶対に誰にも教えません
0321nobodyさん
2005/12/08(木) 05:45:08ID:???この描き方でT_VARIABLEエラーが出るのですがどう直したらいいですか?
やってるうちにわけわからなくなりました。。
0322nobodyさん
2005/12/08(木) 06:35:24ID:???まずはPHPEclipseでも何でもいいから
色分けしてコード強調表示してくれるエディタを使うようにしてみな。
そうすればお前にも分かる。
0325nobodyさん
2005/12/08(木) 10:30:12ID:???array_serch,in_arrayかな
質問なのですがa.txtに
a,k,h,u,g
b,k,x,p,t
j,w,t,a,j
・
・
・
とある場合一行ずつ読み込んでtest[]として配列にするとしますよね。
その後list()とexpload()で、,で分割して変数にしようと思うんですがlistの中って配列でもokですか?
test2[0] => a
test2[1] => k
・
・
・
と出来るかという事です。
後、もし出来るならa.txtをもとに表を作りたいのですが
$filename = "a.txt";
$test2 = array();
$test = file($filename);
for($i=0;$i<$count($fp);$i++){
list($test2)=expload(",",$test[$i]);
foreach($test2 as $value);
echo $value;
}
こんな感じで出来るのでしょうか?でもこの場合二行目のxを表示させたい場合って、
どうやって配列を指定するんでしょう?
$test[1,test[2]]とかorz(適当でごめんなさい)
03262
2005/12/08(木) 10:33:02ID:???この$id,$pwは認証した画面では変数として使えるようですが、他のページで使うには$_SESSIONを使うといけますか?
session_start();
$_SESSION['id'] = $id;
$_SESSION['pw'] = $_SESSION['pw'] = $pw;
で、$id="aiueo" $pw="aaa"で認証した場合は、SESSION指定後、他のページでは
$_SESSION['id'] = "aiueo"
$_SESSION['pw'] = "aaa"
$id="kaki" $pw="bbb"で認証した場合は、SESSION指定後、他のページでは
$_SESSION['id'] = "kaki"
$_SESSION['pw'] = "bbb"
となるのでしょうか?
質問ばかりで申し訳ないですが、授業中気になってしまいまして、どうぞご教授お願い致します。
0328nobodyさん
2005/12/08(木) 10:41:10ID:???0329nobodyさん
2005/12/08(木) 10:49:59ID:???>>4の7
>>326
$_SESSIONには$idだけ入れとけば認証済みかどうか確認できるんじゃない。
>>327
知らない。自分で作るっていう選択肢はなしなの?
■ このスレッドは過去ログ倉庫に格納されています