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

【PHP】下らねぇ質問はID出して書き込みやがれ 88

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/09/16(水) 09:39:37ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 87
http://pc11.2ch.net/test/read.cgi/php/1251447028/

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
07927862009/10/06(火) 13:57:30ID:???
>>789
人にテストやらせんじゃねぇよ、死ね!
と思ったら俺の間違いじゃねぇか!
済みませんでした
省略したらapplication/octet-streamで扱うんじゃねぇの…

>>786訂正
header('Content-Type: ...') を指定しないと default_mimetype (デフォでtext/html) が
送信されるからContent-Typeを無視するIE以外で表示できません
0793nobodyさん2009/10/06(火) 14:16:53ID:FPrhzfOJ
>>791
こんな便利なものが…
ありがとうございますorz
0794nobodyさん2009/10/06(火) 17:33:25ID:BEe+JBrP
以下のような形でプリペアドステートメント的なクエリ文を書こうと思ってるんですが(イメージです)、

$this->_db->fetchAll("
SELECT * FROM `hogeTBL`
WHERE
`hoge1`=?
AND
`hoge2` like %?%
AND
`hoge3`=?
",
array($hoge1,$hoge2,$hoge3)
);

hoge1,hoge2,hoge3の全てが「あってもなくても良い」条件の場合、どう書けば良いんでしょうか?
条件の変数があるかないかで全パターン書き分けしてたらかなり面倒で、上で動くと思ったんですが動かないし
どうして良いのかわからなくて質問しました。
よろしくお願いします
0795nobodyさん2009/10/06(火) 17:41:15ID:???
使っているライブラリが違うけど、俺だったら・・・

$sql = <<<EOS
   select * from xxxx where 1
EOS;

if($name){
   $sql .= "and name like '%%%s%%'";
   sprintf($sql,mysql_real_escape_string($name));
}

if($age){
   $sql .= "and age = %d ";
   sprintf($sql,mysql_real_escape_string($age));
}

とか書くかも
0796nobodyさん2009/10/06(火) 17:59:44ID:BEe+JBrP
>>795
なるほど、ありがとうございます
「%%%s%%」と、%がたくさんあるのはなんなんでしょうか?
0797nobodyさん2009/10/06(火) 18:34:38ID:???
sprintfのマニュアルのフォーマット文字列んとこ読みなはれ。
0798nobodyさん2009/10/06(火) 18:36:11ID:BEe+JBrP
>>797
どうもです、ありがとう
0799nobodyさん2009/10/06(火) 18:40:11ID:y7QUP1JZ
ajax(PHP4.0+javascript)についての質問です

ajaxでは、
XMLHttpRequestを用いて「必要なデータをxml文書として返すphpプログラム」をコールしましが、
このphpプログラム内でauthによる認証を行う事は可能でしょうか。
以下のような動作にしたいと思っています。

1.特定の条件で(例えばボタンを押す等)javascriptプログラムが実行
XMLHttpRequestによる通信開始、指定のphpプログラムが実行。
↓
2.phpプログラム内でauth認証開始、

認証成功の場合⇒データベースに書き込み、

認証失敗の場合⇒書き込みは行わない。


3.phpプログラムは認証結果をxmlとして出力
ブラウザは認証結果に応じて動作を変える


こんな感じでふ。
これが可能なのか、可能でないのかわからずにいます。
苦労との皆様、宜しくお願いいたします。
0800nobodyさん2009/10/06(火) 21:25:37ID:???
HTTPの仕組みというかWebアプリの動作を理解すれば何ができて何ができないか、
は判断できるだろうしできないのはどうかと思う。
0801nobodyさん2009/10/06(火) 21:39:17ID:???
能書きはいいから、さっさと教えろよ
08027992009/10/06(火) 21:52:47ID:62gXteWj
>>800さん

authを利用できるかどうかという事は
XMLHttpRequestによって実行されたphpプログラムが
クライアントのクッキーを参照できるか??という事のような気はするのですが・・
(間違っていたらすみません)
これが実際どうなのか、何を調べたらよいのか、
できたとしても環境によって動作が大きく変わってしまうのか、
分からない状況になっています。
後学の為に詳しく教えていただけたらうれしいです。

