【PHP】下らねぇ質問はここに書き込みやがれpart15
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん
2006/01/14(土) 20:06:11ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは流れを見て970/980/990の誰かが建てれ
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
本スレ【PHP】質問スレッドpart32【php】
http://pc8.2ch.net/test/read.cgi/php/1136276300/
前スレ【PHP】下らねぇ質問はここに書き込みやがれpart14
http://pc8.2ch.net/test/read.cgi/php/1134868212/
過去スレは>>2
FAQは>>3
0810nobodyさん
2006/02/02(木) 01:14:41ID:???0811nobodyさん
2006/02/02(木) 01:18:35ID:???0812nobodyさん
2006/02/02(木) 03:08:48ID:???//
// 西暦を和暦に変換する
//
include_once("display.inc");
include_once("input.inc");
include_once("calc.inc");
include_once("result.inc");
if (empty($_GET['yyyy'])):
$_GET['yyyy'] = "";
endif;
display_input_area();// 入力エリアの表示
if (!empty($_GET['yyyy']) && input_is_valid()):// 妥当性チェック
$result = calc_gengou();// 元号の計算
display_result($result);// 元号の表示
endif;
?>
↑を実行したら、
Warning: main(display.inc): failed to open stream: No such file or directory in D:\Program Files\xampp\htdocs\~test\part1\chap2\test8.php on line 5
Warning: main(): Failed opening 'display.inc' for inclusion (include_path='.;D:\Program Files\xampp\php\pear\') in D:\Program Files\xampp\htdocs\~test\part1\chap2\test8.php on line 5
というエラーが表示されました。
なにがいけないんでしょうか?
同じディレクトリにdisplay.incはあります。
PHPは4.4.1です。
0814nobodyさん
2006/02/02(木) 09:04:07ID:???たぶん、本当の答えは「テンプレートエンジンを使え」だと思う。
文字列の連結って結構わけわかめになるからねー。
気持ち悪いのは分かるよ。
0816軟式PHP
2006/02/02(木) 10:19:32ID:???0817nobodyさん
2006/02/02(木) 10:32:23ID:20uSXYKW0819nobodyさん
2006/02/02(木) 11:53:28ID:???試しに
<?php
var_dump(glob("*.inc"));
?>
ってのを動かしたとき、表示内容の中にdisplay.incはあるか?
0820nobodyさん
2006/02/02(木) 12:11:49ID:???>>819
array(4) { [0]=> string(8) "calc.inc" [1]=> string(11) "display.inc" [2]=> string(9) "input.inc" [3]=> string(10) "result.inc" }
と表示されました。
今やってみたらなぜか動きました。
何がいけなかったんだろう?
お騒がせしました。
0821nobodyさん
2006/02/02(木) 13:48:17ID:???0822nobodyさん
2006/02/02(木) 13:59:08ID:???0823nobodyさん
2006/02/02(木) 14:54:38ID:???これをPHPのecho等でhtmlで出力する時にどう表現すればいいのかを知りたいのですが
0824nobodyさん
2006/02/02(木) 14:56:54ID:???0827nobodyさん
2006/02/02(木) 15:20:24ID:???だからまずは、
複数のフレームを1つのHTMLファイルで実現する手段を見つけなよ。
それさえ出来れば、後のことは引き受けた。
0828nobodyさん
2006/02/02(木) 15:21:02ID:???何も難しく考えることはない。
フレームなんてブラウザが同じ画面に構成してるだけなんだから。
index.php、left.php、right.phpという、それぞれ元のhtmlを吐き出す
PHPスクリプトからはじめてみな。
0829nobodyさん
2006/02/02(木) 15:25:36ID:???んじゃ、index.phpを
index.php?f=main、index.php?f=left、index.php?f=right
で呼び出した時にそれぞれのフレームの内容を吐くようにつくれば?
ただHTMLのフレームって、ファイルをまとめるためじゃなくて、
寧ろ分けたままのものを、表示の際にまとめるための手段だと思うんだけど。
0830nobodyさん
2006/02/02(木) 15:45:28ID:???結構長くなってしまうのでもうちょっと短くする方法はありませんでしょうか?
0832nobodyさん
2006/02/02(木) 16:57:21ID:???こんなのも
http://jp.php.net/http_build_query
0833nobodyさん
2006/02/02(木) 20:01:06ID:ix6GldKp<input type="hidden" name="ad" value="[email protected]">
<input type="hidden" name="ad" value="[email protected]">
<input type="hidden" name="ad" value="[email protected]">
・
・
・
という風な値をフォーム送信時に、
$ad=
[email protected]\n
[email protected]\n
[email protected]\n
[email protected]\n
・
・
・
";
という風に格納したいのですがやり方がわかりません。
ググッてみたんですが、検索キーワードが悪いのか、目的地にたどりつけず・・・
どなたか教えてください
0834nobodyさん
2006/02/02(木) 20:04:51ID:???0835833
2006/02/02(木) 20:42:59ID:ix6GldKpありがとうございます。解決しました。
0836nobodyさん
2006/02/02(木) 20:51:18ID:???0837nobodyさん
2006/02/02(木) 21:01:14ID:???0838nobodyさん
2006/02/02(木) 21:09:46ID:E0bq5JaA0839nobodyさん
2006/02/02(木) 22:02:31ID:AVLZG/Ha悪用するわけじゃないけど、荒らしスクリプトみたいなのってどういう仕組みなのかなって思って。
0843nobodyさん
2006/02/02(木) 22:19:36ID:???>>840
荒しとヒントの区別の付かない人には無理だと思う。
0845nobodyさん
2006/02/02(木) 22:21:44ID:???0846nobodyさん
2006/02/02(木) 22:28:36ID:???0848nobodyさん
2006/02/02(木) 22:29:27ID:???0849nobodyさん
2006/02/02(木) 22:30:35ID:???0850nobodyさん
2006/02/02(木) 22:33:54ID:???0851nobodyさん
2006/02/02(木) 22:33:59ID:???0852nobodyさん
2006/02/02(木) 22:38:49ID:???0853nobodyさん
2006/02/02(木) 22:44:26ID:???実際にどこかのサーバで動かすスクリプトの開発環境として使用するなら、
そのサーバの環境に合わせる。(エンコード周りとか結構重要)
「とりあえず、遊んでみるだけ」って言うなら、当面はデフォで桶
0854nobodyさん
2006/02/02(木) 22:47:40ID:???・・そんなに使ってるのか!?
0857nobodyさん
2006/02/02(木) 22:52:27ID:5dJz86s1<?php
$var_A = 1;
function Test() {
global $var_A; //グローバル文で宣言
echo $var_A;
}
Test();
?>
しかし、関数Aで定義した変数を、関数Bで使う方法が分かりません。
function A() {
$var = "hoge";
}
function B() {
print $var;
}
これで $var を表示する方法が知りたいのです。
検索をかけても、グローバル変数を関数内で呼び出す方法が載っているサイトばっかりひっかかって、
下記の方法がなかなか見つからないのです。
ご教示お願いします。
0858857
2006/02/02(木) 22:55:15ID:???後者は、
A();
B();
を実行した場合についてです。
0859857
2006/02/02(木) 22:59:26ID:???「global $var;」を宣言したら使えました。
phpのスコープの概念が他の言語とかなり違っていて混乱していました。
global $var; は、
「グローバル変数 $var を 関数内で使用することを許可する。」というだけではなく、
「関数 $var を グローバル変数にする。」という処理も同時に行うという事なんですね。
自己解決でスレを汚して申し訳なかったです。
0860nobodyさん
2006/02/02(木) 23:35:23ID:???スコープの「概念」自体は他の言語と大差ないよ。
ただ、デフォルトがグローバルなのかローカルなのかの差はある。
0861857
2006/02/02(木) 23:47:17ID:???関数内での宣言がデフォルトでローカル変数の言語は使ったことがあったので良かったんですが、
グローバル変数を関数内でそのまま呼び出せない部分で混乱したようです。
| global $var; は、
| 「グローバル変数 $var を 関数内で使用することを許可する。」というだけではなく、
| 「関数 $var を グローバル変数にする。」という処理も同時に行うという事なんですね。
と考えていたのですが。
| ローカル変数 $var と グローバル変数 $var は別に存在する
| 関数で「global $var;」と宣言した場合には、その関数内ではグローバル変数の $var が使われる。
| 他の関数内でそのグローバル変数 $var を使いたい場合には、そっちも global $var; と宣言する必要がある。
とシンプルに考えたらなんだか理解した気になれました。
0862nobodyさん
2006/02/03(金) 00:00:10ID:???0863nobodyさん
2006/02/03(金) 00:13:21ID:???クラスにしてメンバ変数つかうのが妥当だと思われる。
0864nobodyさん
2006/02/03(金) 00:16:10ID:???0865857
2006/02/03(金) 00:19:30ID:???うんと、本来の「関数」ではないところに、
作業の流れを分かりやすくするために関数扱いにして
一番上で条件ごとにどの関数を呼び出すのかを列挙している感じに使ってます。
0866857
2006/02/03(金) 00:25:50ID:???関数から他の関数で使っている変数を呼び出す必要があるんです。
# 処理内容を順番に列挙
LoadFile();
if ($_POST['Type'] == "表") {
FileTable();
} else {
FileG();
}
# ファイル読み込む
function LoadFile {
$ファイル内容 = fopen("hogehoge.dat", "r");
fclose($ファイル内容);
}
# ファイルの内容を表にする
function FileTable {
〜ここで変数 $ファイル内容 を使う〜
}
# ファイルの内容をグラフにする
function FileG {
〜ここで変数 $ファイル内容 を使う〜
}
0867857
2006/02/03(金) 00:26:34ID:???# 処理内容を順番に列挙
LoadFile();
if ($_POST['Type'] == "表") {
FileTable();
} else {
FileG();
}
# ファイル読み込む
function LoadFile () {
$ファイル内容 = fopen("hogehoge.dat", "r");
fclose($ファイル内容);
}
# ファイルの内容を表にする
function FileTable () {
〜ここで変数 $ファイル内容 を使う〜
}
# ファイルの内容をグラフにする
function FileG () {
〜ここで変数 $ファイル内容 を使う〜
}
0868nobodyさん
2006/02/03(金) 00:31:58ID:???function LoadFile () {
return $handle = fopen("hogehoge.dat", "r");
}
$naiyou = LoadFile();
if ($_POST['Type'] == "表") {
FileTable($naiyou);
}
これじゃダメ?
0869nobodyさん
2006/02/03(金) 00:33:06ID:???print "$x[$y[2][1]]";
そうすると、パースエラーになってしまうようです。
Parse error: syntax error, unexpected '[', expecting ']' in /ディレクトリ階層/hogehoge.php on line 数字
原因を教えて頂けると幸いです。
0870857
2006/02/03(金) 00:36:49ID:???上級者の方はそういうコードを好まれるみたいですね。
自分の場合は、関数から引数を2つ出力できなかったり(配列使えばできるけど)するので
なんとなく867みたいなやり方がわかりやすい気になっちゃうんです。
自分のコードは脆弱性を作りやすい書き方みたいですので、他の人のを参考にして綺麗なコードを書くように心がけます。
0872869
2006/02/03(金) 00:47:34ID:???あ、すみません。
表現がおかしかったようです。
(誤) 配列$x に 二次元配列$y[2][1] の値を代入したくて、次のような式を書きました。
言葉で説明できないのでコードで書きますね。
このようなコードを1行に書きたいんです。
配列に配列をいれることをよくやるので1回一時的な変数にいれたりするとまどろっこしいので。
| $hoge = $y[2][1];
| $x[$hoge];
これを多くの言語では、$x[$y[2][1]] と書けばできるんですが、
phpではこのようにシンプルにやる方法はないのでしょうか?
0875無知ですまそ
2006/02/03(金) 02:01:46ID:SfkSG4GRif ($FORM{'mail'} ne 'aaa') { &error("パスワードが違います"); }
としたのだけど、aaaとbbb以外は違うとするにはどうすればいいのか教えてください。
0876無知ですまそ
2006/02/03(金) 02:02:53ID:SfkSG4GRでした。
0881nobodyさん
2006/02/03(金) 10:36:16ID:???GETとPOSTとSESSION以外で別ページに変数渡す方法ないでしょうか?
やりたいことは別PHPプログラムへ変数を渡すことです、
GETとPOSTはセキュリティの関係上使用したくありません、
変数を渡されるPHPプログラムは全く弄ることができないので、
SESSIONでも難しい状態です。
宜しくお願いします。
0882nobodyさん
2006/02/03(金) 10:48:39ID:???0883nobodyさん
2006/02/03(金) 11:14:29ID:???wrapper(1, 2, 3);
function wrapper() {
$args = func_get_args();
//return original($args);
//これでは original(1, 2, 3) ではなく original(array(1, 2, 3))
}
python かなんかだと配列渡すと勝手に展開してくれた記憶が。
同じようなことをやりたい。
0885nobodyさん
2006/02/03(金) 12:13:10ID:???渡されるプログラムをいじれないなら、渡されるプログラムが
受け取れる方法を確認するのが先じゃないのか?
つか渡されることを前提に作られていないなら get, post 以外は
無理だろ、ふつー。
0890nobodyさん
2006/02/03(金) 12:26:45ID:???こんな分割の仕方をする人がそのままの感覚でクラスを使ったら
めちゃめちゃメモリ食いのプログラムが出来上がる予感
0891nobodyさん
2006/02/03(金) 12:32:38ID:???0892nobodyさん
2006/02/03(金) 12:36:20ID:???0894nobodyさん
2006/02/03(金) 14:39:16ID:???今時そんな貧乏的なプログラミングする必要あるの?
どんな分割しようがこの時代において大差ないだろ。
そんなに、負荷が気になるなら eAccelerator でも使ってコンパイルすりゃいいじゃん。
そしたら分割がどうのなんてことによる差なんて殆どなくなるから。
0895nobodyさん
2006/02/03(金) 17:23:33ID:???と
$a =& $b;
って一緒ですか?
0897nobodyさん
2006/02/03(金) 17:57:08ID:???あの単なるラベルにしかなってないレベルの機能分けでクラスにしたら
大半の変数をメンバ変数に抱えてグローバルで持ち回る羽目になると思うし、
しかもそれをいちいちオブジェクトを通した間接参照することになる。
そういう状態になると、PHPってメモリを無駄に馬鹿食いする上に激遅になるんで
ホントにそのためだけにアクセラレーターなどを導入する羽目になりかねないと思う。
0898nobodyさん
2006/02/03(金) 17:58:27ID:???0899nobodyさん
2006/02/03(金) 19:47:52ID:QzQwZT7Xrequire_once "Auth/Auth.php";
function loginFunction()
{
/**
* HTML出力は、作成するアプリケーションに合うように、
* 変更してください。
*/
echo "<form method=\"post\" action=\"" . $_SERVER['PHP_SELF'] . "\">";
echo "<input type=\"text\" name=\"username\">";
echo "<input type=\"password\" name=\"password\">";
echo "<input type=\"submit\">";
echo "</form>";
}
$dsn = "mysql://user:password@localhost/database";
$a = new Auth("DB", $dsn, "loginFunction");
$a->start();
if ($a->getAuth()) {
/**
* サイトの出力はここ。
*/
}
動かないんだが、
テーブル指定してないのにつながるの?
教えて下さい。
0900nobodyさん
2006/02/03(金) 19:52:35ID:???エスパーさんお呼びですよ
0902nobodyさん
2006/02/03(金) 20:06:13ID:???答えは出てるんじゃまいか。
0903nobodyさん
2006/02/03(金) 20:30:19ID:???それ配布するつもりか?
プログラム言語触ったことないやつにはecho "";なんて意味不明だ。
別ファイルにhtml部分は書き出したほうがいいんじゃないか?
0904nobodyさん
2006/02/03(金) 20:56:05ID:???そういうことか、さんくす
あるところに=&を参照代入の演算子だって書いてあったから=&で1つなのかと思った
0906nobodyさん
2006/02/03(金) 22:40:41ID:???mb_ereg(preg_quote($a),"あと");
で
$a="あ";
だと真で
$a="あと";
だと偽
になるんですが両方とも真にしたいのです。原因わかる方いますでしょうか?
0908nobodyさん
2006/02/04(土) 01:09:37ID:???再現しない。普通にどっちも真になった。
SJISだ、と言ってるが、実はソースがSJISなだけでphp.iniの設定はSJISじゃなかったりしないか?
レス数が900を超えています。1000を超えると表示できなくなるよ。