【PHP】下らねぇ質問はID出して書き込みやがれ 82at PHP
【PHP】下らねぇ質問はID出して書き込みやがれ 82 - 暇つぶし2ch809:796
09/04/02 13:26:45
>>804
途中で$g=0;を入れるのを忘れました。
$i++の後

810:nobodyさん
09/04/02 13:51:13
796さん、あなたを下スレ公認回答者に認定いたします

811:nobodyさん
09/04/02 18:28:53
>>807
actionかlocationでの遷移先をそれに設定すればいいのでは?

812:nobodyさん
09/04/02 19:09:54 vfSwYPOW
>>811
ありがとうございます、できました!!


813:nobodyさん
09/04/02 21:54:38 SbciSXr8
すません
pukiwikiとかの既存ソースを使ってるのですが
PHPがサバの設定でポート指定されていて
既存ソースだと、リンク先がPHPの場合、ポート指定が外されてしまうのです

TOPページが :7070 で実行してたら
遷移先が :7070 が外れてしまうという状態です

解決方法とかご教授願えますか。
質問場所が悪ければ、聴ける場所なども教えていただけると助かります

814:nobodyさん
09/04/02 21:56:16
pukiwikiの設定でサイトURL入れるとこあるんじゃ?

815:nobodyさん
09/04/02 22:33:32 SbciSXr8
なるほど…
ちょっと探してみます。

ただ、pukiwikiに限らず、他のPHPでも
同じ状況になってしまうので根本解決するための方法など
ご存知でしたらお願いします。

816:nobodyさん
09/04/02 22:33:55
絶対リンクをやめる

817:nobodyさん
09/04/02 23:10:28
スクリプトの先頭でob_start()。
コールバック関数を指定して出力内容を全部受け取り、URLを全部置換する。

818:nobodyさん
09/04/02 23:15:28
絶対リンク埋め込みだとしてもhttp://で検索すればすぐ書き換えられそうじゃん

819:nobodyさん
09/04/03 01:14:27 QmVSt/Vd
【OS名】win xp sp3
【PHPのバージョン】php5.29
【連携ソフトウェア】mysql
【質問内容】

$val = NULL;
$query = "insert into test (id, comment) value ($val, 'test')";

上記のSQLをダンプしてみると
NULLを代入した変数$valがNULLとして展開されていません。
もぬけの殻となってしまっています。

※ダンプしたクエリ
insert into test (id, comment) value (, 'test')

なのでクエリーを投げるとエラーとなってしまいます。
NULLをinsertしたい場合は変数にいれず、
直接クエリの文に記述しないといけないのでしょうか?

820:nobodyさん
09/04/03 01:28:48
>819
現代人ならプリペアドステートメントを使え。プレースホルダ使える状況でクエリを直接組み立てる奴は原始人。
PDOStatement::bindValue()の第3引数にPDO::PARAM_NULLを指定すれば、NULLをDBに入力できる。

つうか、何もinsertしなければ、デフォルト値であるNULLが入るけどな。
(カラムにnullが許可されており、他のデフォルト値を指定していない場合に限る)

821:nobodyさん
09/04/03 01:33:38
DB上のnullじゃなくて言語上でnullだから無くて当たり前

822:nobodyさん
09/04/03 01:33:52
単にこうするんじゃないか?
$val = 'NULL';

823:nobodyさん
09/04/03 01:34:01
$val = 'NULL';
でNULLをDBに入力できる

824:819
09/04/03 01:37:29
>>820

>プリペアドステートメント
はじめて聞きました。

>何もinsertしなければ、デフォルト値であるNULLが入る
これは理解していたのですが、インサート項目が非常に多く、
そのほとんどが必須ではないので、クエリを組み立てるのがめんどくさく
値がわたってこようがこなかろうがすべての項目をインサートさせてしまう感じで作ってしまいました。

プリペアドステートメント勉強します。
ありがとうございました。

825:819
09/04/03 01:39:55
>>822
>>823
それだと文字列のNULLが入ってしまいました。
間違えてるかもしれないのでまた確認してみます。
ありがとうございます。

826:nobodyさん
09/04/03 01:44:23
されないだろ
insert into test (id, comment) value (NULL, 'test')

827:nobodyさん
09/04/03 02:04:33 7RHF46qi
申し込みフォームの作成について
form1.phpにて記述されたformの内容をPOSTで
form2.phpという確認画面で受け取るような
プログラムを作ってるんですが、
確認画面にて前に戻るボタンと送信ボタン2つを作りたい場合は
それぞれに同じ内容のhiddenを設定するしか方法はないんですかね?
もしスマートな方法がありましたらアドバイスよろしくお願いします。


828:nobodyさん
09/04/03 02:07:57
セッション使えば?

829:827
09/04/03 02:11:24
>>828
返信ありがとうございます。
やっぱりsessionがいいですよね。
もしPOSTでスマートに出来るならと思い聞いてみました。