とりあえずHTTPについて復習してキマシ(*`・ω・)ゞ

0803nobodyさん2009/10/06(火) 22:07:14ID:???
流し読みだけど、jsが走ってphpをリクエスト→リクエストされたphpの中で認証処理
→結果をレスポンスとして返す、というだけの処理なら、普通に考えてできるんじゃないの?

もちろん、リクエストする時にCookieなりクエリなりPOSTなりで認証情報を渡す必要
はあるだろうけど。むしろ何故不可能だと思うんだろう
08047992009/10/06(火) 22:31:43ID:???
>>803さん

ありがとうございます。
更にauthで既に認証済みのユーザがあえて、POST等でIDとパスを渡すことなくとも、
XMLHttpRequestによって実行されたphpプログラムでセッション情報を元に認証する事ができるか 
というと、どうでしょうか。。

やはりphpプログラムがクライアントのクッキーを参照できるか??という事になると思うんですが、、、
0805nobodyさん2009/10/06(火) 22:33:14ID:???
>>804
cookie参照できるから平気
08067992009/10/06(火) 22:37:04ID:???
ブラウザからphpプログラムを呼んだ場合、
⇒phpプログラムはブラウザが保存していたクッキーを使用する事ができる。

という認識なんですが、
XMLHttpRequestによってphpプログラムを実行した場合、
⇒XMLHttpRequestを実行したブラウザのクッキーをphpプログラムは使用する事ができるのか??

これが分からないのが問題なのかもしれません。
ぐるぐるしてすみません。
0807nobodyさん2009/10/06(火) 22:43:39ID:???
>>806
まぁここはくだ質だから嫌味な奴は気にするな
BASIC認証は感じ

<?php
if (!isset($_SERVER['PHP_AUTH_USER'])
|| $_SERVER['PHP_AUTH_USER'] != 'namae'
|| $_SERVER['PHP_AUTH_USER'] != 'himitsu')
{
  header('HTTP/1.0 401 Unauthorized');
  header('WWW-Authenticate: Basic realm="sample"');
  exit;
}
header('Content-Type: text/plain');
echo 'ok';
?>

これを
var request = new XMLHttpRequest();
request.open("GET", "a.php", false, 'HOGE', 'FUGA');
request.send(null);
alert(request.status);
で試してみるといい

あとはこっちを見る
http://jp.php.net/manual/ja/features.http-auth.php
0808nobodyさん2009/10/06(火) 22:43:42ID:???
>806
ためしもせずガタガタ抜かすな。
LiveHTTPHeaderかFirebugでも入れて、Ajax通信の中身を実際に覗けや。
www.example.comへのリクエストであれば、ブラウザのアドレスバーからだろうがリンクからだろうが<img src=>だろうがAjaxだろうがクッキーは送信される。
0809nobodyさん2009/10/06(火) 22:49:41ID:???
なんつーかphpを実行する、てところに捕らわれすぎてるように思う。
何でも良いけど、実際にどんなHTTPリクエストが飛んでレスポンスが
返ってくるのか一度見てみた方が多分勉強になるし、HTTPの知識無しで
ajaxはちょっと心許ないと思う
08107992009/10/06(火) 23:08:09ID:???
>>808さん >>809さん

ありがとうございます。
なんだかふわふわして、自分が何でわかんないのかもわかんない違和感、
その原因がHTTPなんだと気づかせてもらいました。HTTPリクエスト、レスポンスを
目で見てみたいと思います。

>>807さん

ソースまで提供していただいて、もう涙出ます。
ためさせていただきます!勉強させていただきます!
ありがとうございます!

皆さんありがとうございました!
0811nobodyさん2009/10/06(火) 23:18:46ID:RPLcbD5P
includeやrequireのように取り込まずに別ファイルとしてphpファイルを実行するには
どうしたらよいでしょうか?イメージ的にはExecuteのような感じです。
0812nobodyさん2009/10/06(火) 23:27:12ID:???
>>810
ごめん嘘書いてた、ifの条件式を置き換えてくれ
|| $_SERVER['PHP_AUTH_USER'] != 'namae'
|| $_SERVER['PHP_AUTH_PW'] != 'himitsu')
0813nobodyさん2009/10/06(火) 23:28:20ID:???
>>811
無理
0814nobodyさん2009/10/06(火) 23:31:14ID:???
>>811
system("/usr/bin/php xxx.php") とか、  file_get_contents("http://example.com/xxx.php")とか。
どういうことをやりたいの?
08158112009/10/06(火) 23:36:14ID:???
a.phpが読み込まれたときにinc.phpを実行させたいです。

inc.phpは他のファイルからも実行させたいのですが、呼び出し元の変数に
万が一影響しても困るので、includeやrequireは避けたかったのです。

>>814さんのsystem("")でできました。ありがとうございますー
0816nobodyさん2009/10/07(水) 17:41:32ID:UWu9xUOc
<?php

if(($_POST["mati"]==1))$count++;
else if(($_POST["mati"]==0))$count--;

if(($_POST["eiga"]==1))$count++;
else (($_POST["eiga"]==0))$count--;

if(($_POST["ame"]==1))$count++;
else if(($_POST["ame"]==0))$count--;


if (count==3) <META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=kikubari.html">;
else if (count==2) <META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=roman.html">;
else if (count==1) <META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=roman.html">;
else if (count==0) <META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=kensin.html">;
else if (count==-1) <META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=kensin.html">;
else if (count==-2) <META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=zibun.html">;
else if (count==-3) <META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=zibun.html">;


?>

これでリンク先を振り分けられないんだがどうしてか教えて欲しい
何回やっても一番したのリンクへしか飛ばないんだ・・・
0817nobodyさん2009/10/07(水) 17:47:39ID:???
マルチかよ
0818nobodyさん2009/10/07(水) 17:52:07ID:UWu9xUOc
>>817
必死なんだ
0819nobodyさん2009/10/07(水) 18:03:28ID:???
PHPを用いたダウンロードカウンター「X-File Access Counter」
ttp://works.xworks.org/script/01php/xfile-access-counter/

これの非公開バージョンb090909
http://kissho.xii.jp/1/src/1jyou93396.zip.html

・DBにSQLiteを用いているのが特徴。
・ベータ版のため、簡単に使える状態では無い。

誰か、使用方法、教えて下さい・・・。
0820nobodyさん2009/10/07(水) 18:20:43ID:???
>>819
気になってたんです、それ。
頂きました、ありがとう!
0821nobodyさん2009/10/07(水) 18:23:03ID:???
>>819
まず解凍します
0822nobodyさん2009/10/07(水) 18:29:19ID:???
>>819
次にreadme.txtを読みます
0823nobodyさん2009/10/07(水) 20:45:45ID:???
次に靴下を穿きます
0824nobodyさん2009/10/07(水) 20:46:21ID:???
次に出かけます
0825nobodyさん2009/10/07(水) 20:49:58ID:???
次に書店に入ります
0826nobodyさん2009/10/07(水) 21:03:59ID:???
>>816

それ、そもそもパースエラーが出る。

実際に動かしてるものをコピペしないと、
転載するときに間違ったのかソースが間違ってるのか分からないよー。
0827nobodyさん2009/10/07(水) 21:06:33ID:???
そのままコピペで貼り付けてる
動くには動くんだがどんなふうにやっても必ず一番下のリンクへ飛ぶんだ
0828nobodyさん2009/10/07(水) 21:07:00ID:???
といいつつ、$_POST値が来てないんじゃないかと推測してみたり。

先頭で
var_dump( $_POST ) ;
0829nobodyさん2009/10/07(水) 21:08:49ID:???
>>828
なんもならね。。。
0830nobodyさん2009/10/07(水) 21:11:05ID:???
>>829
コードを保守する前にまずスレのルールを守りましょう
0831nobodyさん2009/10/07(水) 21:12:26ID:???
自分の知っているphpだと、変数の頭は$で略せなかったと思うんだけど
いつから条件式中で略せるようになったの?
0832nobodyさん2009/10/07(水) 21:12:33ID:???
>>827

え?それで動く??

if (count==3) <META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=kikubari.html">;

count は$countだろうし
HTML部分は echoなり、php抜けるなりしないとダメだと思うんだけどなー。


ロジックがおかしくて動かないんじゃなくて
そもそも、まったく動いてないんじゃ?
0833nobodyさん2009/10/07(水) 21:13:21ID:???
。ヨヌー、ホ、ソ、皈ウ・�チテ・ア、・6クトヌ网、ケ?、?タ、ア、ノ、筅ヲ3クトソゥ、ル、ニ、キ、゙、テ、ソ。ラ
、ネ、、、ヲス?ュケ?、゚、ャネッテシ、ネ、ハ、遙「ツ賈?ワカ盻?、ヒ、マ・ウ・�チテ・ア、ャ、ト、ュ、筅ホ、ネ
、ハ、テ、ソ。」2、チ、网?ヘ、・?ヒ。ヨ・ウ・�チア。ラ、ネ、篆?ォ、・・」
、ウ、ホネト、ネ、マ、「、゙、・リキク、ハ、ッ。「・ヒ・蝪シ・ケ
0834nobodyさん2009/10/07(水) 21:14:34ID:???
すまん さっき改変してた
<?php

if(($_POST["mati"]==1))$count++;
else if(($_POST["mati"]==0))$count--;

if(($_POST["eiga"]==1))$count++;
else if(($_POST["eiga"]==0))$count--;

if(($_POST["ame"]==1))$count++;
else if(($_POST["ame"]==0))$count--;


if ($count==3) print'<META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=kikubari.html">';
else if ($count==2) print'<META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=roman.html">';
else if ($count==1) print'<META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=roman.html">';
else if ($count==0) print'<META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=kensin.html">';
else if ($count==-1) print'<META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=kensin.html">';
else if ($count==-2) print'<META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=zibun.html">';
else if ($count==-3) print'<META HTTP-EQUIV="REFRESH" CONTENT = "5; URL=zibun.html">';


?>
0835nobodyさん2009/10/07(水) 21:16:54ID:???
たぶん勘違いだと思うんで、パースエラー部分は無視するとして。

最初にそのページを読み込むときは、絶対一番下の処理になるけど。
0836nobodyさん2009/10/07(水) 21:20:35ID:???
mjky
これなんとかしてページを振り分ける方法ない?
0837nobodyさん2009/10/07(水) 21:29:08ID:???
if($_POST['submit']!=NULL){}
0838nobodyさん2009/10/07(水) 21:30:12ID:???
>>837
解説を・・・
0839nobodyさん2009/10/07(水) 21:31:38ID:???
>>834 ほら。タブは全角スペース2つに置き換えてあるから注意な
if(isset($_POST["mati"],$_POST["eiga"],$_POST["ame"])){
  $count = 0;
  function count_post($str){
    if($str == "1"){
      return 1;
    }else if($str == "0"){
      return -1;
    }else{
      return 0;
    }
  }
  $count = (count_post($_POST["mati"]) + count_post($_POST["eiga"]) + count_post($_POST["ame"]));
  header('Status: 301 Moved Permanently');
  switch($count){
    case 3:
      header('Location: kikubari.html');
    break;
    case 2: case 1:
      header('Location: roman.html');
    break;
    case 0: case -1:
      header('Location: kensin.html');
    break;
    case -2: case -3:
      header('Location: zibun.html');
    break;
  }
}else{
  echo "必要なパラメータがPOSTされてない";
}
0840nobodyさん2009/10/07(水) 21:39:03ID:???
>>839
なぜ飛ばないんだ・・・
URLへ飛んでくれない・・・
0841nobodyさん2009/10/07(水) 21:40:37ID:???
とりあえずスレタイと>>1嫁
0842nobodyさん2009/10/07(水) 22:44:35ID:IEM8qI68
headerなのに絶対パスで書かないし
0843nobodyさん2009/10/07(水) 22:53:13ID:???
>>842
相対パスも可
headerがどうとかは関係ない
ttp://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
0844nobodyさん2009/10/07(水) 23:02:39ID:???
どこに相対パスも可って書いてあるの?
0845nobodyさん2009/10/07(水) 23:09:40ID:???
相対パスでも一応動くし、やる人もいるだろうねぇ。
俺はしないけど。
0846nobodyさん2009/10/07(水) 23:10:39ID:???
14.30 Location
The Location response-header field is used to redirect the recipient to a location other than the
Request-URI for completion of the request or identification of a new resource. For 201 (Created)
responses, the Location is that of the new resource which was created by the request. For 3xx
responses, the location SHOULD indicate the server's preferred URI for automatic redirection to
the resource. The field value consists of a single absolute URI.

   Location = "Location" ":" absoluteURI
An example is:

   Location: http://www.w3.org/pub/WWW/People.html
   Note: The Content-Location header field (section 14.14) differs
   from Location in that the Content-Location identifies the original
   location of the entity enclosed in the request. It is therefore
   possible for a response to contain header fields for both Location
   and Content-Location. Also see section 13.10 for cache
   requirements of some methods.
0847nobodyさん2009/10/07(水) 23:49:54ID:???
>>843
英語も読めない無知は黙ってろよ
絶対パスで書け
0848nobodyさん2009/10/08(木) 00:39:37ID:???
>>839-840
    case -2: case -3:
      header('Location: zibun.html');
    break;
↓↓↓
    case -2: case -3:
      header('Location: zibun.html');
    break;
    default:
      header('Location: countgaokashii.html?count='.$count);
    break;
0849nobodyさん2009/10/08(木) 09:11:12ID:???
>>819
UPありがとう。
とりあえず、こんな流れで動きましたよ。

1行目が<?xmlで始まるPHP(複数個)
<?をPHPと認識して処理されてしまうのが問題なので、
<?php echo '<?xml version="1.0" encoding="utf-8"?>'; ?> に書き換える。

PHP5環境の場合、ファイルの初回ダウンロード時に
db.inc.phpの「if($date != date('Ymd', $lastact))」部分でエラーが出るので、
前に、if($lastact == ""){$lastact = 0;}; を挿入。

ツールを使ってSQLiteのDBを作成し、db.inc.php内記載のSQL文3つ
「CREATE TABLE BASE、CREATE TABLE RECENT、CREATE TABLE NOTE」を使って、
テーブルを作成。

filesフォルダにダウンロードさせたいファイルを入れる。

あとはアップロードして、/xfm/ファイル名 にアクセスすれば、
ダウンロードページが表示されます。


軽く触ってみて思ったこと。

config.inc.phpで、「ログ管理モード」の記載があるが、
どうやって「ログ管理モード」に入るのか不明。

集計結果の表示にパスワード認証をかける設定にしても、
パスワードを聞いてこず、集計結果が表示される。
0850nobodyさん2009/10/08(木) 09:17:54ID:???
>db.inc.phpの「if($date != date('Ymd', $lastact))」部分でエラーが出るので、
noticeじゃなくて?
0851nobodyさん2009/10/08(木) 10:18:09ID:???
>>850
ERRORでなく、NOTICEだったかもしれません。

その後。
自動的にダウンロードが始まります・・・・と出るが、自動で始まらない。
この点、修正が必要ですね。
0852nobodyさん2009/10/08(木) 10:50:07ID:???
>>819
まとめました。

インストール :
1行目が<?xmlで始まるPHP(複数個)
<?をPHPと認識して処理されてしまうのが問題なので、
<?php echo '<?xml version="1.0" encoding="utf-8"?>'; ?> に書き換える。

PHP5環境の場合、ファイルの初回ダウンロード時に
db.inc.phpの「if($date != date('Ymd', $lastact))」部分でNOTICEエラーが出るので、
前に、if($lastact == ""){$lastact = 0;}; を挿入。

dl_thanks.php のHEADセクション内に、
<meta http-equiv="Refresh" content="3;URL=<?php $this->put('dl_link'); ?>" />
を追加することで、3秒後に自動ダウンロード。

ツールを使ってSQLiteのDBを作成し、db.inc.php内記載のSQL文3つ
「CREATE TABLE BASE、CREATE TABLE RECENT、CREATE TABLE NOTE」を使って、
テーブルを作成。

filesフォルダに公開ファイルを入れる。

xfmフォルダ下全てをアップロード

使い方 :
・/xfm/ファイル名 で、ダウンロード画面が表示
・/xfm/stat で集計ページ表示
・ログ管理モードon/offは無効。(configには残っているがコードは無い)
・パスワード認証が通ると、ログの削除/編集が可能になるが、呼出方法不明。
0853nobodyさん2009/10/08(木) 12:11:55ID:HKU7amRg
select 10 as x union select 11 as x union ...(繰り返し)... union select 100 as x

↑のクエリを簡潔に書く方法教えてください
0854nobodyさん2009/10/08(木) 12:22:46ID:???
>>853
for文
0855nobodyさん2009/10/08(木) 12:27:36ID:???
>>853
何のクエリ?
0856nobodyさん2009/10/08(木) 12:49:11ID:HKU7amRg
>>855
300-0000010〜300-0000100
300-0001200〜300-0001300
256-0000800〜256-0000900
みたいな口座の連番があって、
その中である条件にあてはまる口座だけ取りだしたい。
テーブルが持っているのは、口座の支店番号(上3桁)と
連番の開始、終了の下7桁だけ。
とりあえず有効範囲にある口座番号を持つ表を生成して、
そこからWHERE句とINNER JOINを使って条件にあてはまるのを出したい。
0857nobodyさん2009/10/08(木) 14:49:29ID:???
>>856
例えば300-0001234を抽出
SELECT * FROM table
WHERE 支店番号 = '300' AND '0001234' BETWEEN 連番の開始 AND 連番の終了
あとの条件をくっつけていく

PHP関係なくいけるんちゃう?
0858nobodyさん2009/10/08(木) 18:16:45ID:MSKkwYby
function getValidationScript ($options=NULL){
return array("var regex=".$this->regex.";\n" ,
" { jsVar } != ' ' && ! regex.test( { jsVar } )" );
}

失礼ですが質問させて下さい
getValidationScriptというのを調べまくったのですが満足いく説明が得られず、英語サイトまで行ってなんとか少し分かりました
どうやら配列を返し、その配列の第2引数に検証の正否を判定するための条件式を含めるようです
で、上のコードなのですが、第2引数の意味が分かりません
PEARのQuickForm.php自体の中のgetValidationScript関数も確認したのですが、物凄く長く難しく、自分には理解が出来ませんでした
ただ、$testが使われているというのは分かりました

{ jsVar }というのは何なのでしょうか?
意味が分からないだけでなく、コレが何の形なのかも分かりません
JavaScriptならばオブジェクトリテラルだという事は分かるのですが、PHPでは分かりません

で、この第2引数ですが、{ jsVar }というものが空または正規表現.testが無ければ・・・何を返すのでしょうか?
検証の正否を判定するための条件式を含めるという事ですが、TRUE、FALSEとかでしょうか?
0859nobodyさん2009/10/08(木) 18:21:10ID:???
JavaScriptのコードを返しているだけじゃないの?
jsVarはあとで置換でもされるのかと
0860nobodyさん2009/10/08(木) 21:20:11ID:MSKkwYby
では、{ jsVar}の形はオブジェクトリテラルか何かを表しているのでしょうか?
QuickForm.phpのソースを見た感じでは分かりませんでしたが、何かそういうの作っているんでしょうかね・・・
0861nobodyさん2009/10/08(木) 21:35:20ID:???
フォームの入力値チェックでは?
0862nobodyさん2009/10/08(木) 21:51:13ID:???
>>860
紛らわしいが{jsVar}は置換用のプレースホルダ
フォーム要素のプロパティに置換される
RuleRegistry.php の HTML_QuickForm_RuleRegistry::getValidationScript() を読むといい
0863nobodyさん2009/10/08(木) 22:22:56ID:MSKkwYby
>>862
わぉ、ほんとだ{jsVar}がありました
ありがとうございました

ではこのコードは、
Returns the javascript test (the test should return true if the value is INVALID)
Return : first element is code to setup validation, second is the check itself
という事のようなので、
" { jsVar } != ' ' && ! regex.test( { jsVar } )" の検証の正否を求めて、つまり空やNULLでなければTRUEを返すという事ですね?
あれ、INVALIDって事は逆ですかね?
空またはNULLであればTRUEを返すのかな?
ごめんなさい、分からなくなりました・・・


0864nobodyさん2009/10/09(金) 00:46:53ID:prJCc7FF
値が50個ほど入った配列があり、この配列から任意の個数の値を取り出して、
「組み合わせを生成した配列」を出力するをするという処理を実装したいと思っています。

例えば、
 $data = array('1','2','3');
という配列から、変数$outputに2個取り出すとすれば、
$output[0][0] = '1';
$output[0][1] = '2';

$output[1][0] = '1';
$output[1][1] = '3';

$output[2][0] = '2';
$output[2][1] = '3';
という組み合わせが重複しない、全3パターンの出力が欲しいのです。

取り出す個数が固定なら、forループのネストで実現できそうなのですが、任意の個数が欲しいので、いい処理方法が浮かびません…
ぶしつけな質問で申し訳ないのですが、ご存知の方がおられましたら、ぜひともご教授いただけたらと思います。
よろしくお願いいたします。
0865nobodyさん2009/10/09(金) 00:52:14ID:???
>>864
http://www.google.com/search?hl=ja&q=combination+algorithm
0866nobodyさん2009/10/09(金) 03:43:14ID:prJCc7FF
色々試した結果、結局できなかったので、マニュアルページにある「全組み合わせを出力する関数」を改悪して作りました。
無駄が多すぎる…

//http://www.php.net/manual/ja/ref.array.phpより拝借
function combinations2($elements,$anyvalue){
  if(is_array($elements)){
    $combinations=array(array());
    foreach($elements as $element){
      $new_combinations=array();
      foreach($combinations as $combination){
        $new_combination=array_merge($combination,(array)$element);
        array_push($new_combinations,$new_combination);
      }
      $combinations=array_merge($combinations,$new_combinations);
    }

    $combinations_key = array_keys($combinations);
    $combinations_size = count($combinations_key);
    for($i=0;$i<$combinations_size;$i++){
      $sn = $combinations_key[$i];
      if($anyvalue != count($combinations[$sn])){
        unset($combinations[$sn]);
      }
    }

    return $combinations;
  }else{
    return false;
  }
}
0867nobodyさん2009/10/09(金) 05:19:57ID:???
>>864
PHPでブルートフォースアタックしちゃだめよ
0868nobodyさん2009/10/09(金) 08:19:27ID:SDpPJ8L7
apache最新版うpあげ
http://sourceforge.jp/magazine/09/10/07/1133258
0869nobodyさん2009/10/09(金) 08:47:00ID:???
>>867
あぁ、そうか何の為にこんなコードが必要なのかと思ったら、暗号解読に使うつもりなのか・・・
0870nobodyさん2009/10/09(金) 10:32:02ID:???
>>866
$data = array('1','2','3','4','5');
print_r (combinations3( $data, 3));

function combinations3( $array , $num ) {
$n = count($array);
$x = (1 << $num ) -1;
$ret = array();
while ( ! ($x & ~( (1 << $n ) -1 ))){
$ret[] = arrayset($x,$array,$n);
$x =nextp($x);
}
return $ret;
}
function nextp($x) {
$s =$x & -$x;
$r = $x + $s;
$n = $r & -$r;
return ($r | ((floor($n/$s )>>1)-1));
}
function arrayset($x,$array,$n){
$r = array();
for( $i =1;$i<= $n;$i++){
if($x & 1) $r[] = $array[$i-1];
$x = $x >>1;
}
return $r;
}
0871nobodyさん2009/10/09(金) 10:55:42ID:tvzB35Y7
おねがいします
シェル関数を使い、PHPを実行させたいのです

$command = 'php /virtual/hoge/hoge/hoge.php';
$output = shell_exec("{$command} 2>&1");
print_r ($output);

これを実行すると

Warning: shell_exec() [function.shell-exec]: Unable to execute

このようなエラーになります
$command の中身をlsとかtopにしたらちゃんと実行されます
PHPからPHPをたたく?ということは置いておいて
$command の記述が間違えているのでしょうか?
0872nobodyさん2009/10/09(金) 10:57:15ID:SDpPJ8L7
オリジナルの暗号化を作りたいんだけど誰か↓を暗号化できる人いませんか?

abcd12345
0873nobodyさん2009/10/09(金) 10:58:54ID:???
人に作ってもらったらオリジナルじゃないじゃん
0874nobodyさん2009/10/09(金) 11:00:03ID:???
オリジナルを作りたいのに他人に聞いてどうするよ
0875nobodyさん2009/10/09(金) 11:00:46ID:mskr8tQ2
参考にするだけですよ^^
0876nobodyさん2009/10/09(金) 11:02:28ID:???
参考=コピー
0877nobodyさん2009/10/09(金) 11:06:37ID:???
暗号なんて研究者レベルのことしたいってのに
こんなとこで質問するなんて釣りだろ
おまえら釣られんなよw
0878nobodyさん2009/10/09(金) 11:11:56ID:???
md5は解析されるから使っちゃだめって言われました
0879nobodyさん2009/10/09(金) 11:30:35ID:???
>>871
phpをフルパスにするとどうなる?
0880nobodyさん2009/10/09(金) 11:37:26ID:???
こういうサイトもあるからmd5を信用したらダメですよ
ttp://www.kiyori.co.jp/MD5Reverse/Default.aspx
0881nobodyさん2009/10/09(金) 11:41:57ID:???
md5は暗号化ではなく一方向のハッシュ化です
復号できないものを暗号とはいいません
0882nobodyさん2009/10/09(金) 11:46:10ID:???
>Enter your keyword which want to be convert to MD5 hash.
0883nobodyさん2009/10/09(金) 11:51:56ID:tvzB35Y7
>>879
ありがとうございます
さっそく実行しましたが同じエラーが出ました
0884nobodyさん2009/10/09(金) 12:13:18ID:???
php -qオプション要るんじゃない?
やったことないけど
0885nobodyさん2009/10/09(金) 13:20:47ID:tvzB35Y7
>>884
ありがとうございます
同じエラーが出たので-fオプションで試したところ

sh: fork: Resource temporarily unavailable

このようなエラーに変わりました
これはどういうことでしょうか?
0886nobodyさん2009/10/09(金) 13:24:19ID:???
ぐぐれよ
0887nobodyさん2009/10/09(金) 13:39:16ID:???
ググレカス君こんにちは
0888nobodyさん2009/10/09(金) 13:49:33ID:???
>>885
実行しているのは自分で管理しているサーバ?
レンタルサーバだとプロセス数で制限かかってたりするからforkできなかったりするよ
0889nobodyさん2009/10/09(金) 13:57:42ID:???
forkって?
0890nobodyさん2009/10/09(金) 14:32:05ID:???
ぐぐれカス
0891nobodyさん2009/10/09(金) 14:32:38ID:???
スパゲティ食べるやつ
0892nobodyさん2009/10/09(金) 14:36:12ID:l1yyeg00
ID出し忘れましたforkってなんですか?
■ このスレッドは過去ログ倉庫に格納されています