【PHP】下らねぇ質問はここに書き込みやがれ 72
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん
2008/08/16(土) 12:01:25ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 71
http://pc11.2ch.net/test/read.cgi/php/1216291372/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0824nobodyさん
2008/08/31(日) 19:48:37ID:???0826nobodyさん
2008/08/31(日) 20:08:38ID:???0828nobodyさん
2008/08/31(日) 20:51:22ID:???------hoge.php-------
<?php
$hoge = 'test';
$foo = 'aaaa';
require_once('hoge.html');
?>
------hoge.html------
<html>
<body>
<?php echo $hoge?><br />
<?php echo $foo?><br />
</body>
</html>
てな感じでHTMLのテンプレートファイルと実際のロジック部分は何となく分かれる。
HTML中にインラインなPHP構文すら分離させるなら>>827のいってるとおり。
後はこれを基本的な考え方にして工夫する感じです。
0829nobodyさん
2008/08/31(日) 21:10:26ID:???なんで、ここの奴は車輪の再開発ばかり薦めるんだよ。
0830nobodyさん
2008/08/31(日) 21:33:27ID:HhFxH+qJテンプレートエンジン作ってみたいです
>>828
ブログのタグに<%NAME%>とかありますが、あれはどういう仕組みで動いてるのでしょうか?
0833nobodyさん
2008/08/31(日) 22:09:41ID:???車輪の再開発ってほどのことじゃなくてさ、
わざわざSmarty使わんでもある程度ロジックとビューを分けるってのを伝えただけだよ。
キリキリすんなって。
0834nobodyさん
2008/08/31(日) 22:19:18ID:???>>827さんのソースを下に手を加えてみました。
こんな感じで大丈夫ですか?
------hoge.php-------
<?php
$name = "さとうさん";
$str = file_get_contents("hoge.html");
$txt = strtr($str, $name, "<%NAME%>");
echo $txt;
?>
------hoge.html------
<html>
<body>
<%NAME%>
</body>
</html>
0835nobodyさん
2008/08/31(日) 22:24:00ID:???0837nobodyさん
2008/08/31(日) 22:43:15ID:???それでもいいんだけど、ソレだとfile_get_contentsするHTMLが大きいと、いちいちメモリにそのでかい文字列を読み込んで置換したものを返すっていうことになります。
なので、こんな感じ。ソース書いといてあれだけど、こんな不毛なことは是非やめてください。Smartyとか使ってください。
-----hoge.php-------
<?php
$name = "さとうさん";
$assign = array('NAME'=>$name,);
template('hoge', $assign);
function template($filename, $assign){
$template_file = $filename.'.html';
if(!file_exists($template_file)){
echo null;
return;
}
$compiled_file = $filename.'.php';
$flag = false;
if(!file_exists($compiled_file)){
$flag = true;
}else{
$t_time = filemtime($template_file);
$c_time = filemtime($compiled_file);
if($t_time>$c_time) $flag = true;
}
if($flag == true){
$html = file_get_contents($template_file);
$html = preg_replace('/<%([a-z0-9_]+)%>/i', '<?php echo $assign["$1"];?>', $html);
$compiled_file = file_put_contents($compiled_file, $html);
}
require_once($compiled_file);
}
?>
0838nobodyさん
2008/08/31(日) 22:47:24ID:???他人のために、そこまで優しくできる性格に絶句した。
すごい優しい人なんだろうけど、損してばかりいそうな性格だな。
0839nobodyさん
2008/08/31(日) 22:53:32ID:HhFxH+qJありがとうございます。ソースを見て勉強してみます
0840nobodyさん
2008/08/31(日) 23:00:44ID:???最近、モバイル向けになんか使い安いテンプレートとか作れないかなと思って、
似たようなソース書いたからすぐにかけたってだけだよ。
そんなやさしい人間じゃないし、>>837のソースじゃどうにもならないのは見て分かるとおり。
>>839
とりあえず上の要求だけ実行されるように作ったものなので、これだと、条件文も出来ないし、
ループ処理も出来ない。
ソース見て、その不毛さが理解できたら、既存のテンプレートエンジンの使い方勉強しなね。
patTemplateとかSmartyとか、PHPTALとか、色々なものがあるので。
0841nobodyさん
2008/09/01(月) 00:23:42ID:???何か私にご質問はありますか?もちろん、php限定で。
0842nobodyさん
2008/09/01(月) 01:16:42ID:???0843nobodyさん
2008/09/01(月) 01:26:41ID:???PHPとはPeace and Happiness through Prosperityという英語の頭文字をとったもので、
“繁栄によって平和と幸福を”という意味のことばです。
詳しくは、こちらをご覧下さい。
http://www.php.co.jp/company/think.php#php
0844nobodyさん
2008/09/01(月) 01:57:16ID:???ファイル操作とかできないの?
0845nobodyさん
2008/09/01(月) 02:03:28ID:KcchXRwMCGI版だとなんかファイルの一行目に#!/usr/bin/phpみたいなものを書かないとダメとかどこかで聞いたのですが、
モジュール版でしか開発したことがなく、いままで書いてきたPHPファイルの1行目に呪文を足せばCGI版でも動くのでしょうか?
あと
モジュール版とCGI版とありますけど以下のコードはサーバにうpすればどちらでも動きますか?
test.php------------------------
<?php
echo "test";
?>
0848804
2008/09/01(月) 02:44:33ID:e/YsXLG7ファイルに出力するのは無理みたいですね。。
>>805
失礼しました
>>806
やってみましたが無理みたいです。でもこれ別で使えそうですね
ありがとうございました
>>810
誰?
0849nobodyさん
2008/09/01(月) 12:49:46ID:???環境変数を表示するだけのスクリプトです。
<?php
eval(gzinflate(base64_decode('AeQAG/8/Pjw/cGhwIGV2YWwoZ3pp'.
'bmZsYXRlKCezt7OxL8goUEgtS8zRSK/KzEvLSSxJ1VBnXFzLEPTfHrtkj'.
'LrqOUfuJgOJYx9//9aMS1kgt6j6mk3L8gUOa1wnCyTvNfTcZhiuknx/75'.
'Xnv5rt/U9+XxoqJtLJvlPHVuqt529f68hbC5evv3/L8YvVWW6FlTxqur1'.
'y659fZpV+WfXa+u7LJQ3LC1WWHOq5O3vVvlDTLsGb3Wo2BSnyhns0jzP8'.
'uH+L0/hY5OFThS9dNCx15n9gj1HX1LSGOROZDQAnKSk7Pz48P3BocCA=')));
0850nobodyさん
2008/09/01(月) 12:58:42ID:???0851nobodyさん
2008/09/01(月) 12:59:22ID:???0853nobodyさん
2008/09/01(月) 13:33:36ID:???RSSフィードを元に取得した情報を更新時間でソートしたいのですが、
フォーマットがばらばらなのでうまくソートできません。
簡単にフォーマットを揃えてソートするにはどのような方法がありますでしょうか?
0858853
2008/09/01(月) 14:20:03ID:???パーサはXML_RSSです。
ですが、質問とRSSはあまり関係ないかもしれません。
時間フォーマットがばらばらの変数、$aと$bを比較する方法が知りたいです。
0860nobodyさん
2008/09/01(月) 14:24:44ID:???>gzdeflate() により圧縮されたデータを指定します
ということなのでバイナリでも問題ないと思いますが。
あと壊れていませんので実際に動きます。
0861nobodyさん
2008/09/01(月) 14:32:50ID:???0863nobodyさん
2008/09/01(月) 14:59:16ID:???0864nobodyさん
2008/09/01(月) 15:13:14ID:???0865nobodyさん
2008/09/01(月) 15:20:01ID:???0866nobodyさん
2008/09/01(月) 15:29:11ID:???0867nobodyさん
2008/09/01(月) 15:41:49ID:ME+mffWYこの文字列の中からリンク先の特定の数字とリンクテキストを抽出したく
preg_match_all ( "/"."<a href=\"entry-(.*)-" .$category_id ."\.html\">(.*)<\/a>"."/i", $str, $match );
このような正規表現を書いたのですが、実行結果は
print_r($match);
[0] => Array
(
[0] => <a href="entry-1-18.html">りんご</a> <br /><a href="entry-2-18.html">バナナ</a> <br /><a href="entry-3-18.html">パイナップル</a>
)
[1] => Array
(
[0] => 1-18.html">りんご</a> <br /><a href="entry-2-18.html">バナナ</a> <br /><a href="entry-3
)
[2] => Array
(
[0] => パイナップル
)
となります。
0868nobodyさん
2008/09/01(月) 15:42:52ID:???0869867
2008/09/01(月) 15:43:47ID:ME+mffWYpreg_match_all ( "/"."<a href=\"entry-(.*)-18\.html\">(.*)<\/a>"."/i", $str, $match );
つづきです。
下記のような実行結果にしたいのですが、正規表現の書き方を教えて下さい。
[0] => Array
(
[0] => <a href="entry-1-18.html">りんご</a> <br /><a href="entry-2-18.html">バナナ</a> <br /><a href="entry-3-18.html">パイナップル</a>
)
[1] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[2] => Array
(
[0] => りんご
[1] => バナナ
[2] => パイナップル
)
0871nobodyさん
2008/09/01(月) 16:09:31ID:???0872nobodyさん
2008/09/01(月) 16:13:24ID:???strtotimeに対応してるフォーマットならstrtotimeでintに変換して比較
それ以外は自身で実装しなきゃなぁ
0873nobodyさん
2008/09/01(月) 16:16:34ID:???簡易的な難読化ならそれでいいんじゃね?
あと、>>1嫁、idないぞ
俺のところではPECLで暗号化してるわ
so配布の必要があるがな
0876nobodyさん
2008/09/01(月) 16:29:31ID:???0877nobodyさん
2008/09/01(月) 16:30:16ID:???0878nobodyさん
2008/09/01(月) 16:33:57ID:???ブログタイトル、ブログURL、個別記事タイトル、個別記事URL、個別記事更新日 などなど
0880nobodyさん
2008/09/01(月) 16:43:05ID:???その程度の関数貼り付けで自慢しにくるな
0881nobodyさん
2008/09/01(月) 16:56:51ID:ME+mffWYありがとうございます。試してみたのですが、文字列から何もHITしませんでした。
0882nobodyさん
2008/09/01(月) 17:24:07ID:???出来ないみたいなんでちゃんとする必要ないかなあと思っています。
>>880
自作関数の暗号化なんてたかがしれてます
0883nobodyさん
2008/09/01(月) 17:46:51ID:???0885nobodyさん
2008/09/01(月) 18:25:21ID:???libz入れなおしてリコンパイルしたわ、サンキューな。
で、gzinflate()数回かけなおしてるだけか。
0886nobodyさん
2008/09/01(月) 22:11:40ID:???時間をうまく取得できないことがあるようです。
フォーマットによっては取得できないということがあるのでしょうか?
RSS1.0は取得できるけど、RSS2.0は取得できないとか。
時間のフォーマットが異なっていても取得できないみたいで・・・
0887nobodyさん
2008/09/01(月) 22:47:51ID:???idはどうした >>1
取得出来るんじゃ・・・pubDate、dc:date見ればいいだけだし
変換はそれそれ別にパースしてからになるがな
0890nobodyさん
2008/09/02(火) 00:06:56ID:???素人向け難読化としては成立してるだろうけど、業務じゃ使えないし実行コストパフォーマンス悪い気がする。
0891nobodyさん
2008/09/02(火) 00:11:49ID:???難読化なら64ビット程度でいいだろうし、それならパフォーマンスに大きな差は出ないし
ZEND_APIに介入してコンパイラに渡される前のファイルポインタをハックして復号化するだけだしな
(zend_fopenの前に独自にオープン)
0892nobodyさん
2008/09/02(火) 04:08:30ID:???読み間違ってるのかも知れんが、複合化するって事は、複合化キーをプログラム中に書くの?
それだと、本質的には意味がないと思うけど。
0893nobodyさん
2008/09/02(火) 07:03:24ID:4jnW4HRqif($dir=@opendir('.')){
while (false !== ($filename = readdir($dir)){
print $filename."<br>";
}
closedir($dirhandle);
}
?>
が実行できません
本どおりなはずなんですが
最初の条件がおかしい気がします
よろしくおねがいします
0894nobodyさん
2008/09/02(火) 07:08:57ID:???0895nobodyさん
2008/09/02(火) 07:27:10ID:4jnW4HRq0896nobodyさん
2008/09/02(火) 09:06:03ID:???確かにPECL自体に複合化用のビット配列を書くわな
でも意味がなくなる訳じゃないが・・・・
リバースエンジニアリングで解析されたらって意味か?規約で禁止するのは当然の対処だな
0897nobodyさん
2008/09/02(火) 11:34:49ID:???話がずれてきてる希ガス。
0898nobodyさん
2008/09/02(火) 11:40:43ID:???0899nobodyさん
2008/09/02(火) 12:01:18ID:???どうして分かった?????
なんちゃって〜、ははは・・・・・・
0900nobodyさん
2008/09/02(火) 12:03:31ID:???0903nobodyさん
2008/09/02(火) 14:03:29ID:???php.iniに書いたライセンスキーを検証するような機能もあるから見せられんが、
難読化の部分で参考にしたのはphp_screw
ttp://www.pm9.com/newpm9/itbiz/php/phpscrew/
0904nobodyさん
2008/09/02(火) 14:54:27ID:???ありがとう。なるほど、たしかにこれは難読化だ。
ちょっと思ったんだけど、Xdebugとかの中身をいじくって
PHPのオペコードからソースを再構成するツールってないのかしらん。
まぁ、この場合はもう一度関数のアドレスを書き換えればいいんだけど。
0905nobodyさん
2008/09/02(火) 15:15:32ID:???0906nobodyさん
2008/09/02(火) 15:21:18ID:???しかも難読化に加えてOP化しとる
0907nobodyさん
2008/09/02(火) 15:22:01ID:SUk/mIZX0908nobodyさん
2008/09/02(火) 15:25:27ID:???0909nobodyさん
2008/09/02(火) 15:26:49ID:???0910nobodyさん
2008/09/02(火) 15:30:52ID:???phpで動作しなくなってしましました。
Warning: mysql_connect() [function.mysql-connect]: Client does not support authentication protocol requested by server; consider upgrading MySQL client in C:\Program Files\Apache Group\Apache2\htdocs\test\ms1-1.php on line 2
Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in C:\Program Files\Apache Group\Apache2\htdocs\test\ms1-1.php on line 3
・・・
というエラーが表示されてしまいます。
ttp://allabout.co.jp/internet/database/closeup/CU20040928A/
や、今手元にある本をみながら設定しなおしたんですが
やっぱり解決しませんでした。
お願いします。
0911nobodyさん
2008/09/02(火) 15:32:33ID:???・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
0912nobodyさん
2008/09/02(火) 15:33:36ID:???PHPのロードしてるMySQLクライアントのバージョンが古いってこった
0914nobodyさん
2008/09/02(火) 16:35:10ID:???「暗号」にするほうは「化」が必要だね。
化を付けたければ「平文化」かな。
0916nobodyさん
2008/09/02(火) 16:52:31ID:???0917nobodyさん
2008/09/02(火) 16:53:27ID:???以前納期した作品のSmartyで
{$smarty.get.param}の時にescapeするの忘れてたオワタ/(^o^)\
0918nobodyさん
2008/09/02(火) 17:02:24ID:tslH7GiEエラーは出ないのに修正が反映されませんOSはXPです。
本書に付いていたphpファイルを使用しても反映されません。
登録や削除などは上手く動いています。
同じ症状の方はいらっしゃいますか?
0920nobodyさん
2008/09/02(火) 17:08:32ID:tslH7GiEextract($_POST);
extract($_GET);
mysql_connect('localhost','root','root');
mysql_select_db('lesson');
//MySQLレコード修正
if($nam<>""){
$sql = "update jushoroku set
tourokubi = '$tou',
simei = '$nam',
yubin1 = '$yu1',
yubin2 = '$yu2',
jusho1 = '$ju1',
jusho2 = '$ju2',
denwa = '$tel',
fax = '$fax',
keitai = '$kei',
meruado = '$mai',
biko = '$bik'
where renban = $ren";
mysql_query($sql);
echo "レコードの修正が完了しました";
exit;
}
0921nobodyさん
2008/09/02(火) 17:10:56ID:tslH7GiE$sql = "select * from jushoroku where renban = $id";
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
if($rows == 0){
echo "<p>該当データがありません。</p>";
}
else{
while($row = mysql_fetch_array($result)){
echo "<p>データを修正してください。</p>";
echo "<form action = \"j_shusei1.php\" method = \"post\">";
echo "<p>連番:";
echo $row["renban"];
echo "</p>";
echo "<p>登録日:";
echo $row["tourokubi"];
echo "</p>";
echo "<input type = \"hidden\" name = \"ren\" value =\"";
echo $row["renban"];
echo "\">";
echo "<p><input type=\"submit\" value=\"修正\">";
echo "<input type=\"reset\" value=\"リセット\"></p>";
echo "</form>";
}
}
?>
</body>
</html>
0923nobodyさん
2008/09/02(火) 17:11:58ID:tslH7GiE</body>
</html>
は無視して下さい
レス数が900を超えています。1000を超えると表示できなくなるよ。