830:nobodyさん
09/04/03 02:26:52
hiddenとか過去の産物だろ。更新ボタンとか戻るボタンとかでgdgdになるのが目に見えてる

831:nobodyさん
09/04/03 02:29:07
>>827
試してないけど、javascriptでformのactionを変更できるんじゃないの。
URLリンク(msdn.microsoft.com)

このへんは趣味の問題かもしれんが、セッションに値を保持するのは、
同じセッションで複数タブ開かれた場合に動作がおかしくなりやすいから、
あんまりお勧めはできん。

832:nobodyさん
09/04/03 02:30:00
>>830
戻るでグダグダになるのはセッションじゃないかい?

833:nobodyさん
09/04/03 02:38:12
とりあえずhiddenを批判するやつはどこにでもいる

834:nobodyさん
09/04/03 03:42:37
入力、確認を違うファイルにするとエラー処理がめんどい

835:nobodyさん
09/04/03 04:07:02
php5.3rc1使ってる人に質問です。
php.iniに書いたmb_string系の設定って反映されてますか?
あと何故かapcも動かない、、、
いくら設定を見直してもなにが悪いのかわかりません。
解決策をご存知の方いましたら、教えてください。

836:835
09/04/03 06:55:01
解決しましたすみません;ケアレスミスでした・・・

837:nobodyさん
09/04/03 07:27:17
>>783

ありがとうございます。それでいってみたいと思います。

838:nobodyさん
09/04/03 07:28:49 b3GlDVd8
クエリの時のプリペアドステートメントって、どういう効果があるんですか?
一応本では読んだんですがいまいちよくわかりません 簡単に説明お願いします

839:nobodyさん
09/04/03 08:01:16
>>838
繰り返し使われる場合はパフォーマンスが上がることもあるみたいだけど、一番大きいのは
SQLインジェクションみたいな攻撃を受けにくくなることじゃないの。

840:nobodyさん
09/04/03 08:43:25
そんなのクオートすりゃ済む話だろ

841:nobodyさん
09/04/03 08:45:48
>>819
もうプリペアでやってるかもしれないけど
$a = "";
$var = "'".$a."'";
$query = "insert into test (id, comment) value ($val, 'test')";

842:nobodyさん
09/04/03 10:01:31
NULLと空文字は違うだろw

843:nobodyさん
09/04/03 10:05:52
昔Oracleしか知らなくてnullとブランク何が違うか客先で質問して大恥かいたことあるぜ

844:nobodyさん
09/04/03 11:18:56
根拠レスな「このコードはセキュリティがダメだね」発言は居酒屋での「大したことねえなマツザカ(笑」みたいな会話に近い
URLリンク(neta.ywcafe.net)

845:nobodyさん
09/04/03 11:26:15
俺も思う
サンプルコードにこれ見よがしにつっこむ奴なんなの
ある側面から切り取ってるんだから瑕疵がないほうがおかしいだろ

846:nobodyさん
09/04/03 11:29:51
高木先生大の批判は辞めて下さい

847:nobodyさん
09/04/03 11:45:02
>>844
また宣伝か

848:827
09/04/03 15:07:28
返事が遅くなりすいません。
フォームの件ですが色々試しましてSESSIONでいくようにしました。
色々とアドバイス本当にありがとうございます。
それでもう一つ質問なんですが、
フォームのチェックボックスの内容をhtmlに直に書かず、
config.phpなどに$val=array("aaa","bbb","ccc");
みたいな感じで記述しhtmlでforeachを使い
全て書き出すみたいな事をしたいんですが、参考書などを確認したら
配列で記述するのではなくfunctionで
function val(){
$val = array("aaa","bbb","ccc");
return $val;
}
という書かれ方がされてました。
関数にせず配列だけが記述すると何かマズイんですか?
質問が少しわかりにくいですがもしよければ
アドバイスよろしくお願いします。


849:nobodyさん
09/04/03 15:17:48
>>848
$valの中身を将来的にコードからいじる可能性があるならfunction、
可能性がないなら定数のままでいい

850:nobodyさん
09/04/03 15:40:20
最近、他人のブログを批判しながら2ちゃんで宣伝してアクセス数稼ぐのが流行ってるのか?

851:827
09/04/03 15:41:11
>>849
返信ありがとうございます。
例えばこれから先チェックボックスの値dddが増えた場合、
$val=array("aaa","bbb","ccc","ddd");
でも
function val(){
$val = array("aaa","bbb","ccc","ddd");
return $val;
}
でも変わらない気がするんですが・・・
素人質問本当にすいません。
今から考えてみます。

852:nobodyさん
09/04/03 15:48:11
>>851
いい例が思いつかないのだけどこんな感じ。条件によって変わる場合だな
function val(){
 $val = array("aaa","bbb","ccc","ddd");
 // 天気が雪の場合のみ配列にeeeを追加する
 if( $this->weather == "snow" ){
  array_push( $val, "eee" );
 }
 return $val;
}


853:nobodyさん
09/04/03 15:49:16
>>851
前者でおk

854:827
09/04/03 16:12:12
>>852
>>853
返信ありがとうございます。
今後、配列を元に何か条件をつけるなどの機会がある場合は
関数にしておく方が好ましいという事ですね。
例文まで書いていただき本当にありがとうございました!

855:nobodyさん
09/04/03 18:24:43 ZpjcrZDP
文字列のシングルクォーテーションのみを
エンティティに変換したいのですが、どうすればいいのでしょうか?
htmlspecialcharsはダブルクォーテーションも変換しますし・・。

856:nobodyさん
09/04/03 18:32:47
vs php(VS2005評価版)でデバッグ実行しようとすると
次のエラーが出てしまいます。
何が原因なのでしょうか?

Fatal error: Unknown: Failed opening required 'C:/Documents and Settings/繧イ繧ケ繝育畑縺ョ繝ヲ繝シ繧カ/My Documents/Visual Studio 2005/Projects/PHP_TEST/PHP_TEST/index.php' (include_path='.;C:\php5\pear') in Unknown on line 0

文字化けしちゃってますが
C:\Documents and Settings\ゲスト用のユーザ\My Documents\Visual Studio 2005\Projects\PHP_TEST\PHP_TEST\index.php
のところで何かエラーが発生している様です。

※phpのコード

<?php

   /* TODO: Add code here */
   print("テスト");
?>




857:nobodyさん
09/04/03 19:08:16
>>855
strtr

858:nobodyさん
09/04/03 19:44:58 2mI6CRy6
【OS名】debian linux
【PHPのバージョン】5.2.0

参照渡しで変数を送り
変数が未定義なら空の文字列を返し
変数が定義済みならそのまま返す関数を考えました。

$test = hoge_variable($v);

function hoge_variable(&$v) {
  if(! isset($v) ) {
    return '';
  }
  return $v;
}

テストに入る内容は望みのものですが、
変数$vが未定義だった場合、定義されて(?)NULLが入るようです。
この挙動について、どういった理由でそうなるのか、
また$vを未定義のままにする方法はあるのかご教示いただけませんでしょうか。

859:nobodyさん
09/04/03 20:02:31
>>858
&$vのとき、参照を張るには、参照される側のアドレスが必要だから、そこで定義される。値はNULL

&$vにしなければよい。

860:nobodyさん
09/04/03 20:14:47
return ''; を return $v=''; でよくね?

定義されてないからNULLだぜ?

861:nobodyさん
09/04/03 20:15:15 2mI6CRy6
>>859
やはりそんな感じだったんですね。
関数はエラーレベルによっては出るNotice: Undefined variable
の対策だったんですけど、&$vでなく$vにするとそこでUndefined variable
がでてしまう感じで…。
定義されたくない時は直接issetをしていくしかないということですかね。
というかそもそもUndefined variable回避に対するアプローチが違っているでしょうか…?

862:nobodyさん
09/04/03 20:18:37
宣言すりゃいいじゃん

863:nobodyさん
09/04/03 20:35:14 2mI6CRy6
状況的には例えばこういう未定義かもしれない所からひっばってくる時で、
$flag = $_POST['flag'];
そういう意味で先の
$flag = hoge_variable($_POST['flag']);
だったんですけど、
例えNULLでも配列に定義されてしまうと、
foreachとかする時に邪魔になったりとかそういう感じのことでした。
やはり基本的には
$flag = '';
if (isset($_POST['flag'])) {
  $flag = $_POST['flag'];
}
みたいなことで行くのがいいのですかね。

864:nobodyさん
09/04/03 20:46:30
フレームワークには用意されてたりするけどね

865:nobodyさん
09/04/03 22:15:46
>>856
文字コードがUTF-8でBOMが入っているとか?
UTF-8Nにしてみたら?

866:nobodyさん
09/04/03 22:53:01
>>863
> $flag = '';
> if (isset($_POST['flag'])) {
>   $flag = $_POST['flag'];
> }
自分はそうしてる
変数が増えてくるとコードがのびがちなので
三項演算子使って
$flag = isset($_POST['flag'])?$_POST['flag']:null;
といった感じにしてる

867:nobodyさん
09/04/03 23:35:31
>838-840
クォートで処理していると、インジェクションが無いか処理を注視しないといけない。
プリペアドステートメントは、インジェクションが無い事が一目で分かる。
SQLの構文と変数が分離されるので見やすくなるって利点もある。

>863
functon getPostedVariable($key){
return isset($_POST[$key])?$_POST[$key]:null;
}
とかやると楽なのでオススメ。
プログラムの開始時に$_GETと$_POSTとかを丸ごとメンバに持つクラスのインスタンスを生成して、そいつにこの関数を定義する手もある。
メリットが思いつかないレベルならとりあえず忘れておいてもいいけどな。テストが非常にしやすくなる。
$request = new Request($_POST, $_GET);
echo $request->post('flag');

868:nobodyさん
09/04/03 23:36:22
Zend_Request使えよ

869:nobodyさん
09/04/03 23:49:57
宗教上の理由によりお断りします

870:nobodyさん
09/04/04 01:03:53
PHPを勉強し始めたのですがphpではクラスを宣言する場合に、
public private とかって宣言する事は出来ないのでしょうか?

public class Test
{
  public function TestMessage()
  {
    print("あいうえお");
  }

}


871:nobodyさん
09/04/04 01:54:48
>>870
classはできない。functionや変数は可能。

872:nobodyさん
09/04/04 01:54:55
>>870
他言語の素養があるおまいさんはまずマニュアルを読みなはれ。

873:nobodyさん
09/04/04 02:00:30
privateなclassってどんなん?

874:870
09/04/04 02:00:58
>>871
サンクス

>>872
.Net(C# / VB.net) & C++とかでこれまで開発をして来ましたが何かばれちゃいましたか。
マニュアルをちょっと読む事にします。

というより一つ疑問なんですけどC#とかC++とかだと次のパターン②でみんな記述しているのに
PHPとかだとパターン②の書き方をする人が多いのはなぜでしょうか?
C#だと今まで私が関わって来たプロジェクトは100%パターン②で記述されています。


【パターン①】
if( 1 == 1)
{

}

【パターン②】
if(1 == 1{

}


875:nobodyさん
09/04/04 02:04:36
>>874
両方ともパターン1かよ

876:nobodyさん
09/04/04 02:05:23
まちがえた
両方ともパターン2かよ

877:nobodyさん
09/04/04 02:08:21
VisualStudioのコード補完のデフォルトがそうなってるだけだろ
JavaやPHP使いはMSみたいに無駄に行数消費するのを嫌うよ

878:nobodyさん
09/04/04 02:09:00
①と②に見える俺は目がおかしい・・・?
てか②括弧閉じてないけど、スペースのことを言ってるのか・・・?

879:874
09/04/04 02:11:43
ああすまん俺の頭が混乱してた

>>874がどちらのこと言ってるのか良く分からないけど
俺は①はメソッドの時に使う。
一応Zendのコーディング規約に則ってやってるけど
個人の作業なら別にそんなの君の価値観でやればいいだろ

880:878
09/04/04 02:13:15
あああ俺は874じゃなくて878

881:nobodyさん
09/04/04 02:14:37
>874
PHPの「標準」なコーディング規約には2つの流儀がある。ひとつはZend、ひとつはPEAR。
で、どっちも1番の括弧スタイルを採用してるんだ。
C++で言えば、MSDNの規約とGNUの標準スタイルが一致しているような状況をイメージすればいいかな。そりゃ合わせるだろ?
PHPが初めての言語です、って奴が多いのも影響していると思う。

勿論、PHP以前に他の言語を学んでいた奴の中には別のスタイルで書く奴もいる。
俺も2番のK&Rスタイルで書くしな。

882:nobodyさん
09/04/04 02:16:56
>>881
URLリンク(framework.zend.com)
if ($a != 2) {
$a = 2;
}
知ったか乙


883:nobodyさん
09/04/04 02:18:31
>882
悪い、寝ぼけてた。
関数定義とクラス定義の箇所を読んでたわ。
PEARもifはそのスタイルだな。

if ((condition1) || (condition2)) {
action1;
} elseif ((condition3) && (condition4)) {
action2;
} else {
defaultaction;
}

884:nobodyさん
09/04/04 02:21:18
MS厨はfunction名を大文字で始めとけ

885:nobodyさん
09/04/04 02:25:13
classの修飾子にはpublic、final、abstractが使えるよ

886:870
09/04/04 02:37:49
>>878 >> 879 >> 880

【パターン①】
if( 1 == 1)
{

}

【パターン②】
if(1 == 1){

0}

の間違いです。括弧が抜けてましたね。


>>877
そう言われれば確かに勝手に整形されちゃいますね。

>>881
なる程2通りの書き方があったんですね。
いずれにせよ①番で統一されているみたいなのでちょっと安心しました。
今後も①で書いて行こうと思います。
(C#)と同じなのでこちらの方が気分的に見やすいです。

PHPでの実務経験が無いので実際の開発現場ではどちらが主に使われているのでしょうか?



887:870
09/04/04 02:39:20
うーん、どう考えても↓の方が見易いのですが、、、、
皆さんも↓の方が見やすくないですか?

>>883

if ((condition1) || (condition2))
{
  action1;
}
elseif
((condition3) && (condition4))
{
  action2;
}
else
{
  defaultaction;
}


888:nobodyさん
09/04/04 02:39:35
書き込むボタン押す前に見直ししろ

889:nobodyさん
09/04/04 02:41:13
俺だったらこれだな。極めて合理的だ

if ( (condition1) || (condition2) ) { action1; }
elseif ( (condition3) && (condition4) ) { action2; }
else { defaultaction; }

890:nobodyさん
09/04/04 02:48:19
>>889
うげぇー

891:nobodyさん
09/04/04 02:51:50
>>889
オナニーコード

892:nobodyさん
09/04/04 02:53:10
>887
そのスタイルはないな。見づらい。

インデントスタイルでガタガタ抜かすお前にはPythonが合っていると思う。
Pythonにはどのインデントスタイルが見やすいとかいう議論が一切存在しないぞ。

893:nobodyさん
09/04/04 03:03:22
>>887
視点移動が多くなって見づらい

894:nobodyさん
09/04/04 03:25:39
>>892 >>893
本気で言ってますか?
コードを詰めまくって書くよりゆとりを持たせたコードの方が見易いし、
メンテナンス性もあがる気がするのですが。

895:nobodyさん
09/04/04 03:30:54
それはひらがなだけで書かれた文章の方が読みやすいってのと同じレベルの主張だと思う。
まぁコーディングスタイルは宗教論争なんで、不毛なダケなんだけどさ。

896:nobodyさん
09/04/04 03:31:20
ZendとかPEARとか使ってるなら、逆効果だろ
統一させた方が見やすい

897:nobodyさん
09/04/04 04:00:44
見やすいのはいいけどスクロールしないと下のほうが見えなくなるのが無理

898:nobodyさん
09/04/04 04:11:29
>>887
そんなとこより括弧と条件式の間のスペースを空けろってな

899:nobodyさん
09/04/04 05:30:26
オレ竜で書くのがいちばんさ

900:nobodyさん
09/04/04 05:58:30
>>887
EclipseでJavaとPHPをやってる俺からいうと
if (condition) {
}
のほうが見やすい
他の人も同じようなこといってるが
最初に使い慣れたIDEの標準の補完機能によって
どちらが使いやすいか分かれるんだろう
あとはコーディング規約の問題

901:nobodyさん
09/04/04 07:35:04 +rg3YxkW
fopenってロックの引数がないんですが
ちゃんとロックされるんですか?
同時書き込みでファイル壊れたりしませんか?

902:nobodyさん
09/04/04 07:37:06
fopenはリソースを指定してるだけ
書き込みを行う関数はfwrite

903:nobodyさん
09/04/04 07:39:05
マニュアルのちょっと上にflockってあるだろ

904:nobodyさん
09/04/04 07:43:24
ロックは別にするんですね
ありがとうございました。

905:nobodyさん
09/04/04 11:05:08 UT159Z4L
winでは動かない関数があるのでこのさい仮想マシン上にlinuxを入れることにしました
ノートPCなので容量を抑えたいのですが、linuxしてる方でおすすめのものがございましたら教えて下さい

906:nobodyさん
09/04/04 11:16:09
俺、クラスや関数は>>874でいう①、条件文なんかは②で書いてる・・・・

907:nobodyさん
09/04/04 11:42:14
①の書き方って、昔ならではのC言語の関数書くときの引数の型宣言の名残なのかね

908:nobodyさん
09/04/04 12:46:42
現在Apache+PHP5+MySQL5を使用してWEBサイトを作る練習をしているのですが、

C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\
  hogehoge.html
  tomato.php

に各WEBページ(phpファイル)を置いて

URLリンク(localhost)

でアクセスしているのですが、これを

C:\Work
  hogehoge.html
  tomato.php
でアクセス出来る様にするにはどうすれば良いでしょうか・
※デフォルトのパスをC:\Workにしたいと思っています。

909:nobodyさん
09/04/04 12:47:32
php関係ない
apacheのdocument root
あと>>1

910:908
09/04/04 13:04:00
>>909
ありがとうございます。

document root を
【httpd.conf】
DocumentRoot "C:/htdocs"
に変更しApacheを再起動したのですが
Web サイトによってこのページの表示を拒否されました
というエラーが出て一向にページを見る事が出来ません。
なぜでしょうか?


911:nobodyさん
09/04/04 13:13:06
ファイルをC:/Workにおいてるのになんでhttpd.confのほうは「C:/htdocs」にしたん?

912:nobodyさん
09/04/04 13:41:34
>>910
>>1読め糞野郎

913:nobodyさん
09/04/04 13:43:54
ていうかPHP関係ないって言ってんだろカス

914:nobodyさん
09/04/04 13:58:00
DocumentRoot を C:/Work にすればいいんじゃねーの。
あとID出せよ

915:nobodyさん
09/04/04 15:00:42
documentrootだけ変えても意味ないよ
documentrootのディレクトリ設定のパスも書き変えないと意味ないよ

916:908
09/04/04 15:19:05
>>911 ファイルは、C:/htdocsに配置しました。

>>914
IDを出す、 というのは所謂 fusianasan ですか?

>>915
ありがとうございました。

設定ファイル系を色々といじってみたところ無事動作する様になりました。
ありがとうございました。

917:nobodyさん
09/04/04 15:27:18
ルールも守れないような奴は二度と来んな

918:858
09/04/04 15:39:59 Q5CHJrya
遅レスすみません。
>>866>>867氏他皆様ありがとうございます。
いろいろ試してみたいと思います。

919:nobodyさん
09/04/04 20:31:48
慇懃無礼なやつだなw

920:220x151x2x6.ap220.ftth.ucom.ne.jp
09/04/04 20:44:31
◆質問用テンプレ
【OS名】WindowsXP
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql5
【質問内容】
セッションが破棄されるタイミングがいまいち分かりません。
セッションファイルの数を数える事により、現在サイトにアクセスしている人の
大まかな数を数えているのですが、ブラウザを終了してもセッションファイルは残ったままです。

理想を言えば、ユーザにログインボタンを押してもらい  session_destroy を呼ぶ
事によりセッションファイルを削除するのが良いとは思いますが、

如何せんブラウザなのでログアウトボタンが必ず押される保障はありません。
ブラウザが閉じられてから5分したらセッションファイルを削除する、といった事は可能なのでしょうか?

通常セッションは一定時間経てば破棄されるらしいのですが、phpの場合はどこで設定すれば良いのでしょうか?


921:nobodyさん
09/04/04 20:48:04
>>920
>>1

922:nobodyさん
09/04/04 21:11:33
>>920
頑張ってfusianasanしたのはいいんだが君が表示してるのはIPだ
IDを出してくれたまえ

923:nobodyさん
09/04/04 21:12:45
ID出てないが一応マジレスするとブラウザが閉じられたという情報は送られません

924:nobodyさん
09/04/04 21:39:31
URLリンク(jp2.php.net)
いつ消えるかはsession.gc_maxlifetimeで決まる。

集計は、閉じられた情報は取得できないので、セッション変数に「最終利用日時」を記録しておく。
画面を表示するたびにこれを更新して、集計時はその数字を見て判別する、という手がある。
例えば、5分以内にサイトにアクセスした人の人数を「現在サイトにいる人数」と見なすとかな。
ファイルだと大変なので、DBなどの集計しやすい場所にセッション情報を格納するとやりやすい。

925:nobodyさん
09/04/04 22:06:27
>>924
荒らすな

926:nobodyさん
09/04/04 22:18:43
俺はセッション使わないでアクセスログでオンラインカウンターをやってる

927:920 ◆gRDEQwu9i2
09/04/04 22:21:55
>>922
これの事だったんですねw
勘違いしてました。

>>923
そうですよね。


>>924
ちょっと色々といじってみます。

>>925
別に荒らしてはいない気がしますが・・・

>>926
DBにアクセス情報を記録させてそこで判定した方が確実で簡単かもしれませんね。


928:nobodyさん
09/04/04 22:25:35
死ねカス

929:nobodyさん
09/04/04 22:34:25
春だなw

930:nobodyさん
09/04/04 22:34:35
>>927
まじれすすると、それはトリップ
ID表示はメール欄を空白にするかageと書く

931:nobodyさん
09/04/04 23:03:22
てst

932:nobodyさん
09/04/04 23:06:05
さくらインターネットでサーバ借りてるんだけど
function ExecuteSanitizing(&$strSanitizing)
{
 $strSanitizing = htmlentities($strSanitizing, ENT_QUOTES, mb_internal_encoding());
}

$str = "<b>あいうえお</b>";
$str = instance->ExecuteSanitizing($str);
echo $str;

として出力するとローカルでは文字化けしないのにさくらインターネットだと文字化けしちゃいます。
なぜでしょうか?


933:nobodyさん
09/04/04 23:26:21
エスパーさん出番ですよ

934:p7033-ipbfp405osakakita.osaka.ocn.ne.jp
09/04/04 23:30:26 UHDnoHcu
私を笑いものにするがいい

935:nobodyさん
09/04/04 23:40:07
>>932
>>1

936:fusianasa‎n
09/04/04 23:40:52
俺はfusianasanを制御できるから書きこんでもIP表示されないんだけどさ

937:nobodyさん
09/04/04 23:43:27
>>936
それってどうやってやってんの?


938:f‎usianasan
09/04/04 23:46:28
>>937
いや、おれ2ちゃんのボランティアやってるからこのぐらいの特権は持ってるよ

939:nobodyさん
09/04/04 23:48:52
f&lrm;usianasan
なにがボランティアだつまらん

940:nobodyさん
09/04/04 23:52:00
釣れたw

941:f&lrm;usianasan
09/04/04 23:57:19
テスト

942:f‎usianasan
09/04/04 23:58:04
>>939
どうすれば出来るですか?

あいうえお

943:f‎usianasan
09/04/05 00:00:02
てす

944:nobodyさん
09/04/05 00:06:15
>>932
ローカルとさくらのphp.iniのmbstringの設定が違う

945:nobodyさん
09/04/05 00:30:10
>>901
fopenはファイルのポインタを獲得するだけ。
ロックはその後で、別の関数で行う。

946:nobodyさん
09/04/05 00:31:03
URLリンク(ameblo.jp)
クラスメソッドをabstractにしようと思いまして、abstractをつけて関数定義したところ、以下のようなエラー。

Class SampleClass contains 1 abstract method and must therefore be declared abstract or implement the remaining methods

エラーの原因がわからず、30分も調べてしまいました。
原因はclassの定義で本来なら「abstract class SampleClass」 としなくてはいけないところを
「class SampleClass」と定義していたことでした。

エラーメッセージからでは気づきにくいことでした・・・

だとさ

947:nobodyさん
09/04/05 00:42:58
ポインタって言うな

948:nobodyさん
09/04/05 00:45:11
SampleClassには1つのabscractメソッドが含まれます。
だからこのクラスはabstractとして宣言されるか、残りのメソッドを実装しなければいけません。

このメッセージで分かりづらいってなら、どう出せばいいんだろう。

949:nobodyさん
09/04/05 00:48:33
MSもSUNもやってるんだから
ZendJapanもエラーメッセージを日本語化すべきだな

950:nobodyさん
09/04/05 01:35:51
日本語化したら分かるんかい?

951:nobodyさん
09/04/05 02:02:56
>>944
ありがとうございます。ローカルのphp.iniと設定をあわせたところ
正常に表示される様になりました。

ちょっとphp.iniについて質問があるのですが
ローカルだと
C:\WINDOWS\php.ini
という具合にphp.iniファイルを配置しているのですが
レンタルサーバ(さくらインターネット)の場合には
/home/street-fighter/www/php.ini
という具合にphp.iniを自前で用意するのが普通なのでしょうか?

※今後、さくらインターネット以外のサーバを借りるかもしれないのですが、
さくらインターネット以外の場合にも、*/www/直下にphp.iniファイルは保存
するのでしょうか?

/home/street-fighter/www/php.ini



952:nobodyさん
09/04/05 02:07:24
>>951
自分が借りているレンタルサーバーの場合、

(1)そもそもユーザーがphp.iniを編集できない
(2)php.iniがpublic_htmlの外に置いてあった

この2パターンがありました。

953:nobodyさん
09/04/05 02:09:39
>>951
>>1

954:nobodyさん
09/04/05 02:39:34
URLリンク(asobi.sqweebs.com)

質問用テンプレ作りました。
どうぞテストもかねて使ってみてください。

955:nobodyさん
09/04/05 03:48:15
ブラクラ注意

956:nobodyさん
09/04/05 10:38:30
>>954がもしブラクラなら運営板で報告してもらえる

957:nobodyさん
09/04/05 11:30:01 rlL9K/DC
変数内の特定の文字列を取得しようと、以下のようにしました。

//$text
-----
あいうえお
-----

//取得する為の正規表現
preg_match_all("/-----¥n(.*)¥n-----¥n/is",$text,$array)

しかし、「-----」の間を上手く取得できません。
どういった正規表現のコードを書けば良いか教えて下さい。

958:nobodyさん
09/04/05 12:04:57
そりゃs修飾子付けたら¥nと.の区別が無くなるがな

959:nobodyさん
09/04/05 12:10:08
せめてこう書けよ
-----

-{5}

960:nobodyさん
09/04/05 12:10:54
-{5}\n(.*)-{5}\n

961:nobodyさん
09/04/05 12:20:05
どうでもいいが改行は必ず\nなのか?
\rとか\r\nは含まないんだな?

962:nobodyさん
09/04/05 12:43:45
Linuxサーバでそんなファイル作ったら行末に変な文字出ちゃうぜ
環境によって必要ならそういう対応すればいいだけ

963:nobodyさん
09/04/05 12:52:14
変な文字っていっても^Mに見えるCR(Carriage return)でしょ
ウニックス系で\nと書くとLF(0x0a)を表し、
ウィンドズ系で\nと書くとCR+LF(0x0d 0x0a)を表すのが基本でしょ

964:957
09/04/05 13:26:52
皆さん、レスありがとうございます。
ただ、以下のようにしましたが、やっぱり取得できません。

$text = trim("
-----
あいうえお
-----
");
preg_match_all("/-{5}\n(.*)-{5}\n/",$text,$array);


965:nobodyさん
09/04/05 13:52:29
lol

trim
trim
trim
trim
trim
trim
trim
trim
trim
trim

966:nobodyさん
09/04/05 13:55:26
>>964
>1
スレのルールも守れない奴に正規表現が守れるものか

967:nobodyさん
09/04/05 13:55:58
$str = "
-----
あいうえお
-----
";
preg_match_all("/-{5}\n(.*)-{5}\n/s",$str,$m);

968:957
09/04/05 14:00:27 rlL9K/DC
2回目以降もID出すんですね。sage無ければいけないと思っていました。

それで、>>967のコードをそのままコピーして
print_rで出力してみたのですが、やはり文字の「あいうえお」が取得できません。
テスト環境がWindowsXPのファイルがUTF-8ですが、それが関係するのでしょうか?
ただ、他の文字コードにしてもやっぱり取得できません。。

969:nobodyさん
09/04/05 14:03:21
うにコードならU修飾子ぐらい付けろや

970:nobodyさん
09/04/05 14:06:09
俺の環境では取得できるんだがな・・・

971:nobodyさん
09/04/05 14:08:54
環境によるのかな

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "URLリンク(www.w3.org)">
<html xmlns="URLリンク(www.w3.org)">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無題ドキュメント</title>

</head>

<body>

<?php
$str = "
-----
あいうえお
-----
";
preg_match_all("/-{5}\n(.*)-{5}\n/s",$str,$m);

print_r($m);
?>
</body>
</html>


結果
Array ( [0] => Array ( [0] => ----- あいうえお ----- ) [1] => Array ( [0] => あいうえお ) )

972:957
09/04/05 14:11:33 rlL9K/DC
>>970-971
そうですか・・。

テストしているローカル環境のPHPが5.2.5で
試しにさくらのレンタルサーバ(5.2.8)にもアップして試してみたのですが、
971さんのような結果になりません・・。

973:nobodyさん
09/04/05 14:11:50
俺はこれでおkだった

<?php

$text = trim("
-----
あいうえお
-----");
preg_match_all("/-{5}\n(.*)\n-{5}/",$text,$array);

var_dump($array);

?>

974:nobodyさん
09/04/05 14:12:26
>>972
>>969

975:nobodyさん
09/04/05 14:18:21
まさかと思うけどさー
改行コードがCR+LFだからとかいうオチじゃないよね?
もしこれで通ったらぶっ飛ばすぜ

<?php

$text = trim("
-----
あいうえお
-----");
preg_match_all("/-{5}[\n|\r]+(.*)[\n|\r]+-{5}/",$text,$array);

var_dump($array);

?>

976:nobodyさん
09/04/05 14:23:01
別に員だけどさ
お尻の改行だけを取るならrtrim("\n",変数)の方が誰が見ても分かりやすくていいと思うんだ

977:nobodyさん
09/04/05 14:24:31
[\n|\r]

こういう書き方するなら正規表現もっと勉強したほうがいい

978:nobodyさん
09/04/05 14:29:09
>>975

× \n|\r
○[\r]?\n

979:957
09/04/05 14:47:03 rlL9K/DC
>>973-978
全く反応無しです・・。
array(2) { [0]=> array(0) { } [1]=> array(0) { } }
という結果にしかなりません・・。

作成手順は、これまでDreamweaverを使っていたのですが、terapadに変更しました。
そしてこれまで挙がっているソースをコピーして保存して実行したのですが、
それでも上記のような結果になります。
文字コードをEUCにしてもSJISにしても結果は同じです・・。

やっぱりPHPのバージョンの問題ですかね・・・


980:nobodyさん
09/04/05 14:54:28
pearの勉強をしよと思ってるんですけど
オススメの入門サイトはありますか?

できればpearを使った場合のメリットとかも十分に解説されているサイトを希望します。

981:nobodyさん
09/04/05 15:07:29
terapadとかナメてんのかよ
サクラエディタとか秀丸とかEmEditor使えよ

982:nobodyさん
09/04/05 15:24:51
釣りだろ

983:nobodyさん
09/04/05 16:37:11
最近よくいる低レベル回答者を叩くのが楽しみでここ見てます

984:nobodyさん
09/04/05 16:38:57
叩いてないじゃん

985:nobodyさん
09/04/05 22:31:43 QUmCZ8RS
配列にひらがなのみの文字列を不定数で格納します
この配列をあいうえお順でソートしたいと思います
標準関数ではあいうえお順でソートする関数がないので、自分でユーザー定義関数にしようと思います
あいうえお順にするためにどのようなアルゴリズムを用いればいいのかどなたかヒントだけでもお願いいたします

【サンプルの配列】
$hiragana = array(
"かいわれ",
"れたす",
"あめ",
"さらだ"
);

↑をソートして、結果が↓

$hiragana = array(
"あめ",
"かいわれ",
"さらだ",
"れたす"
);




986:nobodyさん
09/04/05 22:36:37
sort($hiragana);

987:nobodyさん
09/04/05 22:46:14
>>986
平仮名はソートでけへんよ

988:nobodyさん
09/04/05 23:08:08
>>986 じゃないが、とりあえず utf-8なら問題なくできたみたいだけど、なんか違うのけ?

989:nobodyさん
09/04/05 23:56:37
バイナリ単位での比較だからひらがなだろうができる

990:nobodyさん
09/04/06 00:09:45 CWy5GQCe
質問
CGIゲームを設置したんだけど
サイトによっては自動的に更新されてるんですよ
ページを定期的に読み込むにはどうしたらいいのか教えてください

991:nobodyさん
09/04/06 00:16:48
cron

992:nobodyさん
09/04/06 01:04:38
meta refresh

993:nobodyさん
09/04/06 04:19:15
次スレ
スレリンク(php板)

994:nobodyさん
09/04/06 05:48:09


995:nobodyさん
09/04/06 22:26:16
ume


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