【PHP】下らねぇ質問はID出して書き込みやがれ 82
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2009/03/09(月) 02:14:28ID:HyrthkeE過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 81
http://pc11.2ch.net/test/read.cgi/php/1234958956/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
0002nobodyさん
2009/03/09(月) 05:29:29ID:???【PHP】ID出さなくても質問OKなスレ【初心者歓迎】
http://pc11.2ch.net/test/read.cgi/php/1233590976/
↑
こちらはIDださないで質問するスレ
0003nobodyさん
2009/03/09(月) 10:41:46ID:???テンプレがたりねえだろksg
0004nobodyさん
2009/03/09(月) 12:32:31ID:???俺は携帯だからめんどい
0005nobodyさん
2009/03/09(月) 16:52:14ID:An8QqtfK動的ページを静的ページに変え、
GETで指定したURLのデータを取得したく、
下記のように設定しました。
------------------
■ sample.php
<?php
$url = $_GET['url'];
$file = file_get_contents($url);
?>
■ .htaccess
RewriteEngine on
RewriteRule url/(.*)$ sample.php?url=$1
------------------
http://sample.com/url/http://www.yahoo.co.jpにアクセスすると、
I/O warning : failed to load external entityエラーが表示されてうまくいきません。
問題の原因わかりますか?
以下、補足。
http://sample.com/sample.php?url=http://www.yahoo.co.jp
では、正常に動作します。
また試しに、
<?php
$url = "http://www.yahoo.co.jp";
$file = file_get_contents($url);
?>
と書いて、
http://sample.com/url/http://www.***.co.jp
にアクセスすると、正常に動作します。
0006nobodyさん
2009/03/09(月) 16:54:22ID:???0007nobodyさん
2009/03/09(月) 18:48:52ID:An8QqtfK0008nobodyさん
2009/03/09(月) 18:52:59ID:???ここで聞かなくてもググれば解説サイトも多いので
http://example.com/?a=100&b=test
↓
http://example.com/100/test/
0009nobodyさん
2009/03/09(月) 20:24:08ID:An8QqtfKスラッシュがダメなんだよね。
オレ、正規表現すごく苦手なんだ。
エロい人、答え教えてー(>_<)
0010nobodyさん
2009/03/09(月) 20:49:14ID:???RewriteEngine On
RewriteRule ^url/(.*)$ sample.php?url=$1 [L]
0011nobodyさん
2009/03/09(月) 21:17:55ID:l0zAqNTVおとなしくその処理だけjavascript使っといたほうがいいですか?
0013nobodyさん
2009/03/09(月) 21:41:22ID:???0015nobodyさん
2009/03/09(月) 21:51:15ID:???0016nobodyさん
2009/03/09(月) 22:04:02ID:ObAH+zkjもう親クラスを書き換えてしまったほうが気持ち悪くないように思えるのですが、
親を書き換えて機能を追加すると面倒くさい作業になるという場合以外に、
プログラムを書く初期段階で敢えて継承を使うときって例えばどんなときありますか
0017nobodyさん
2009/03/09(月) 22:14:56ID:4+GIMEEFPHPでHTMLページの解析をやりたいのですが、いろいろな方法があるようです。
今はどの方法がいちばんお薦めなのでしょうか?
個人的には、SimpleXMLのような使い方ができるとありがたいです。
0018nobodyさん
2009/03/09(月) 22:29:28ID:???DomDocument::loadHTML -> simplexml_import_dom
でSimpleXMLでHTMLも扱えるようになる
でも俺は Simple HTML DOM Parser の方が好きだな
0020nobodyさん
2009/03/09(月) 22:48:20ID:???0022nobodyさん
2009/03/09(月) 22:54:47ID:???002417
2009/03/09(月) 22:57:35ID:4+GIMEEFSimpleXML ではなく、PEAR XML_Serializer で使うとすると、どうするのが
おすすめでしょうか?
特に、タグが整合していないようなHTMLにうまく対応するには、どういう方法
があるでしょうか?
0025nobodyさん
2009/03/09(月) 23:07:37ID:???002617
2009/03/09(月) 23:14:07ID:???ありがとうございます。XML_Serializerは、すでに自分以外の人間によって
導入済みなので、気をつけて使うことにします。
ところで、こんなのを見つけました。
HTMLを整形式のXML文書に修正するPHPクラス : Under Construction, Baby
http://www.rcdtokyo.com/ucb/contents/i000799.php
0027nobodyさん
2009/03/09(月) 23:49:28ID:wECRTT84プログラミングができることとPHPができることはイコールでしょうか?
基本的なプログラミング作法を習得すればpython,perl,rubyを覚えるのは簡単ですか?
0029nobodyさん
2009/03/09(月) 23:51:45ID:???00305
2009/03/10(火) 00:17:26ID:IndrzJiefile_get_contents($url); でエラーがでる原因は、
クエリーにスラッシュが2回連続したのが含まれる場合、
$_GET['url']の値が http:/www.yahoo.co.jpになって、
スラッシュが勝手に省略されるのが原因でした。
0031nobodyさん
2009/03/10(火) 07:31:38ID:???イコールじゃないってのはwikipediaで知らない言語を調べたときに
書いてある内容がチンプンカンプンだったりしたことがあったりしてわかるだろ
図書館なり本屋なりで計算機科学の大学の教科書みたいな本を手に入れてきて、
そんな質問したことで欝になるがいいさ
0032nobodyさん
2009/03/10(火) 08:33:34ID:???>プログラミングができることとPHPができることはイコールでしょうか?
PHPもプログラム言語の1つなので間違ってはいないけど
PHPができるようになってプログラミングできるとかは公言しないほうがいい
世の中にはすごい人はいっぱいいるので
その人たちとの会話するには1歩ひかないと痛い目見る
PHPだけをやってるうちは難しい話ふられてもわからないからね
>基本的なプログラミング作法を習得すればpython,perl,rubyを覚えるのは簡単ですか?
簡単かどうかは経験次第
基本的にベースができてれば仕様書読めば組むことができるが読み方がわからないと話にならない
PHPマニュアルと他言語のAPI仕様書なんかは結構違ってくるので
その差をどう吸収できるかが最大の問題
言語をたくさん覚えたいというならPHPを最初にやるのはおすすめしない
いろんな言語のベースになってるCやJavaをやったほうが短期間で効率よく移行できると思う
0033nobodyさん
2009/03/10(火) 09:00:49ID:???大抵微妙で終わる気がするが
0034nobodyさん
2009/03/10(火) 09:18:01ID:???学校がいかに効率的なシステムなのかは後悔したときになって初めて分かるw
0035nobodyさん
2009/03/10(火) 09:22:13ID:???いろんな技術ができてはじめてWebプログラミングができるといえるようになると思う
たとえばECサイトの構築なんかに必要なものは
HTML+CSS+JavaScript+PHP+XML Schema+XML(RSS等も)+DB(SQL)
RIAの選択肢によってはアプレットやFlash(Flex)やSilverlightなんかも
そのほかにもプロトコル(http,https)なんかの知識も必要だったり地獄
PHPができるってことは単にPHPができるってことなんだと思うわ
0036nobodyさん
2009/03/10(火) 09:34:24ID:???0039nobodyさん
2009/03/10(火) 09:58:42ID:???0040nobodyさん
2009/03/10(火) 10:20:12ID:oLUhH3AJオブジェクト指向で書き直そうと思うのですが
怖くて一歩前へ踏み出すことができません・・
書いたプログラムの規模や内容によるとは思いますが、
何かコツとか、やるならこれもやっておけみたいな点がありましたら教えてください
0041nobodyさん
2009/03/10(火) 10:34:24ID:???0042nobodyさん
2009/03/10(火) 10:35:09ID:???0044nobodyさん
2009/03/10(火) 10:55:45ID:???散々知識知恵を絞って、うまい回答ができないのを自ら晒しているだけ。
0045nobodyさん
2009/03/10(火) 10:59:09ID:???0046nobodyさん
2009/03/10(火) 11:08:50ID:uqvOEBO8どなたか教えてくだいさ
0047nobodyさん
2009/03/10(火) 11:10:19ID:???0048nobodyさん
2009/03/10(火) 11:14:40ID:???class hello
{
function ko(){echo 'こ';return $this;}
function n(){echo 'ん';return $this;}
function ni(){echo 'に';return $this;}
function ti(){echo 'ち';return $this;}
function ha(){echo 'は';return $this;}
}
$obj= new hello();
$obj->ko()->n()->ni()->ti()->ha();
?>
0051nobodyさん
2009/03/10(火) 11:33:11ID:???0052nobodyさん
2009/03/10(火) 11:50:13ID:???0053nobodyさん
2009/03/10(火) 11:54:07ID:???class greeting{
function hello(){ return "こんにちは"; }
function goodevening(){ return "こんばんは"; }
}
class bibiru extends greeting{
function goodevening(){ return "こんばんみ"; }
}
class arare extends greeting{
function hello(){ return "んちゃ"; }
}
$bibiru = new bibiru();
echo $bibiru->hello()." ".$bibiru->goodevening()."<br>";
$arare = new arare();
echo $arare->hello()." ".$arare->goodevening()."<br>";
?>
0054nobodyさん
2009/03/10(火) 12:02:02ID:???class Hello {
static function main() {
echo "Hello world!";
}
}
Hello::main();
PHPはメインメソッドが存在しないからいちいち呼び出さないとだめ
純粋なオブジェクト指向言語じゃないので全てをオブジェクトで包む必要がない
よってPHPでHello worldを出力するだけなら
クラスを使うのは用途としておかしい
0055nobodyさん
2009/03/10(火) 12:06:59ID:???こんにちは こんばんみ
んちゃこんばんは
って表示されるのでおkですか?
0057nobodyさん
2009/03/10(火) 12:14:29ID:???インタフェースはどうした.デザパタはどうした.
0058nobodyさん
2009/03/10(火) 12:18:06ID:???http://pc11.2ch.net/test/read.cgi/php/1172205352/
0059nobodyさん
2009/03/10(火) 12:21:04ID:TmDav5cL$title = "タイトル";
$h1 = "見出し1";
$p = "文章です";
【template.html】
<html>
<head>
<title>{title}</title>
</head>
<body>
{h1}
{p}
</body>
テンプレート(template.html)を元に{title},{h1},{p}にdata.phpにためてあるデータを値を入れたいのですが
データの数は日々追加したり削除することも考えうるのですが
どのようにしたらいいでしょうか?
【求める結果】
<html>
<head>
<title>タイトル</title>
</head>
<body>
見出し1
文章です
</body>
0060nobodyさん
2009/03/10(火) 12:31:53ID:???0061nobodyさん
2009/03/10(火) 12:35:28ID:???0063nobodyさん
2009/03/10(火) 12:40:40ID:TmDav5cL勉強のために書きたいんです
0064nobodyさん
2009/03/10(火) 12:57:58ID:???function convert() {
include func_get_arg(1);
return preg_replace(
'/\{([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\}/e',
'isset($$1) ? htmlspecialchars($$1, ENT_QUOTES) : \'undefined\';',
file_get_contents(func_get_arg(0)));
}
echo convert('template.html', 'data.php');
0065nobodyさん
2009/03/10(火) 12:59:19ID:???0066nobodyさん
2009/03/10(火) 13:02:43ID:???>>48 は単なるメソッドチェーンじゃない。
「流れるようなインターフェース」ってやつだよ。
キーワード引数のかわりに fluent interface (流れるようなインターフェース) を使う - kwatchの日記
http://d.hatena.ne.jp/kwatch/20080704/1215192591
0067nobodyさん
2009/03/10(火) 13:08:37ID:???0068nobodyさん
2009/03/10(火) 13:10:23ID:???0069nobodyさん
2009/03/10(火) 13:24:59ID:???$rows = Query.find_all('stocks', array('where'=>'price >= 1000',
'order_by'=>'name',
'limit'=>10));
これ本当に例?
0070nobodyさん
2009/03/10(火) 13:53:03ID:9aCbhHpkその基底クラスより前に拡張クラスを書くと
「クラスがない」というエラーが出るようになりました。
基底クラスの後ろに拡張クラスを移動するとエラーは消えましたが。
なぜ、ArrayAccessをimplementすると
こんなRubyやPhthonのような動作をするようになるのでしょうか?
0071nobodyさん
2009/03/10(火) 14:09:35ID:v2XXMSa6日本語で書いてくれ
基底クラスより先に拡張クラスを書けば、基底がないって言われるのはあたりまえ。
ArrayAccessをimplementしたなら、interfaceを実装すればいいだけ。
ArrayAccessがどうとかは関係ない。
0073nobodyさん
2009/03/10(火) 16:02:30ID:???1: class C extends B {} // 1: をコメントアウトすると動く
2: class B extends A {}
3: class A {}
コンパイル時、 C は未定義のクラス B を参照しているので解決を保留する
B もまた同様に保留され、A のみ定義した時点で終端に達しそのまま打ち切る
そして実行時に入って再度 C>B を解決しようとするが B が未定義のままなので Class 'B' not found になる
1: をコメントアウトした場合は、B は A しか参照していないので実行時に解決できエラーも出ない
ただ組み込みクラス、インターフェイスによって実行前解決が出来る出来ないの違いが出る理由は分からない
ソースを追いかけられる人に任せる
var_dump(class_exists('Klass', false)); // false
var_dump(interface_exists('IA', false)); // true
var_dump(interface_exists('IB', false)); // false
interface IA {} // 実行前に解決
eval('interface IB {}'); // 実行時に解決
class Klass implements IA, IB {} // 未解決の IB があるので実行時まで解決を遅らせる
var_dump(class_exists('Klass', false)); // true
var_dump(interface_exists('IA', false)); // true
var_dump(interface_exists('IB', false)); // true
0075nobodyさん
2009/03/10(火) 16:26:30ID:???それが不思議に思うのは、実装系以外におまいさんルールのほうが理想的とおもってるからじゃね?
普通に、実行時のロードされてるかどうかの違いでしかない > 組み込みも含めて。
007673
2009/03/10(火) 17:02:25ID:AQjjLY2m遅延評価の一例上げただけだ、説明が下手なら悪い
俺がソースを読まないと説明できないと言ってるのは次の挙動
// SPL組み込みクラス true true
var_dump(class_exists('ArrayObject', false), class_exists('XArrayObject', false));
class XArrayObject extends ArrayObject {}
// SPL組み込みインターフェイス true false
var_dump(interface_exists('ArrayAccess', false), interface_exists('XArrayAccess', false));
interface XArrayAccess extends ArrayAccess {}
あと>>70と俺は別人だからな、IDは出しとく
0078nobodyさん
2009/03/10(火) 17:13:24ID:???一応説明しとくか。
上のケース、
XArrayObjectはvar_dump評価時にすでにロードされてる。
下のケース
XArrayAccessはvar_dump評価時にロードされていない。
よって、そのような動作になっている。
007973
2009/03/10(火) 17:35:45ID:AQjjLY2m【OS名】 Windows XP SP3, FreeBSD 6.4
【PHPのバージョン】 5.2.9, 5.3-dev, 6.0-dev
【質問内容】
組み込みのクラスとインターフェースで、
定義済みになるタイミングに違いが出る理由もしくは原因を教えて下さい
ソースコードは>>76です
>>77,78のような観察日記な回答は要りません
008173
2009/03/10(火) 17:49:35ID:AQjjLY2m仕様ですね、ありがとうございます
0082nobodyさん
2009/03/10(火) 19:29:40ID:U6ySWdbJphpの掲示板を運営しているのですが、海外からの宣伝書き込みを阻止したいのですが、半角英数記号のみ書込禁止は↓の構文で大丈夫だったんですが、半角スペースが含まれると対応できません。。。
何か良い方法はありませんか?
if (preg_match(\"/^[!-~]+$/\", 変数名))
0084nobodyさん
2009/03/10(火) 20:30:26ID:???そっちの方が効率的だと思うよ
0086nobodyさん
2009/03/10(火) 20:38:17ID:???時代に取り残されるぜ
0087nobodyさん
2009/03/11(水) 15:51:06ID:???0088nobodyさん
2009/03/11(水) 16:49:42ID:???PHP側としてはどうしたらいいでしょうか?
同期ってレンタルサーバーの複数台プラントかは
勝手にやってくれるんですか?
0089nobodyさん
2009/03/11(水) 16:50:50ID:???0090nobodyさん
2009/03/11(水) 16:53:54ID:???0091nobodyさん
2009/03/11(水) 17:14:13ID:Txff9mTlphp学習2日目の名無しです
このスクリプトの意味を教えていただけませんか
0092nobodyさん
2009/03/11(水) 17:16:18ID:L2Yi36riif($a === 0){
echo "ok";
}else{
echo "";
}
で問題なく、okが出るのですが、
pdoで、$aをbindParamしたものを間に挟むと、elseしてしまいました
$a = 0;
・・・
$result->bindParam(":A",$a,PDO::PARAM_INT);
・・・
if($a === 0){
echo "ok";
}else{
echo "";
}
しかし、
$a == 0 とすればokでした。
原因は何なのでしょうかよろしくおねがいします
php5.2.6 OS windows
0095nobodyさん
2009/03/11(水) 17:27:49ID:Txff9mTl理解できました
ありがとう
0096nobodyさん
2009/03/11(水) 17:54:26ID:aBj2wILp以前に、他人の家から漏れている無線LANの電波を悪用して、殺人予告したヤツが捕まりましたが、ノートPCリカバリ→他人の電波で殺人予告→再リカバリとやればバレないような気がします。
厨房質問でお恥ずかしいですが、よろしくお願いします
0097nobodyさん
2009/03/11(水) 18:04:38ID:???0098nobodyさん
2009/03/11(水) 19:13:57ID:TxDdMOL9プラグインとしてまとめて、下のようにして読み込んでいます。
$plugin_name = "new_list.php";
define("PLUGIN_DIR",プラグインまでのパス);
if(file_exists(PLUGIN_DIR."/".$plugin_name)){
include PLUGIN_DIR."/".$plugin_name;
newList(); //プラグイン内の関数を実行
}
こうするとプラグインの数だけ毎回includeする事になるのですが
負荷がかからないか、後々めんどうなことにならないかと懸念しています。
自分では予測できないのですが、「こういうやり方だとこうなる」
というような指摘があれば、教えて下さい。
0100nobodyさん
2009/03/11(水) 20:05:36ID:???そういう時のためにinclude_onceとかrequire_onceという組み込み関数が用意されてるけど、負荷が高くなるのでお勧めしない
なのでプラグインがクラスで実装されているなら、ファイル名とクラス名を統一しておいて
$files = glob(PLUGIN_DIR .'/*.php');
foreach ($files as $file) {
if (!class_exists(pathinfo($file, PATHINFO_FILENAME))) require $file;
}
などとすればいいんじゃない?
0101nobodyさん
2009/03/11(水) 20:09:31ID:BrBOeywI【OS名】Windows XP
【PHPのバージョン】php4.4.9
【連携ソフトウェア】Apache2.0.63, MySQL Server 6.3
【質問内容】
pearを導入したく、go-pear.batを実行して試みたのですが、
Extracting installer..................
Using local package: PEAR.............ok
Using local package: Structures_Graph....ok
Preparing installer..................
Warning: fopen(XML/RPC.php): failed to open stream: No such file or directory in
C:\php\temp\PEAR\Remote.php on line 187
For this remote PEAR operation you need to load the xmlrpc extension or install
XML_RPC
続行するには何かキーを押してください . . .
というエラーが出てしまい、途中で止まってしまっているようです。
インストールされていないためにPEARコマンドも実行できません。
php.iniのinclude_pathにpearディレクトリへのパスや、extensions_dirなども
見直しましたが、他に何が悪いのかわからず困っております。
0102nobodyさん
2009/03/11(水) 20:16:34ID:???困っておりますじゃぁ、「そうですか」としか言えない気もするが、
めっちゃ親切な人がいれば答えてくれるのかもしれんけど。
それはそうと、PHP5にして試してみたら?
go-pearが古いのかもしれないよ。
0103101
2009/03/11(水) 20:34:19ID:BrBOeywI上記失敗の原因はphp.iniのphp_xmlrpc.dllがコメントアウトでした。
これを外し、必要となるiconv.dllをsystem32にコピーしてから試したところ、
PEAR_Remote (pear.php.net:80) : unexpected HTTP response
という別のエラーが出るようになりました。
こちらの対処法を調べてみることにします。
>>102
その通りですね、失礼しました。
以後、質問の意図を明確にするよう注意しようと思います。
0104認定回答者
2009/03/11(水) 20:39:09ID:nPJIwFx50105nobodyさん
2009/03/11(水) 21:01:13ID:???他の回答者を格付けできるほどの立派な頭脳をお持ちなら、何故そこで最適解をお示しにならないのでしょうか?
不思議で仕方がありません><
0106nobodyさん
2009/03/11(水) 21:18:55ID:???クライアントの方はJavaScript/VBScriptで、バイナリファイルをサーバー(PHP)へ
アップロードしたいのですが、どのようにすればいいでしょうか?
JavaScript は
var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP"); //XMLHttpRequest();
xmlhttp.open('POST', 'http://hoge/recieve', true);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send('formdata=123');
とすると、PHPの方で'123'は取れるのは確認しました.問題はバイナリで、
"ADODB.Stream"でバイナリファイルを str=Read(); strをBase64変換しようとするのですが
使っている変換用モジュールが駄目なのかもしれませんが、ここでこけてしまいます。
まずはBase64変換でポピュラーなやり方を説明しているサイトなどありませんでしょうか
お願いいたします。
0108nobodyさん
2009/03/11(水) 22:14:08ID:???<input type="file">はひとつひとつファイル選択しないといけないので、、、
0110nobodyさん
2009/03/11(水) 22:20:34ID:???/.: : : : : : : .ヽ
R: : : :. : pq: :i}
|:.i} : : : :_{: :.レ′
ノr┴-<」: :j|
/:r仁ニ= ノ:.ノ|! _
/:/ = /: :/ }! |〕) コツン
{;ハ__,イ: :f | /´
/ }rヘ ├--r─y/
/ r'‐-| ├-┴〆 _, 、_ '⌒ ☆
仁二ニ_‐-イ | | ∩`Д´)
| l i 厂  ̄ニニ¬ ノ ⊂ノ >>108
,ゝ、 \ \ __厂`ヽ (__ ̄) )
/ /\_i⌒ト、_ ノrr- } し'し′
└-' ̄. | |_二二._」」__ノ
0111nobodyさん
2009/03/11(水) 22:23:31ID:???/.: : : : : : : .ヽ
R: : : :. : pq: :i}
|:.i} : : : :_{: :.レ′
ノr┴-<」: :j|
/:r仁ニ= ノ:.ノ|! _
/:/ = /: :/ }! |〕) コツン
{;ハ__,イ: :f | /´
/ }rヘ ├--r─y/
/ r'‐-| ├-┴〆 _, 、_ '⌒ ☆
仁二ニ_‐-イ | | ∩`Д´)
| l i 厂  ̄ニニ¬ ノ ⊂ノ >>109
,ゝ、 \ \ __厂`ヽ (__ ̄) )
/ /\_i⌒ト、_ ノrr- } し'し′
└-' ̄. | |_二二._」」__ノ
011398
2009/03/11(水) 23:04:15ID:???こういうやり方、はじめて知りました!
ちょっとよく分からない関するとかありますが、調べてみます。
ありがとうございました。
0114nobodyさん
2009/03/11(水) 23:06:48ID:???サーバーを引っ越したらこういうような画像が表示ができなくなりました。
いろいろ試してみたところどうも引越し先のサーバーが上の表記のものを
画像として認識してないと思われます。
画像元は他サイトなのでいじれません。
どうすれば画像として認識してくれるのでしょうか?
accessで何かすればいいのかなとは思っていますがどう書けばよいでしょうか
ご教授お願いします。
0115nobodyさん
2009/03/11(水) 23:32:05ID:Co0l4rZT<?
header("Content-type: image/gif");
$url = "http://xxx.com/xxxx.php?sz=160x240&type=11";
readfile("{$url}");
?>
0116nobodyさん
2009/03/11(水) 23:47:01ID:???使用しているDBまた、どんなSQLを実行したか分からないけど、
bindParamは変数は参照としてバインドされるので、
メソッドの中でPDOドライバが何か余計なことをしたのかもしれないね。
bindParamの前後で、デバッガか、var_dumpで変数をチェックしてみては?
0118nobodyさん
2009/03/12(木) 00:11:31ID:???正規表現で複数回続く文字 。 を一回に置換したいです。
以下で試しましたがうまくいきません。
最長マッチ?のしかた教えて下さい。
mb_regex_encoding("sjis");
$text = "今日は木曜日です。。天気は晴れ。。。。";
$text = preg_replace("/。+/","。", $text);
0119nobodyさん
2009/03/12(木) 00:22:47ID:???preg_replace('/(。)+/', '。', '今日は木曜日です。。天気は晴れ。。。。');
で、できた。
括弧が必要な理由は分からん。
0120nobodyさん
2009/03/12(木) 00:23:56ID:???0122nobodyさん
2009/03/12(木) 01:21:32ID:???↓
みんなで開発するときは作業分担効率化
↓
フレームワークを使うのが当たり前
↓
ある程度自動でさくさくプログラム書けるらしい
↓
なんか自分でやった感がなさそうな気がしてモチベーション下がってきた・・・
まだ初心者すぎるし、ずっと手続き型でやるほうがいいのだろうか・・・
でも作業分担ですっきり綺麗にプログラムかけるのとか憧れるし、
そんなことができるなら今のうちにやっておいたほうがいいし、
でもプログラム自動生成とかになるらしい?からそれになれちゃうと、
今度は手続き型で覚えてきた基礎がおろそかになって忘れそうな部分が多そうで怖い・・・
一体どうしたら
0123nobodyさん
2009/03/12(木) 01:37:44ID:???問題を分けて考えるべきだ
0124nobodyさん
2009/03/12(木) 01:54:01ID:???0125nobodyさん
2009/03/12(木) 01:59:09ID:???後から見て、
おお〜これは見やすくて編集しやすいな〜
みたいに言われそうなの書いてみたい
0126nobodyさん
2009/03/12(木) 02:19:19ID:???・21世紀にもなってOOPができないエンジニアはゴミ
・OOPでないコードは、ひとりで書くコードでもゴミ
・「手続き型のコード」が何を指すか知らんが、PHPの文法はどのみち完璧にしないと何も出来ない
・個々のフレームワークの知識は要らん
MVC構造とは何かを頭に叩き込んでから、必要なものを自分で書け
OOP分かってない奴はクラス使っても糞コードしか書けないのと同じで、フレームワークを使おうが基礎が出来てない奴のコードはやっぱりクズだ
・ガタガタ抜かす前に動くコードを書けよハゲ
自動でサクサクできる?んじゃあやってみろよハゲ
手を動かさないエンジニアはゾウリムシ以下だ
0127nobodyさん
2009/03/12(木) 04:31:24ID:???補足
mb_regex_encoding()はmb_ereg*()にしか適用されないので
マルチバイト文字だと認識できていない事が原因
その例ならpreg_replace()ではなくmb_ereg_replace()を使う
0128nobodyさん
2009/03/12(木) 09:10:37ID:???0129nobodyさん
2009/03/12(木) 09:36:10ID:???成果上げるためにどう開発するのがいいか個別に考えればええやん
0130nobodyさん
2009/03/12(木) 09:55:01ID:???ちゃんと見極めたほうがいい
仕事になればたいした技術もおそわらず
FWとAPIの使い方を覚えさせられてラピッド開発させられるだけ
短期間で効率的に開発というのは業務では中核となる課題だが
結果ゆとりを多く生み出してる
0131nobodyさん
2009/03/12(木) 11:25:18ID:???トラックバック
書き込み(コメント、記事投稿)
ログ出力
0132nobodyさん
2009/03/12(木) 11:26:19ID:blHr3iRk0133108
2009/03/12(木) 11:41:37ID:???0134nobodyさん
2009/03/12(木) 11:46:49ID:???↓
0135nobodyさん
2009/03/12(木) 11:48:27ID:???0138nobodyさん
2009/03/12(木) 14:26:31ID:???0140nobodyさん
2009/03/12(木) 17:39:53ID:w9p/Xb/sどのような仕組みでしょうか?
0141nobodyさん
2009/03/12(木) 17:50:28ID:???0143nobodyさん
2009/03/12(木) 19:04:33ID:y65Mhsc8$array = array('a','b','c');
$str = pick($array,1);
↓
$array : array('a','c')
$str : 'b'
のような動作をさせたいです
0145nobodyさん
2009/03/12(木) 19:26:26ID:???0146nobodyさん
2009/03/12(木) 19:26:42ID:???list($str) = array_splice($array, 1, 1);
>>144
unsetは数値キーを再割り当てしない
0148nobodyさん
2009/03/12(木) 21:50:39ID:Y3aY0TvpMySQLのスレッドがなかったので…。
スレ違いなら申し訳ないです。
[testテーブル]
no(オートインクリメント)
name
1・フォームからnameデータを受け取り、testテーブルにINSERTで入力。
2・その後すぐに、1の入力で作成されたレコードのnoを引き出す。
これを行うのに最適な方法はなんでしょう?
nameはキーではなく重複する可能性があるのでnameでのselectは不可です。
とりあえず2で
select * from test order by no desc limit 0,1
で取り出す方法を考えたんですが、
その場合1と2の間に一貫性?を持たせなければなりません。
この一貫性を保持させる方法がMySQLにあるのかPHPにあるのか・・・。
もしこの方法が最適なら一貫性を持たせる方法
(できれば例のコード)を教えてください。
また他に最適な方法があるならぜひお願いします。
0149nobodyさん
2009/03/12(木) 21:53:28ID:???説明
int mysql_insert_id ([ resource $link_identifier ] )
直近の INSERT クエリにより AUTO_INCREMENT カラム用に生成された ID を取得します。
0150nobodyさん
2009/03/12(木) 22:12:31ID:w9p/Xb/sclass Main{
function dbList(){
// MySQLから特定のテーブルリスト一覧を取得する
}
}
class Sub extends Main{
function output(){
$list = $this->dbList(); // Mainからテーブルリストを取得
}
function output2(){
$list = $this->dbList();
}
}
こういうclassがあったとして、Sub内のoutput()を実行すると
MainのdbList()を実行することになりますよね?
そしてoutput2でdbList()を使いたい場合、再度実行する事になりますよね?
そうではなくて、Mainで設定した内容を使い回しするような事って出来ないのでしょうか?
0151nobodyさん
2009/03/12(木) 22:29:49ID:???function dbList(){
if(false === isset($this->dbList){
$this->dbList = mysql_fetch_なんとか();
}
return $this->dbList;
}
遅延初期化とか呼ばれるテクニックで、割と定石。
使いすぎるとカオスになるので、どの値をどのクラス/インスタンスで保持するかは慎重に検討したほうがいい。
0152nobodyさん
2009/03/12(木) 23:11:07ID:Y3aY0Tvpまずint mysql_insert_id ([ resource $link_identifier ] )
について調べてみます。
助言本当にありがとうございます。
0153nobodyさん
2009/03/12(木) 23:53:49ID:ZuCT+g0Fこれからファイルからデータベースにデータを移し替えたいと思ってます
id,name,age
1,木村,10
2,佐藤,20
3,木下,30
4,山田,40
5,坂本,50
mysqlを使用した場合でダイレクトにid2の佐藤さんのデータのみを取得するにはどうしたらよろしいでしょうか?
ファイルですとforeachでまわしてexplodeで区切る感じで、データを全部読み込んで処理させてるのですが
データベース使ってもデータは全部読み込んでまわして取得するのでしょうか?
0154nobodyさん
2009/03/12(木) 23:59:52ID:qegdPp88このとき、配列の要素が100個ぐらいだとして、
こういう場合はいちいち使うものに変数名をつけるか、
それとも配列の[数字]でつかうのか、
どっちが一般的なんでしょ?
こういう場合に限らず、一般的に他の言語とかでも
たくさんの値を使う場合はどういう管理をしてるんでしょう??
0156nobodyさん
2009/03/13(金) 00:27:47ID:???個数はあんま関係ないな。
論理的に「同じようなものが100個」ならば、100要素の配列を使う、というだけ。
例えば>153のデータが100行ならば、人間が100人なわけで、100要素の配列に格納するのは理にかなっているわけだ。
だが、列が3列だからといって、各行を3要素の配列で表現したりはしない。idと年齢は別の概念だからな。
たとえスリーサイズとか干支とか住所とかで各行の要素が何十とあったとしても、数字添字の配列にはしない。
$person[0] = array( 'id' => 1, 'name => '木村', 'age' => 10);
$person[1] = array( 'id' => 2, 'name => '佐藤', 'age' => 20);
みたいな連想配列に格納する。もしくはクラスを使う。
1行ずつ処理する場合も
list($id, $name, $age) = explode(',', $line);
みたいにやった方が、コードが読みやすいはず。
0157nobodyさん
2009/03/13(金) 00:43:01ID:???俺は100も200もあって意味とか型とかが同一のデータなら(試験の点数など)、
いちいち列名なんてつけずに数字で扱うけどな。まあどっちもでいいんじゃね
0158nobodyさん
2009/03/13(金) 11:07:13ID:eI4NlDZUどこかのサイトで、php5はvarは使うな的なことを書いてありました
そのサイトどこか忘れてしまったのですが、varの他に何を使うのが適当なのでしょうか
0159nobodyさん
2009/03/13(金) 11:28:27ID:???http://www.php.net/manual/ja/language.oop5.visibility.php
> 注意: キーワード var で変数を宣言する PHP 4 の方法は、
> 互換性を保つために今でもサポートされています (これは public と同じ扱いになります)。
> PHP 5.1.3 より前では、 これを使用すると E_STRICT 警告が発生します。
0160nobodyさん
2009/03/13(金) 13:37:40ID:???ヒアードキュメントを使っています。
フォームで処理すればコピペの時のスクロールが省けると思いフォームの
POST経由で変数を処理しましたが100KBぐらいしか処理できません。
これはフォームの入力制限等があるからでしょうか?
0161nobodyさん
2009/03/13(金) 14:01:14ID:???そんなことはないと思うぞ。ブログとか文章が長くて容量がでかいだろ。
おそらく、設計にミスがあるんじゃないか?
0162nobodyさん
2009/03/13(金) 14:14:40ID:???DBの場合、主にSQL文を使う。その場合なら
SELECT id,name,age FROM テーブル名 WHERE id = 2;
こんな感じのSQLをデータベースに投げることによって、idが2のやつのデータを返してくる。
ファイルよりも細かい検索ができるからいろいろやってみると面白いよ。
詳しくはMySQLのオンラインマニュアルとかSQLの入門サイトを参照のこと。
0163nobodyさん
2009/03/13(金) 14:17:06ID:???http://ufcpp.net/study/csharp/ap_ver3.html#linq
0164nobodyさん
2009/03/13(金) 15:02:30ID:6EGCx2Tu0165nobodyさん
2009/03/13(金) 15:04:59ID:???preg_replace
0166nobodyさん
2009/03/13(金) 15:05:04ID:OOgBCn1Z一つのフォルダに50万以上のページのキャッシュを保存してます。
今後も+1万/日のペースで増加します。
やはり、キャッシュを保存するフォルダは適度に分散した方がいいのでしょうか?
動作が遅くなる可能性はありますか。
0167nobodyさん
2009/03/13(金) 15:19:24ID:DZKgFtDb使えなかったらすみません
class hoge{
var $hoge = eval("a");
}
このようなエラーが返ってきます。Parse error: syntax error, unexpected T_EVAL
0168nobodyさん
2009/03/13(金) 15:32:23ID:???0169nobodyさん
2009/03/13(金) 15:42:15ID:???var $a;
function hoge(){
$this->a = eval...
}
}
こうしてみたら?
eval使ったことないけど。
0170nobodyさん
2009/03/13(金) 16:00:26ID:XJCetXbHループ文で四六時中、time()関数を実行して、設定した時間になったら、ループを抜け出しスクリプトを実行する、
というやり方はありですか?
0171nobodyさん
2009/03/13(金) 16:06:22ID:???おぉ、その手があったか。是非、max_execution_timeの限界ってどのくらいか試してくれ。
でもそのスクリプト、ずーっと実行し続けられる保証がないよね?
そしたらそれを定期的に監視するするスクリプトもそれで動かせばいいね。うんうん。
0172nobodyさん
2009/03/13(金) 16:07:30ID:???0173nobodyさん
2009/03/13(金) 16:13:19ID:DZKgFtDbなるほど!
思いつきませんでした。ありがとうございます
>>170
ものすごく負荷がかかると思います。
レンタルサーバーなら、コンパネからcron使えないですかね
0175170
2009/03/13(金) 16:21:18ID:XJCetXbHまったくの入門者でwinで自鯖をやる予定です。
max_execution_timeというので、負荷がわかるわけですね、勉強になりました。
まだ、試してないんですが、cronだと細かい設定が出来ないですよね?
0176nobodyさん
2009/03/13(金) 16:37:25ID:???ignore_user_abortがある
>>175
工夫すれば負荷なんてそんなにかかんないよ。
1クライアント分消費するだけ。
max_execution_timeを無限設定して
ignore_user_abortで起動して、forループにSleepを巨大な秒数でセットしてやれば。
あとは、プロセスを一つに絞るのに、どっかにPIDファイル作るとか
0177質問させて下さい
2009/03/13(金) 21:45:58ID:75Yme90Vphpで下記を書いてます。
<?php
$mainrss = array (
'http://www.123.net/ ○○',
'http://456.net/ ○○'
);
?>
URLは取得できるようになるんですが、URLの後ろに短い紹介文を書きたいのですが、
カンマじゃなくて何を使ってあげるといいのでしょうか?
○○に短い紹介文を記入したいです
アドバイスをお願いします。
0178nobodyさん
2009/03/13(金) 21:48:38ID:???0179質問させて下さい
2009/03/13(金) 21:50:51ID:75Yme90Vレスありがとうございます。
下記のような感じで記入できたと思うんですが、思い出せなくて。
'http://www.123.net/','あいうえお',
0180nobodyさん
2009/03/13(金) 21:56:15ID:???0181質問させて下さい
2009/03/13(金) 22:06:25ID:75Yme90Vレス有り難うございます!
それでも無理でした
'http://www.123.net/, '123',
でもだめでした。
難しいですね。
0182nobodyさん
2009/03/13(金) 22:09:21ID:???0183質問させて下さい
2009/03/13(金) 22:15:49ID:75Yme90Vレスを有り難うございます。
本を買ってきて勉強したいと思います。
0184nobodyさん
2009/03/13(金) 22:25:13ID:???0185nobodyさん
2009/03/13(金) 23:25:30ID:???Unix/Linuxならcronだが、同じ事はWindowsではタスクスケジューラで実現する。
(Windows上で動くcronも存在するが)
無限ループを回すよりはこちらのほうがスマート。
「cronだと細かい設定が出来ない」の意味が良く分からんな。
1分以下の精度で実行タイミングを指定したい(12時30分15秒じゃないとダメなんだ!とか)とか言う意味ならcronの仕様上無理だが。
曜日指定とか時刻指定とかなら余裕で可能。cron覚えるのがダルいならスクリプト側で制御してもいいしな。
任意のスクリプトを動作させられるのだから、そのPC上で可能な事はなんだって出来る。
0186nobodyさん
2009/03/13(金) 23:57:37ID:???>max_execution_timeを無限設定して
笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑
笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑
笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑
笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑
笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑
笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑
0187nobodyさん
2009/03/14(土) 00:00:05ID:???$ary = array(
array("url"=>"127.0.0.1","shoukai"=>"しょうかい1"),
array("url"=>"http://yahoo.co.jp/","shoukai"=>"しょうかい2"),
array("url"=>"http://2ch.net/","shoukai"=>"しょうかい3")
);
0188170
2009/03/14(土) 01:07:17ID:u9lyCe1cいまいちよくわからないので、もう少し勉強してからもう一度質問させて頂きます。
0189質問させて下さい
2009/03/14(土) 07:04:33ID:hOLVrRGNわああああああ!
レスありがとうございました。
このようにやりたかったです。
無事に出来ました!本当にありがとうございます。
phpの本は買って勉強をしておきます。
0192nobodyさん
2009/03/14(土) 11:44:37ID:sxFlkHR45000行くらいなら平気ですかね?もちろん文字数や処理にもよると思うのですが、
(適度に改行したとして)大体何行くらいに納めるみたいなのがあればよろしくおねがいします
0193nobodyさん
2009/03/14(土) 11:51:38ID:???0194nobodyさん
2009/03/14(土) 13:20:33ID:???俺の場合、1ファイル1クラスは死守。
1クラス500行上限が目安で、1メソッドは基本的にスクロールせずに全部見える分量に収める。
1ファイルが大きくなると、当然その分パフォーマンスに影響するし、保守もしづらい。
0195nobodyさん
2009/03/14(土) 13:25:01ID:???0197194
2009/03/14(土) 13:56:17ID:???毎回毎回すべての処理を呼び出すならその通り。
だが、呼び出しの9割は参照系へのアクセスで、そのうち8割はトップページだ。
つうか、パフォーマンスなんぞどうでもいいんだけどな。管理しづらい、読みづらいというのが最大の問題点。
0198nobodyさん
2009/03/14(土) 14:35:42ID:???0199質問させて下さい
2009/03/14(土) 19:52:27ID:hOLVrRGNfile_getについてアドバイスをお願いします。
下記にするとエラーが出ます。
<?php
echo mb_convert_encoding(file_get_contents("111.php"), "shift-jis", "auto");
?>
エラー内容
Warning: mb_convert_encoding() [function.mb-convert-encoding]:
Unable to detect character encoding in 111.php on line 59
下記にするとエラーは出ません。
<?php
echo mb_convert_encoding(file_get_contents("111.php"), "shift-jis", "shift-jis");
?>
"shift-jis", "shift-jis"と2重にしたんですが、おかしな書き方になるのでしょうか?
別の書き方がありましたら教えて下さい。
0201nobodyさん
2009/03/14(土) 20:37:03ID:qjtwBjoLarray('a','b','c')
のように値の羅列の形式で代入された配列の正式名称って何ですか?
0203nobodyさん
2009/03/14(土) 20:48:34ID:???file_get_contentsに設定するパラメータは以下だけです
filename
flags flags
context
offset
maxlen
よって君は何か勘違いをしている
マニュアルをよく読みましょう
0204nobodyさん
2009/03/14(土) 21:06:31ID:???0205nobodyさん
2009/03/14(土) 21:10:32ID:???111.phpのエンコードが事前に分かっているなら後者の書き方のほうが望ましい。
前者だと、間違ったエンコード判定がされた場合文字化けの原因になるしな。
Shift_JISからShift_JISに変換しているわけで、ヘンっちゃあヘン、というか無駄だな。
状況によっては100%無意味というわけでもないが…
echo file_get_contents("111.php");
とほぼ同じ意味だ、というのは理解してるのかな。
0206nobodyさん
2009/03/14(土) 21:36:24ID:???var_dump($hoge);
echo "<br>";
function hogehoge(){
$hogehoge = "hogehoge";
echo $hogehoge;
}
var_dump(hogehoge());
echo "<br>";
function hogehogehoge(){
return "hogehogehoge";
}
var_dump(hogehogehoge());
の結果が、上から順に
string(4) "hoge"
hogehogeNULL
string(12) "hogehogehoge"
このNULLってどうしてでてくるんですか?><
0207nobodyさん
2009/03/14(土) 21:41:55ID:???0208nobodyさん
2009/03/14(土) 21:44:54ID:???$a = hogehoge();
$b = hogehogehoge();
として、$aと$bの中身をvar_dumpで見てみろ。
0209nobodyさん
2009/03/14(土) 22:01:33ID:fYsVSce/hogehoge()の中にreturnをいれて、
function hogehoge(){
$hogehoge = "hogehoge";
echo $hogehoge;
return "ho";
}
にしたらNULLなくなりました><
ありがとうございました
>>208
こうでしょうか><
$a = hogehoge();
$b = hogehogehoge();
var_dump($a);
echo "<br>";
var_dump($b);
結果、
hogehogeNULL
string(12) "hogehogehoge"
になりました><
0210nobodyさん
2009/03/14(土) 22:20:14ID:S24jNTMx<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form method="post" action="<?php $_SERVER["PHP_SELF"]; ?>">
<input type="checkbox" name="bbb[]" value="かきくけこ">
あいうえお<br>
<input type="submit" value="選択">
</form>
<?PHP
if(isset($_POST['bbb'])){
foreach ($_POST['bbb'] as $a){
print ($a);
print "<br>";
}
}
?>
</body>
</html>
これで、ローカルで試すと問題なく動くのですが、
レンタルサーバーにアップロードして試すと
文字化けになります。なんででしょうか?
0211nobodyさん
2009/03/14(土) 22:33:52ID:???自己レス
サーバーのphp.ini の
mbstring.internal_encoding = UTF-8を設定して
上書きしてファイルを再読み込みしてリトライしたらできた。
サーバーのデフォルトではEUCになってた。氏ね。
0212質問させて下さい
2009/03/14(土) 22:37:16ID:hOLVrRGNそういうことについては全然勉強足りていないので頑張って覚えてみます。
アドバイス有り難うございます。
>>205
詳しい解説有り難うございます。
おかげでよく理解出来ました!
感謝しております。
>>200
意味がわかりませんでした。
失礼致しました。
0215nobodyさん
2009/03/14(土) 23:52:54ID:da46lvzdもし既存のライブラリがございましたら教えてください
0218nobodyさん
2009/03/15(日) 00:05:25ID:yySd7NKePHP 5.2.6-2ubuntu4.1 with Suhosin-Patch 0.9.6.2 (cli)
<?php
$DB = pg_connect("host=$DbIp dbname=$DbName user=$DbUser password=$DbPass");
?>
これはうちの環境の問題なのか、誰か教えて欲しい。
0220nobodyさん
2009/03/15(日) 06:06:20ID:???方法をご存じの方がいらっしゃいましたら教えてください。
0221nobodyさん
2009/03/15(日) 06:06:51ID:+CIxhGml0222nobodyさん
2009/03/15(日) 06:23:33ID:???0224nobodyさん
2009/03/15(日) 08:14:23ID:yySd7NKe書き方が悪かった。
実際の変数部分には正しい値が入る。
ちなみに接続も成功するしSQLの結果もかえってくる。
apacheで実行した時は何も問題ない。
でもcliの時だけfaultが最後に出るから悩んでる。
0225nobodyさん
2009/03/15(日) 08:41:14ID:???使ってるphp.iniが違うとかはないの?
それで落ちるかといえば疑問だけど。
とりあえずphpinfo() で使ってるphp.ini確認してみたら。
あとバージョンが違うライブラリにパスが通ってるとか。
0226nobodyさん
2009/03/15(日) 08:44:40ID:???・ログに書けないよエラー
・そのエラーログを書こうとしてエラー
・そのエラーログのエラーログを書こうとしてエラー
・その・・・・
とか。
0227nobodyさん
2009/03/15(日) 09:24:05ID:???前の子が来てる
0228nobodyさん
2009/03/15(日) 09:58:53ID:qN1+xeFs教えてください
0229nobodyさん
2009/03/15(日) 10:10:56ID:???いい方法かはわからないけど、
$i = 0;
foreach(){
$i++;
}
みたいなやり方はだめなのかな
count()を使えば配列の要素の数も得られるから、それで最後かどうかもわかるのでは
0230nobodyさん
2009/03/15(日) 10:44:14ID:???ubuntuなんで、php.iniは別なんだけど設定は同じ。
ライブラリ系もまったく同じ。
今思ったけど、linux板で聞いたほうがいいのかも。
ちょっと移動してきます。
ありがとう。
0231nobodyさん
2009/03/15(日) 11:14:01ID:???無い。
ループの何巡目かが処理に影響するような場合はforを使え。
0232nobodyさん
2009/03/15(日) 11:18:55ID:Ok7zsTbrじゃあ、クッキーが無い時代はどうやってたの?
0236nobodyさん
2009/03/15(日) 11:47:29ID:???どっちも平文で送信されるから似たようなもんだ
0238nobodyさん
2009/03/15(日) 14:33:41ID:???よくみるんだけど、数行程度でも?
0239238
2009/03/15(日) 14:40:11ID:???エラー見つけやすいから分けるのか
とりあえず小分けにしておくわ
0240nobodyさん
2009/03/15(日) 14:45:54ID:L+gdJUIE数行程度のクラスがわんさかあってもウザイと思うが
0241nobodyさん
2009/03/15(日) 14:46:54ID:L+gdJUIEクッキーの無い時代もあったんじゃね?
それよか、フォームすらなかった時代もあったんじゃね?
ネットスケープ社が頑張って実装したんじゃね?
0243nobodyさん
2009/03/15(日) 16:35:04ID:L+gdJUIEお前の方が大丈夫か?最初のHTMLは画像すら使えなかったって知ってるか?
0244nobodyさん
2009/03/15(日) 18:44:14ID:???0245nobodyさん
2009/03/15(日) 18:46:33ID:tXlRktlTそれをmysqlのtext型としてinsertしました
それをselectクエリで取り出して表示してみた所、改行されずに
表示されてしまうんですが、入力の時と同じように表示させる
ためにはどうすればいいんですか?
0247nobodyさん
2009/03/15(日) 19:05:30ID:???0249nobodyさん
2009/03/15(日) 19:25:38ID:tXlRktlT>>248
できました! こんな便利なものがあるなんて知らなかったです
まだまだ勉強不足ですね がんばります
ありがとうございました!
0250nobodyさん
2009/03/15(日) 19:29:36ID:???無料のジオシティーズでもPHPが使えるみたいです。
金を払ってサーバをレンタルするとどういういいことがあるのですか?
ttp://help.yahoo.co.jp/help/jp/geo/perl/perl-02.html
0252nobodyさん
2009/03/15(日) 19:33:13ID:???(1)
MySQLでPDOが使える(無料のところはPDO使えないことが多い)
(2)
強制挿入される広告が消える
(3)
場合によっては有料のところでは独自ドメインが使えるかも
(無料でも一部使えるところはある)
0253nobodyさん
2009/03/15(日) 19:34:26ID:???sendomailが使える
(無料のところではsendmailは無効化されていることがおおい)
sendmailが使えないとメールが送れない。
PHPのmail関数は、サーバーのsendmailに仕事を
丸投げしているだけなので、sendmailが動いていないと
何も起きない
0255nobodyさん
2009/03/15(日) 19:40:38ID:???ありがとうございました。
0256nobodyさん
2009/03/15(日) 19:44:18ID:???0257nobodyさん
2009/03/15(日) 19:50:20ID:???少数のサーバーに人を大量に詰め込むからな。
(そうしないと初期投資を回収できないので仕方ないが)
0258nobodyさん
2009/03/15(日) 19:50:22ID:???<?php
$i = 3;
switch($i){
case 0:
case 1:
case 2:
case 3:
case 4:
echo "iは0〜4";
break;
default:
echo "iは不明";
break;
}
?>
これがもし、case 0:〜case 4:の部分で、
case 0:〜case 100:までを判断したいとき
どういう風に記述すればいいのでしょうか。
0259nobodyさん
2009/03/15(日) 19:53:05ID:???0260nobodyさん
2009/03/15(日) 19:53:58ID:???0261nobodyさん
2009/03/15(日) 20:19:50ID:???0262nobodyさん
2009/03/15(日) 20:25:12ID:???if ($i >= 0 && $i <= 100) {
echo "iは0〜100";
} else {
echo "iは不明";
}
でいいのでは?
0264nobodyさん
2009/03/15(日) 20:33:50ID:???switchでcaseが大量になる場合は配列をうまく利用することをおすすめする
function func1() {
}
・
・
・
$case = array(func1(),func2(),func3(),・・・・・func999),
$case[0];
0267261
2009/03/15(日) 22:54:26ID:???せめて
$case = array('func1', 'func2', 'func3');
call_user_func($case[0]); // $case[0]();でも多分動く
にしとけ。
とりあえずそのコードは実行効率、可読性、保守性などあらゆる観点で最低だ。
後者2つについてはこのコードも大差ないが。
0268nobodyさん
2009/03/16(月) 01:35:07ID:???改行いっぱい使って、
$hoge = "hoge1"
. "hoge2"
. "hoge3"
;
こうしたのと、単に
$hoge="hoge1hoge2hoge3";
ってしたのとでは、
上のような改行いっぱい使った場合のが
積み重なってくると、改行使ってないものよりも
読み込みが遅くなる?
改行やスペースは無視になるとはきくけどなんか不安なのです。
0269nobodyさん
2009/03/16(月) 02:37:08ID:???文字列の結合の分遅くなるな、理論上は。
改行も、確かに理屈の上では遅くなる。人間に知覚できる差じゃないけどな。
仮に10000行空行があったとしても、目に見える応答速度差は出ない。
1MB分改行があっても気づかないと思う。
つうか、お前は、ペーパー代を惜しんでウンコした後ケツを拭かなかったりするのか?
ゴミみたいな高速化と可読性を天秤にかけるなら、どう考えても可読性を優先すべきだ。
0270nobodyさん
2009/03/16(月) 06:04:33ID:???結合された文字列になるんだっけか。
スクリプト言語で拘ってもしょうがないとは思うが、気分的にはやってほしいところではあるな。
APCとかのキャッシュ環境なら差がでるかも知れんし。
0271nobodyさん
2009/03/16(月) 11:58:48ID:???(1)さーって、、、まんず、helloって出すわけだから、
print "hello";
だろ、、、これはまず100%確実、、、
(2)そんで、クラスの宣言せんといかんな、、、
class {
}
、、、っと、、、
あ、、、クラス名、考えないといかんな、、、
はじめてのだから、firstでいいか?
class first {
}
0272nobodyさん
2009/03/16(月) 12:00:24ID:???そんで、さっきの
print "hello";
を、メソッドの中に入れないといかんのだよな、、、
あ!メソッド名も考えないといかんのだよな、、、
helloを出すメソッドだから、helloでいいか?
function hello(){
print "hello";
}
0273nobodyさん
2009/03/16(月) 12:01:11ID:???よしよし、、、作業は順調だな、、、
これで、このメソッドを、さっき作った
クラスの中に、放り込めばいいのだよな、、、
class first{
function hello(){
print "hello";
}
}
0274nobodyさん
2009/03/16(月) 12:02:05ID:???これでクラスは完成、、っと、、、
次は、このクラスをnewして、
オブジェクトに代入せなあかんのだよな、、、
$obj=new first();
0275nobodyさん
2009/03/16(月) 12:03:00ID:???よしよし、、、
これでインスタンスができたから、
このインスタンスから、->で、クラス内の
メソッドにアクセスすればええんだよな、、、
print $obj->hello();
0277nobodyさん
2009/03/16(月) 12:05:51ID:???<?php
class first{
function hello(){
print "hello";
}
}
$obj=new first();
print $obj->hello();
?>
完成、、、と、、、。
カンタンに説明すると、
firstというクラスを定義しhello()というメソッドを定義し
そのメソッドの中でhelloを出力する命令を書きnewでfirstクラスの
インスタンスを作成しオブジェクト変数に代入しそのできてきた
インスタンスからhello()メソッドにアクセスして最終的にhelloを
画面に出すことに成功しました。
0279nobodyさん
2009/03/16(月) 12:08:53ID:???<?php
print "hello";
?>
0282nobodyさん
2009/03/16(月) 12:21:35ID:???0283nobodyさん
2009/03/16(月) 12:25:30ID:???0284nobodyさん
2009/03/16(月) 12:29:26ID:???ものの考え方・概念のことだから本質的にはそうだね
ただOOPの核となる継承やらカプセル化をする為にはクラスを使わないといけない
helloを出力するだけにわざわざクラス使うのはPHPではただの冗長
0285nobodyさん
2009/03/16(月) 13:00:26ID:???OOP勉強してる人いないの?
0286nobodyさん
2009/03/16(月) 13:10:52ID:???一応、スレはある。
が、もう死にかけの体。
PHPでOOP
ttp://pc11.2ch.net/test/read.cgi/php/1172205352/l50
0287nobodyさん
2009/03/16(月) 13:11:01ID:???おお、さすが最強PHPw。
ハーディ・ラマヌジャン数を出力するプログラムは、
Cで書いても、実行に数十秒かかる。
perlやpythonに至っては数分以上かかる。
だが、PHPなら、一瞬。むしろ、計算する必要すらない。
<?php
echo "1729";
?>
もちろん、パクリネタだ。
0288nobodyさん
2009/03/16(月) 13:25:45ID:???本気で勉強したいならJavaでやったほうがいいって散々言われてるだろ
オブジェクト指向という考え方を理解するためだけなら
わざわざPHPでやる必要はない
OOPに関するドキュメントの多いJavaでやったほうがいい
PHPでOOPなんてJavaやC#なんかをやってるやつの為にあると思っていい
0289nobodyさん
2009/03/16(月) 15:26:16ID:zNDXWAna($a < $b) ? $key = $a : $key = $b;
これの意味がちょっとわからないのですがif文で表すことってできますか?
0290nobodyさん
2009/03/16(月) 15:33:02ID:???$key = $a;
} else {
$key = $b;
}
0291nobodyさん
2009/03/16(月) 15:33:12ID:???普通はこう書く
if ($a < $b) $key= $a;
else $key= $b;
0292nobodyさん
2009/03/16(月) 15:52:09ID:zNDXWAnaなるほど!ありがとうございます。
ちなみに>>289の書き方とif使った書き方、どっちがいいとかあるのですか?
0293nobodyさん
2009/03/16(月) 15:59:13ID:???上記のような簡単なif文なら三項演算子でもいいと思うけど、複雑なものになると
可読性が落ちるので、その場合は素直にif文で済ませた方がよい
0294nobodyさん
2009/03/16(月) 16:01:19ID:???三項演算子は変数に入れることができる
なので結果を変数に入れたいときとかは便利だが
条件文をかくためだけに使うなら可読性を重視して
普通のif-else文を使ったほうがいい
三項演算子なんてなくてもコーディングできるので
他の人と共同開発なんかの場合は使わないほうがいい
0296nobodyさん
2009/03/16(月) 16:46:33ID:TMtB/4swメジャーな方法だとcaptchaを入れるんでしょうが、他に方法あったら教えてください。
たとえば、スパム業者(国内・国外問わず)のIPリストなんかはないんでしょうか?
よろしくお願いします
0298nobodyさん
2009/03/16(月) 17:14:59ID:???基本的な対策として
本文中のhttp://文字列を禁止する
もしくは出てくる回数を制限する
(最近はttp://からはじめたりドメインからはじめたりするスパムもある)
文字がどういうもので構成されてるかを見る
日本語[あ-ん]が必ず入っていないと駄目とか
[\x00-\x7f]のみの文字列だったら駄目とか
(最近は文章の最後のほうに日本語を適当に入れてくるスパムもある)
スパムをあえて投稿させてパターンを分析し
自分でリストを作成する(IPなり禁止文字列なり)
(IPはできればサーバ側ではじく)
このほかによく見る方法としては
ひらがなに対応するカタカナを入力してもらうとか
(captchaはすでに効果がないので代替手段を)
他の閲覧者にスパムかどうかを判定してもらってJavaScriptで非表示にする
(youtubeなんかで見るパターン)
とかかな
いずれも限界があるので閲覧者に被害が出ないようにだけ配慮すればいいんじゃない?
そういう観点では誤クリ防止にhttp://のオートリンクをしないとかが一番効果的
0299nobodyさん
2009/03/16(月) 17:19:04ID:???0301nobodyさん
2009/03/16(月) 17:28:15ID:???はい いいえ
↑これを入力させればいい
0303nobodyさん
2009/03/16(月) 17:55:37ID:???0304nobodyさん
2009/03/16(月) 18:04:29ID:GOOX8xiJMVCを考えた、フレームワークのような形になるのですが、
やっぱり皆さんもそうですか?それとも最初からフレームワーク使いますか?
0306nobodyさん
2009/03/16(月) 18:10:14ID:???しか対処できないんじゃないか?
ライブラリも多いし、作るのも難しくないだろ。
0308nobodyさん
2009/03/16(月) 18:49:09ID:???register_globalsをonにするとセキュリティ上よくなく
また、PHP6からはonにすることができなくなると聞きました
そこで質問なのですが、ハイパーリンクにごとにページの内容を変えたり
処理の内容を変えたりしたい場合は他にどのような方法があるのでしょうか
質問とは関係ないのですがスパム対策で 1 + 2 = [ ] といのを見たことがありますね
(数値は画像でランダムでした
0309nobodyさん
2009/03/16(月) 19:11:39ID:???基本的には POST あるいは GET メソッドでクエリを渡して、その値に応じて処理を分ける。
ハイパーリンクでなら GET 。
0310nobodyさん
2009/03/16(月) 19:21:10ID:TMtB/4swたくさんの意見ありがとうございます
カタカナをひらがなにっていうのはいいですね!
キャプチャの文字列をカタカナにするってのは無理なんでしょうか?
0311nobodyさん
2009/03/16(月) 19:25:46ID:???質問をランダムに生成できればいいんだが
質問と答えがあらかじめ決まってるようなものだとそのうち解析されるし
画像のひらがなをみてカタカナにしろぐらいだとCaptcha解析技術応用すれば
解析したひらがなに対応するカタカナに置き換えればできちゃうし
完全な対策なんてないからどこかで妥協するしかない
いろんなことやった上でなんとかして投稿してやろうなんて考える
海外のスパマーなんてそうはいないよ
仮にいろんな対策をした上で変なのが投稿されたらそれは日本人の愉快犯だ
というわけでそんな神経とがらせてスパマー対策しなくてもいいんじゃないだろうか
0312nobodyさん
2009/03/16(月) 19:32:15ID:???できますよ
そういうライブラリは探せばあるんじゃないかな?
単に文字を画像に出力するだけなら簡単なんですけどね
画像をゆがめたりする処理が難しいんじゃないかな
0313nobodyさん
2009/03/16(月) 21:48:57ID:???0314nobodyさん
2009/03/16(月) 21:50:47ID:???(1)書き込みをしようとしてきたら、クッキーを
受け入れてるかどうかを確認する。クッキーないやつは
書き込みできない
(2)書き込みしてきようとしたサーバーに簡易ポートスキャンをかけ、
オープンプロキシでないことを確認する。もしオープンプロキシだったら拒否
(3)
プロキシからの書き込みについては、手動で
リストを作成して、そのリストにIPが載っていたら、拒否。
こんな感じ。一部だけど。
0315nobodyさん
2009/03/16(月) 23:05:32ID:l8gT672Pログインしないと見れないページを作ったんだが、
画像はどうやって守ればいいんだ?
0316nobodyさん
2009/03/16(月) 23:07:02ID:???DNSBL(DNSブラックリスト)でぐぐれ
スパムちゃんぷるーが手軽
0318nobodyさん
2009/03/16(月) 23:35:54ID:l8gT672PPHPで画像を送出するってことかな?
ぐぐったけど具体的なコードがわからない
0319nobodyさん
2009/03/16(月) 23:51:20ID:???ヘッダ送信
readfile()で出力
0320nobodyさん
2009/03/16(月) 23:53:20ID:???0321nobodyさん
2009/03/17(火) 00:28:16ID:PIugUbr/$res = mysql_query($sql);
$row = mysql_fetch_array($res);
echo $row["name"];
こうしたらMySQLから1行取得出来ますが、もっと簡略化する方法は無いでしょうか?
特に、結果が1行・1フィールドだと分かっている場合、
mysql_fetch_arrayをして一旦配列に入れるのは不効率な気がしています。
0322nobodyさん
2009/03/17(火) 00:35:15ID:???0323nobodyさん
2009/03/17(火) 00:38:22ID:???SELECT name FROM address LIMIT 1
配列に代入云々は数マイクロ秒とかのゴミみたいな差しかつかない。
こいつは測定可能なレベルで実行性能に影響する。
0324321
2009/03/17(火) 01:11:49ID:???>>321のようなテーブルにアクセスして、指定値を取得する関数を
作っているのですが、 321のソースでフィールド「name」が異なる場合、
echo $row["name2"];
というように名称を指定して出力しなければいけません。
まぁ、関数を
function dbSelect($fld_name){
echo $row[$fld_name];
}
とすれば良いだけの気がしますが、
何か良い関数があるのかと思い、質問しました。
0325nobodyさん
2009/03/17(火) 02:58:59ID:???応援よろしくお願いします
0326nobodyさん
2009/03/17(火) 03:15:35ID:???0327nobodyさん
2009/03/17(火) 07:54:44ID:???PDOが使用可能であれば…
http://jp.php.net/manual/ja/pdostatement.fetchcolumn.php
0328nobodyさん
2009/03/17(火) 08:04:24ID:???ネックなのは一度もCMSを使ったことがないことだ・・
0329nobodyさん
2009/03/17(火) 09:18:29ID:???0330nobodyさん
2009/03/17(火) 10:44:32ID:Ib1RB6YLデータベースなどに以下のようなデータがあるとします。
id,word
1,日本
2,日本海
3,日本海溝
4,太平洋
これらを辞書として、
・日本海溝は太平洋側にあります。
という文章に最長で一致するものからリンクを張っていくのですが、
<a href="word/3"><a href="word/2"><a href="word/1">日本</a>海</a>溝</a>は<a href="word/4">太平洋</a>側にあります。
のように、重複してリンクが張られてしまいます。
すでにリンクが張られている言葉の内側にはリンクを張らないようにしたいのですが、
どのような対処法が考えられますでしょうか?
PHPで処理する場合の対処法を教えてください。
0331nobodyさん
2009/03/17(火) 11:14:15ID:???0332nobodyさん
2009/03/17(火) 11:32:03ID:???array(
'id' => 1,
'term' => '日本'
)
);
辞書がこんなかんじの配列にあって、
foreach ($words as $word) {
str_replace($word['term'], '<a href="word/' . $word['id'] . '">' . $word['term'] . '</a>', $body);
}
辞書は単語の文字数の長い順にソートさせてあります。
実際のコードとは違うのでどこか変かもしれませんが、流れはこんな感じです。
単純に、辞書の配列をforeachさせて、
str_replaceでアンカータグをつけたものに置き換えているだけです。
なので、重複して置き換えられてしまうのは当然なのですが、
対処法が思い浮かばなくて;
よろしくお願いします。
0333nobodyさん
2009/03/17(火) 11:33:23ID:???×
str_replace($word['term'], '<a href="word/' . $word['id'] . '">' . $word['term'] . '</a>', $body);
○
$body = str_replace($word['term'], '<a href="word/' . $word['id'] . '">' . $word['term'] . '</a>', $body);
0335nobodyさん
2009/03/17(火) 11:45:00ID:PBdJ+iXh【OS名】Windows XP
【PHPのバージョン】php4.4.4
【質問内容】
『−』を含んだ文字列を preg_match で検索するとエラーが発生するのでキーワードを preg_quote で処理すると
『ホームページ』が『ホ―[ムペ―[ジ』となってしまいます。
お知恵を貸して下さい。お願いします。
0336nobodyさん
2009/03/17(火) 11:48:44ID:Vq5xUXrnmb_internal_encoding('utf8');
mb_regex_encoding('utf8');
0337nobodyさん
2009/03/17(火) 11:49:06ID:qY/TJCjNそのエラーを表示しない方法はphp.iniで指定するってのは分かった。
これでエラーは出なくなったわけだが、画像はやっぱり出ない。
どうやらいつも同じファイルを処理した時にエラーになるので
画像ファイル側の問題だと思うけど
これをうまく処理する事はできるの?
そもそも何でこんなエラーがでるの?
知ってる人 教えてYO!
0338nobodyさん
2009/03/17(火) 11:53:27ID:???0340nobodyさん
2009/03/17(火) 13:22:05ID:PBdJ+iXh有難う御座います。
mb_regex_encodingでUTF-8にしてもやはりホ―[ムペ―[ジとなってしまいます。
>>339さん。
まだ勉強中の為に5への以降は難しいです…
0341nobodyさん
2009/03/17(火) 13:33:39ID:???0342nobodyさん
2009/03/17(火) 14:22:48ID:???0343nobodyさん
2009/03/17(火) 14:23:55ID:???0344nobodyさん
2009/03/17(火) 15:16:01ID:???0345nobodyさん
2009/03/17(火) 15:52:24ID:s4aiV5Akこのサイト(みんなのキャンパス:http://campus.nikki.ne.jp/)
のように掲示板の情報を一部だけ閲覧することができ、
登録・ログイン後に情報をある程度投稿すると全ての情報が閲覧できるような
会員制サイトを作成したいと思っています。
WordPressやOpenPNEで色々試したのですがいまいちうまくいきません。
こういうものは、どうやったら実現できるのでしょうか?
よろしくお願いします。
0346nobodyさん
2009/03/17(火) 15:55:22ID:???一部表示処理
} else {
全表示処理
}
0347nobodyさん
2009/03/17(火) 16:03:10ID:???とりあえず Wordpress の方なら is_user_logged_in() でログインしてるかどうか調べられるよ
0349nobodyさん
2009/03/17(火) 16:56:04ID:???各プラグインは自作しなければいけないからな。
俺も自作システムを作る時にWordpressやらOpenPNEやらを見たけど、
やっぱり「目的の仕様に合った作り方」をしているので、
それらを改造してオリジナルのシステムを作るのは無理があるよ。
0350345
2009/03/17(火) 17:04:11ID:s4aiV5Ak質問の仕方が悪くて申し訳ありません。
みんなのキャンパス:http://campus.nikki.ne.jp/
というサイトは登録後ログインしても、
大学の講義情報を3件書き込まないと全ての情報を見ることができません。
このように書き込まないと掲示板の他のページが見れない、といったように
するにはどういった処理が必要なのでしょうか?
よろしくお願いします。
0351335
2009/03/17(火) 17:08:29ID:PBdJ+iXhお陰で解決致しました。有難う御座います。
出来るだけ早く5に以降するよう努力致しますf^^;
有難う御座いました!
0352nobodyさん
2009/03/17(火) 17:13:30ID:???そこがどんな風な実装をしてるかは知らないけど。
ユーザー情報に「書き込んだ回数」を記録する。
一緒に「全ての情報を見れる権限」もフラグとしてDBに記録しておいて、書き込み回数が3回を越えた時点で true にする。
で、ページを表示するときにその権限を持ってるか持ってないかを判断する。
0353nobodyさん
2009/03/17(火) 17:17:13ID:???0355330
2009/03/17(火) 17:37:21ID:Ib1RB6YL0356nobodyさん
2009/03/17(火) 17:44:56ID:???自分がどうやってるか書いてないよな。推測すると、再帰でpreg_matchでもやってんのか?
まぁ、それはいいや。
単語リストをベースにトークナイザーにかけて処理するのがいいと思うよ。
0357345
2009/03/17(火) 18:00:29ID:s4aiV5Ak>>353さん、回答下ったみなさん、有難うございました!
2ちゃんねるはじめてだったのですが回答いただけてうれしかったです。
なんとなく方向がわかったので色々やってみます。
0358330
2009/03/17(火) 18:07:06ID:Ib1RB6YLすみません;
>>332 に書いたのですが、IDを出し忘れてしまって・・・
恥ずかしながら、トークナイザーというのをはじめて聞いたのですが、
どういったものなのでしょうか?
PHPには、その機能は備わっているのでしょうか?
0359nobodyさん
2009/03/17(火) 19:00:40ID:???0360nobodyさん
2009/03/17(火) 19:31:59ID:???アルゴリズムの問題だと思うけど、マッチングした文字列をいったん置き直して、展開しなすとかしたら?
日本海溝は太平洋側にあります。
<3>は太平洋側にあります。
<3>は<4>側にあります。
みたく文字列を順次置き直して、あとから <id>をリンクつきのHTMLで展開。
0361330
2009/03/17(火) 19:43:02ID:Ib1RB6YLそれだけの力があればそうしたいのですが・・・
基本的な考え方だけでもお願いしたいです。
>>360
おぉ!そういう方法がありましたね。
しかし、元の文章に<1>という文字列が含まれていた場合、面倒なことにならないでしょうか?
元の文章は、ユーザーが自由に投稿できる類のものなので・・・
<<<1>>>のように、括弧を増やしたり、!?!1!?!のように、複雑なものにすれば
出現する確立は減らすことができるのでしょうが、それでも0パーセントではないですし・・・
おっしゃるとおり、PHPに関する質問という範囲を超えているかもしれませんが、
どうかお付き合いお願いしたいです。
0362nobodyさん
2009/03/17(火) 19:51:31ID:???0363nobodyさん
2009/03/17(火) 19:51:53ID:???そんで>>360の処理のあとにもとにもどせばよい
0364nobodyさん
2009/03/17(火) 20:07:16ID:???優先順位が悪い
1,日本海溝
2,日本海
3.日本
の順でループして探索して見つかったら置き換えてbreakして位置を記録
最後に置き換えた位置から同様にして探索
これをEOFに達するまで繰り返す
0365364
2009/03/17(火) 20:10:19ID:???忘れてくれ
0366330
2009/03/17(火) 21:04:12ID:Ib1RB6YLリンク外かどうかの判定の仕方がわからなくて・・・
>>360 さんに提示していただいたように、特殊な記法に置き換える方向で行こうかと思います。
>>363
そうでした!一度エスケープのような処理をすればよかったのですね!
・・・これでなんとか解決したように思ったのですが、今度は、辞書に<id>という単語が含まれていた場合に、
問題が発生しました。
たとえば、辞書にこんな感じの単語があると、
id,word
5,<3>
長いものから置き換えるので、
まず「日本海溝」が<3>に置き換えられ、
その後、「<3>」がふたたびマッチしてしまい、
<5>に置き換えられてしまいます。
最終的に出力されるのは
<a href="word/5"><3></a>
になってしまいます。
意外と難しいですね;
>>364
位置を記憶するというのはやってみたのですが、
文字数の長い順に出現するとは限らないのでだめでした・・・;
0367nobodyさん
2009/03/17(火) 21:13:49ID:???そもそも最終的に生成するHTMLにタグじゃない < > を入れてどうする気だ。
テキストとキーワードにあらかじめhtmlspecialchars しておけばいいやん。
0368366
2009/03/17(火) 21:20:04ID:Ib1RB6YLそうでした;;
キーワードもエスケープ処理しておくことでうまくいきました!
おかげさまで、当初の目的が達成できました。
もっと精進します・・・w
レスをくれたみなさん、ありがとうございました!
0369nobodyさん
2009/03/17(火) 21:26:48ID:???"WEBプログラミング"なら、"WEB"や"プログラミング"より
"WEBプログラミング"の方が指定がより明確だから重要度が高いよね。
それに最長一致なら被らない。
処理の重さに関しては、保存時はゆっくり反映で良いので問題ない。
はてダみたいに、外部リンクのサイトのタイトルの文字列まで取得して
投稿を書き換えようとするのは外部サイトの都合で時々タイムアウトしてるけど、
自鯖の中でのリンクの置き換え程度なら、よっぽどキーワード数が多いとかじゃなければ
タイムアウトはまず起こらない。
キーワードを使うケースの場合、ROMユーザーが書き込むユーザーより圧倒的に多いし
そうでなければそのサービスは成り立たないから、ROMユーザーに対して
内容がキャッシュされてれば投稿時はかなり重い処理でも構わない。
0370nobodyさん
2009/03/17(火) 21:29:46ID:???0371nobodyさん
2009/03/17(火) 23:09:10ID:whdlEm3/を
array('a','b','c','d')
にする簡単な方法があれば教えて下さい
0372nobodyさん
2009/03/17(火) 23:25:11ID:???foreach( $oldarray as $key => $value ){
array_push( $newarray, $key ); array_push( $newarray, $value );
}
0373nobodyさん
2009/03/17(火) 23:50:49ID:???$newArray = array_merge(array_keys($oldArray), array_values($oldArray));
0374nobodyさん
2009/03/17(火) 23:52:05ID:???$newArray = array_keys($oldArray) + array_values($oldArray);
0375nobodyさん
2009/03/18(水) 02:04:43ID:???こっちで懐かしいやつが暴れてるぞ
0376nobodyさん
2009/03/18(水) 03:57:38ID:Zcgp4DkA0377nobodyさん
2009/03/18(水) 04:05:19ID:???0378nobodyさん
2009/03/18(水) 08:50:19ID:???0379nobodyさん
2009/03/18(水) 09:22:56ID:???is_int
のことじゃないかとエスパーしてみる
0380nobodyさん
2009/03/18(水) 09:24:58ID:???0381nobodyさん
2009/03/18(水) 09:39:50ID:???///)
/,.=゙''"/
/ i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!!
/ / _,.-‐'~/⌒ ⌒\
/ ,i ,二ニ⊃( ●). (●)\
/ ノ il゙フ::::::⌒(__人__)⌒::::: \
,イ「ト、 ,!,!| |r┬-| |
/ iトヾヽ_/ィ"\ `ー'´ /
0382nobodyさん
2009/03/18(水) 10:52:55ID:???正規表現で調べればよい
if (preg_match("/^[0-9]+$/", $string)) {
妥当
}
0384nobodyさん
2009/03/18(水) 11:00:44ID:???なら
if (preg_match("/^-?[0-9]+$/", $string)) {
妥当
}
かな
0385nobodyさん
2009/03/18(水) 11:03:09ID:???またパターンを増やせばよい
0386nobodyさん
2009/03/18(水) 11:07:58ID:???その辺も考慮しないといかんかな
strlenで32ビット以内かどうか調べる処理とか
0387nobodyさん
2009/03/18(水) 11:10:31ID:???2^32を2の補数で表した値の範囲かどうかだな
?2147483648〜2147483647
0388nobodyさん
2009/03/18(水) 11:22:00ID:???0389nobodyさん
2009/03/18(水) 11:46:44ID:???それから、0123は整数か?
0390nobodyさん
2009/03/18(水) 12:01:38ID:???厳密な数値かはわからないよね
だってそれだと下のどれでも引っかかるからね
123
-123
"123"
"-123"
0391nobodyさん
2009/03/18(水) 12:13:56ID:???0392nobodyさん
2009/03/18(水) 12:33:33ID:???0393nobodyさん
2009/03/18(水) 13:00:35ID:???0394nobodyさん
2009/03/18(水) 13:17:37ID:???0395nobodyさん
2009/03/18(水) 13:24:34ID:???0396nobodyさん
2009/03/18(水) 13:27:19ID:???いちいちグチグチ言うやつは黙ってればいい
0397nobodyさん
2009/03/18(水) 14:23:57ID:R7u4YHhcデジカメとかだとBMPで出力するカメラも結構有るし需要あると思うけど。
ビットマップからイメージ作れるユーザー関数ありますか?
0399nobodyさん
2009/03/18(水) 14:47:40ID:meKzf6DJ0400nobodyさん
2009/03/18(水) 15:58:45ID:???0402nobodyさん
2009/03/18(水) 16:42:30ID:???0403nobodyさん
2009/03/18(水) 17:10:10ID:???画面半分に納めるのはよいプラクティスだって昔だれかがいってた。
スクロールしないと見れないメソッドはクソの匂いがするとも。
0406nobodyさん
2009/03/18(水) 19:48:17ID:???メソッドを何行に収めるかの話が
関係あるのか?
0407nobodyさん
2009/03/18(水) 20:07:04ID:???0408nobodyさん
2009/03/18(水) 20:37:37ID:???0410nobodyさん
2009/03/18(水) 21:14:44ID:???0412nobodyさん
2009/03/18(水) 23:15:59ID:gf2MXR+O開発のローカルのwinかで、
デバッグ云々用とかで判別するのは
if (DIRECTORY_SEPARATOR == '/') { ...
で問題なし?
0413nobodyさん
2009/03/19(木) 00:18:23ID:???それと、Win環境で本番環境同様の状態をエミュレートしたくなった場合も身動きが取れなくなる。
function isDevelopEnvironment()
とかをどこかグローバルにアクセスできる場所(グローバル関数か、クラスのstatic関数)に置いとけ。
他の場所からはこの関数で判定するようにしておけば、判定方法が変わっても変更が一箇所で済む。
実装と意図の分離は設計の基礎。
呼び出し側でやりたい事(意図)は環境の判別なのだから、関数名はそうなっているべき。
環境を識別するのにDIRECTORY_SEPARATORを使う、ってのは実装の話で、意図じゃない。
(もっと言うなら、開発環境がWinで運用環境がUnixなのも「たまたまそうなってる」だけの、つまり実装依存な話)
で、実装の話だが。
俺ならホスト名を開発環境と本番環境で変えておいて、それで識別する。もしくは設定ファイルか何かに書いておく。
WinとUnixを識別できればそれでいい、ってんなら>412で問題ない。
php_uname()関数の例にもディレクトリ・セパレータでOSを判別するコードが載っている。
0414nobodyさん
2009/03/19(木) 00:19:30ID:???それ。
is_numeric()は"."を許したよーな気がする。
気をつけたほうがいいよ〜
D:\tools\php-5.2.8-Win32>php -r "var_dump( is_numeric( '1.5' ) ) ;"
bool(true)
0415nobodyさん
2009/03/19(木) 00:31:24ID:???これはどう?int判定
0416nobodyさん
2009/03/19(木) 00:34:08ID:???0417nobodyさん
2009/03/19(木) 00:35:21ID:???行数っていうのとは違うけど
コメントを書かなくていいくらいに分かり易い
っていうのを目安にするといいっていう考え方もあるね。
コメントで「○○を処理する」とか入れるくらいなら
そのまとまりをprivateなメソッドにする感じ。
まぁ好き嫌いもあるけどねー。
0418nobodyさん
2009/03/19(木) 00:46:01ID:???OOPっていう概念よりも
そもそもプログラミングにおいてクラス使うと何が便利?
って考えたほうが分かりやすいかもしんない。
0419nobodyさん
2009/03/19(木) 00:49:33ID:???常識で考えて・・
0421nobodyさん
2009/03/19(木) 09:10:09ID:8+csUcRFローカルのサーバ(localhost)上ではオープンできないのでしょうか?
if(!$sock = fsockopen("localhost",80,$errNo,$errStr,10)){
echo "エラーです";
}
として開こうとしても、エラーになります。
0422nobodyさん
2009/03/19(木) 09:28:15ID:???0423421
2009/03/19(木) 09:32:30ID:???0424nobodyさん
2009/03/19(木) 09:39:19ID:???最近のアップデートで、hostsを書き換えてlocalhostを消すものがあったと話題になってた。
3/10のWindows Defender更新でhostsが書き換えられる!? - スラッシュドット・ジャパン
ttp://slashdot.jp/articles/09/03/11/0924257.shtml
0425nobodyさん
2009/03/19(木) 11:06:59ID:GwakzSEQ【質問内容】
クラスのメンバ変数についての質問です。
あるメンバ変数が宣言されたかどうかを調べるにはどうしたらよいでしょうか?
代入はされていないのでissetではダメでした。
0426nobodyさん
2009/03/19(木) 11:10:22ID:???もしくは
get_class_vars
0428nobodyさん
2009/03/19(木) 11:18:46ID:???0429nobodyさん
2009/03/19(木) 11:37:30ID:???0430nobodyさん
2009/03/19(木) 12:38:06ID:???http://jp.php.net/manual/ja/function.property-exists.php
0431nobodyさん
2009/03/19(木) 13:18:49ID:???もっと、スマートの方法ありますか?
(h1の要素は不特定、ない場合もあります。)
<?php
$file = "
<html><body>
<h1 id=\"news\" name=\"news\" style=\"size: medium;\">WBC速報</h1>
<p>4回裏 2 - 0</p>
</body></html>
";
preg_match_all('/<h1[^>]*?>(.*?)<\/h1>/is',$file , $match);
$tag = $match[0][0];
$title = $match[1][0];
$file = str_replace($tag,"<div>{$title}</div>", $file);
echo $file;
?>
0432nobodyさん
2009/03/19(木) 13:21:15ID:???0435nobodyさん
2009/03/19(木) 21:43:36ID:???strval(intval($str)) === $str
でいいだろ、面倒くせえ。
0438nobodyさん
2009/03/20(金) 04:10:54ID:???0440nobodyさん
2009/03/20(金) 08:33:43ID:???0441nobodyさん
2009/03/20(金) 08:38:37ID:???0442nobodyさん
2009/03/20(金) 08:40:35ID:???「悪名高きda.me..@docomo.ne.jpを引っ掛ける一方で、dankogai+regexp@gmail.comを弾いてしまう」
ってのはどうなん?
ドキュモでda.me..@docomo.ne.jpが取得できる以上、
それをウェブアプリ側ではじくわけにはいかないじゃん
RFCを守るべきはdocomoであって、ウェブアプリは現実に準拠するしかない
0443nobodyさん
2009/03/20(金) 08:45:13ID:???http://labs.cybozu.co.jp/blog/akky/archives/2007/10/phpspot-bad-regex.html
このトラウマを刺激されたから過剰反応したんだなw
0444nobodyさん
2009/03/20(金) 08:47:16ID:???せめて自分で確かめてから紹介しようよw
>>phpspot
0445nobodyさん
2009/03/20(金) 08:57:25ID:???dankogai+regexp@gmail.com はRFCに準拠している。
ドキュモを弾くかはか方針次第だが、このアドレスを弾いてはいけない。
元々phpspotの提示していたコードが役に立たないのは確か。
出力例が「正しいかもしれない」「間違ってるかもしれない」な事からも明らか。
こういうのは「絶対正しい」「間違ってるかも」、もしくは「正しいかも」「絶対間違ってる」のいずれかを返さなければ糞の役にも立たん。
0446nobodyさん
2009/03/20(金) 09:47:11ID:???0447nobodyさん
2009/03/20(金) 09:59:17ID:???0448nobodyさん
2009/03/20(金) 10:02:52ID:???+\とか記号を入れるメアドなんて普通の人は持ってないだろ
0449nobodyさん
2009/03/20(金) 10:23:25ID:???なんというか、ここにも馬鹿が多いな。
「食べやすい大きさに野菜を切るには」という記事に「カレーは野菜が大きいほうが美味しい」とか言ってるようなものだぞ、それ。
0450nobodyさん
2009/03/20(金) 10:31:42ID:???0451nobodyさん
2009/03/20(金) 10:49:03ID:???0453nobodyさん
2009/03/20(金) 11:54:25ID:MICYHS4W【PHPのバージョン】php5.2.0-8
PukiWiki Plus!で「ajaxtree.inc.php」プラグインを使おうとしたのですが
キャッシュファイルの作成が正常に行われず色々と調べてみていたところ
下記の部分でよくわからない動きをしていることがわかりました。 (ajaxtree.inc.php 198行目付近)
foreach ($pages as $page) {
if ($leaf[$page] === false) {
plugin_ajaxtree_update_cache($page);
}
echo $page . " " . $leaf[$page] . "<br>\n"; //debug
}
具体的には「plugin_ajaxtree_update_cache」関数が一度でも実行されると
その時点でループが終わってしまい配列の残りの要素が処理されなくなってしまうといった感じです。
(関数から戻ってきたあとのechoまでは処理されています)
ループ後の「$pages」の値には特に変化が無く、エラーも発生していませんでした。
なぜforeachが途中で止まってしまうのかわからずに困っています。
この場合、どういった原因が考えられるのでしょうか?
0454nobodyさん
2009/03/20(金) 11:55:01ID:uQ1BNnXRfsockopenで送信されたPOSTやGETを受け取ると思うのですが、
連続送信防止の処理って入れられるのでしょうか?
WEBページのフォーム処理からだと、cookieで制御できると思うのですが
fsockopenは出来ないような気がしています。
0456nobodyさん
2009/03/20(金) 12:02:10ID:???ドッカン
m ドッカン
=====) )) ☆
∧_∧ | | / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( )| |_____ ∧_∧ < おらっ!出てこい>>449
「 ⌒ ̄ | | || (´Д` ) \___________
| /  ̄ | |/ 「 \
| | | | || || /\\
| | | | | へ//| | | |
| | | ロ|ロ |/,へ \| | | |
| ∧ | | | |/ \ / ( )
| | | |〈 | | | |
/ / / / | / | 〈| | |
/ / / / | | || | |
/ / / / =-----=-------- | |
0457nobodyさん
2009/03/20(金) 12:06:26ID:???RFCに準拠するばかりで現実で使えないんじゃ同じようにクソ
0458453
2009/03/20(金) 12:31:15ID:MICYHS4Wありがとうございます。
該当するコードに特にエラーなどは発生していませんでしたが解決しました。
配列を関数の戻り値の参照として受け取っていたためおかしな挙動をしていたようでした。
$pages =& plugin_ajaxtree_get_pages();
失礼いたしました。
0459449
2009/03/20(金) 12:38:12ID:???実装の問題じゃない。ビジネスロジックの問題だ。何をどこまで許容するかは技術の問題じゃない。
コーディングする奴が勝手に決めてはいけない問題だし、従って前提条件が提示されないと「正しい」コードなんぞ書けっこない。
何が「正しい」のか、仕様が決まってないんだから当たり前だな。
「正しい」メールアドレスを「RF2822準拠」と定めるなら、PHPSPOTや百式のコードは明白に間違っていて、小飼のコードは正しい。
docomoの非準拠アドレスを許容しなければいけない、とか、gmailの無限アドを拒否しないといけない、という条件下なら小飼のコードは間違っているだろう。
実際、小飼の出力メッセージはちゃんと「RFCに準拠しているか」で出るだろ。
あのコードが解こうとしている判定問題は「RFCに準拠しているか」であって、「一般社会で通用するメールアドレスか」じゃない。
それをてめえらは勝手に問題を取り替えてガタガタ抜かしてるだけなんだよ。これだからPHPerは馬鹿だとか言われるんだ。
RFCに準拠していないアドレスが通ったり、準拠しているアドがNGだったら文句を言うべきだが、それ以外は筋違いだ。
0460nobodyさん
2009/03/20(金) 12:41:36ID:???0461nobodyさん
2009/03/20(金) 12:47:51ID:???RFCに準拠してる正規表現はブログに書いてもOK
RFCに準拠してない現実に即した正規表現はブログに書いたらNG
ってことですね、わかります
0464nobodyさん
2009/03/20(金) 16:20:44ID:???0465nobodyさん
2009/03/20(金) 16:21:47ID:???何が言いたいかというとRFC必死だな(笑)
0466nobodyさん
2009/03/20(金) 18:48:51ID:???$は行末判定なので最後に改行コードが付いてても通ってしまう。
ちゃんと\zを使えよ
弾&phpspotともどもm9(^Д^)プギャー!
0467nobodyさん
2009/03/20(金) 18:51:14ID:???0468nobodyさん
2009/03/20(金) 18:56:31ID:???0469nobodyさん
2009/03/20(金) 19:01:48ID:???ある程度のシェアを取った言語なので、
perlの正規表現の文法は他の言語にも
そのまま受け継がれていくわけだな。
つまり勉強したことが無駄にならず
再利用できると。
シェアととると、こういう「いいこと」があるんだよな。
0470nobodyさん
2009/03/20(金) 20:16:44ID:???その上でどんなスクリプトでも走るエンジンみたいのどうなったんだよ
えーこら
0471nobodyさん
2009/03/20(金) 22:34:03ID:oZ8fGjsV以下のような方法も考えたのですがページを移動するか更新しないとクッキーを読めないので困ってます
どなたかアドバイスお願いいたします
javascriptでクッキーを発行する
↓
クッキーが読み込めたらjavascriptがオン・読み込めなければオフ
0472nobodyさん
2009/03/20(金) 22:44:55ID:???処理の順序を考えれば分かるが、無理。
0473nobodyさん
2009/03/20(金) 22:53:31ID:???0474nobodyさん
2009/03/20(金) 23:15:48ID:???いけない状況って何だろう?
0475nobodyさん
2009/03/20(金) 23:17:56ID:???0476nobodyさん
2009/03/20(金) 23:23:33ID:???0477nobodyさん
2009/03/20(金) 23:42:53ID:???なんで?
Ajax使う前提なら、こんなことで悩まんでしょ。
有効な時にメッセージ出したいなら、Javascriptで出せば良いし、使えない時にメッセージ出したいなら
NOSCRIPT使えばいいし。
トップページへのアクセスだけで、Javascriptを有効にしてるかどうかサーバ側に記録を取りたいとか、そんな感じ?
0478nobodyさん
2009/03/20(金) 23:59:59ID:???だとしても、JavaScript経由で鯖にアクセスさせるだけだしな。
PHPではできない、というのは正しい。
まあ、質問が抽象的すぎるんでなんとも言えん。どうして質問掲示板の類の質問者は情報を出し惜しみするんだか。
0479nobodyさん
2009/03/21(土) 00:11:32ID:???それはいいがかり。
おまえだって18世紀にペストにかかったら
「ネズミが運んできた病原菌のせいで感染しました」
とは医者には報告しないはずだ
0480nobodyさん
2009/03/21(土) 00:49:23ID:???0481nobodyさん
2009/03/21(土) 02:16:36ID:???0482nobodyさん
2009/03/21(土) 02:24:45ID:???0483nobodyさん
2009/03/21(土) 02:34:45ID:???0484nobodyさん
2009/03/21(土) 19:33:45ID:Kz7V9K+/0486nobodyさん
2009/03/21(土) 22:18:16ID:???そういうのがあると、レンタルサーバ屋に怒られるんですか?
0487nobodyさん
2009/03/21(土) 22:29:13ID:???0489nobodyさん
2009/03/21(土) 22:39:17ID:???0490nobodyさん
2009/03/21(土) 22:46:46ID:???0491nobodyさん
2009/03/21(土) 23:10:45ID:???ありがとうございました。
0492nobodyさん
2009/03/21(土) 23:18:28ID:???0495nobodyさん
2009/03/22(日) 01:29:46ID:???0496nobodyさん
2009/03/22(日) 01:34:00ID:???/**
*
* @package hogehoge
* @version $Id: index.php 0000 2010-01-01 14:00:00Z hogehoge$
* @copyright (c) 2010 fugafuga
* @license ttp://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
こんなの見かけるけど、これは手動で書いてるんですか?
まさかね?
0497496
2009/03/22(日) 01:35:02ID:???0498496
2009/03/22(日) 01:35:33ID:pWqW8Yq7ごめんなさい
0500nobodyさん
2009/03/22(日) 05:17:23ID:???メニューに一項目増えた場合 全部のHTMLページを
書き換える処理ってしてるんですか?
0503nobodyさん
2009/03/22(日) 06:19:37ID:???0504nobodyさん
2009/03/22(日) 06:22:33ID:???自分はプログラムで呼び出すか、SSIしか思い浮かばないです
0505nobodyさん
2009/03/22(日) 06:23:55ID:???0506nobodyさん
2009/03/22(日) 06:25:11ID:???すいません。ただ、require include で呼び出したページは
グーグルランクつきにくいです
SSIにしてみたところ、それよりはわずかにつきやすかったです
CMSがHTMLファイルなら、どうやって外部からメニューを
呼び出しているかわからなかったので
0507nobodyさん
2009/03/22(日) 06:28:00ID:???0509nobodyさん
2009/03/22(日) 06:31:26ID:???0510nobodyさん
2009/03/22(日) 06:32:34ID:???グーグルランクのつきが明らかに悪いです(個人の弱小HP)
そしてSSIに変えたところ、3つほどつきました
現在SSIのほうがPHPによる外部ページ呼び出しよりランクがつきやすいです
内部は全く変えてないです
0511nobodyさん
2009/03/22(日) 06:33:30ID:???0512nobodyさん
2009/03/22(日) 06:37:40ID:???0513nobodyさん
2009/03/22(日) 07:18:32ID:???0514nobodyさん
2009/03/22(日) 09:24:55ID:???0517nobodyさん
2009/03/22(日) 10:06:20ID:???A型はひつこいな
0518nobodyさん
2009/03/22(日) 10:11:46ID:???0519nobodyさん
2009/03/22(日) 10:11:46ID:???0520nobodyさん
2009/03/22(日) 10:24:48ID:???Nucleusでアクセス解析いれたら劇重になって、翌日、鯖停止->強制解約になったよ。オレ
0523nobodyさん
2009/03/22(日) 11:33:37ID:???0524nobodyさん
2009/03/22(日) 11:39:35ID:???これ以上やるなら専用スレ立ててやるからそっちで共食いしてくれ
0525nobodyさん
2009/03/22(日) 11:46:58ID:???バージョン管理システムを導入するといいです
>>496
いくつかのIDEでは/**と入れて改行すると自動で作ってくれます
EclipseのPHPプラグインあたりだと
最初に関数を定義してからその上に/**を入れて改行すると
下の関数を見て引数があったら@param
返り値があったら@returnを生成してくれます
その他については必要であったら自分で記述するか
デフォルトの値として設定可能なものなら設定するしかありません
0526nobodyさん
2009/03/22(日) 11:49:05ID:dhNIUg3nどうすればいいですか?
get_multi_array($array,array('hoge','fuga','poge'))
→$array['hoge']['fuga']['poge']を取得
こういう動作をさせたいのです
0530nobodyさん
2009/03/22(日) 12:57:11ID:???いいんだよ byスレ回り先生
自作自演する若者はためが無い by湯浅誠
自作自演格差社会 〜492のレス能力格差がスレッドを引き裂く
>>528は、新自由主義者
何でも排除して、格差を作ろうとする
0532nobodyさん
2009/03/22(日) 14:07:27ID:ofSdd/CM"<a href='".$value."'>"などとしたときに
htmlspecialcharsだけでは変数にscript:〜が含まれていた場合に回避できませんが
変数の前に"http://sample.com/"とURLがあれば問題ないのでしょうか
実際Firefox,safariなどでは普通にnot foundになります
0533nobodyさん
2009/03/22(日) 14:09:38ID:???こんなのどう?連想配列でも多分問題ないと思う。
<?php
function get_multi_array(array $a, array $keys) {
$tmp = &$a;
foreach ($keys as $key) {
if (! is_array($tmp) || ! array_key_exists($key, $tmp)) return null;
$tmp = &$tmp[$key];
}
return $tmp;
}
// 以下テスト
$array =array(
array(
array(1,2,3), array(4,5,6),
),
array(
array(7,8,9), array(11,12,13), array(14,15,16)
)
);
var_dump(get_multi_array($array, array(0, 1, 2)));
0535nobodyさん
2009/03/22(日) 14:33:52ID:???0537nobodyさん
2009/03/22(日) 17:29:33ID:XWTxCtFo0538nobodyさん
2009/03/22(日) 17:35:05ID:XWTxCtFo<input type="text" name="title" value=""><br>
<textarea cols="80" rows="7" name="text"></textarea>
<input type="submit" value="send">
</form>
<?php
$title="<h2>".$_POST["title"]."</h2>";
$text='<div class="text">'.$_POST['text'].'</div>';
if ( get_magic_quotes_gpc()) {
$title = stripslashes($title);
$text=stripslashes($text);}
$text = nl2br($text);
$log = 'log/200902.htm';
$lock = 'lock.txt';
$lock_fp = fopen($lock,"w");
flock($lock_fp,LOCK_EX);
$old_log = file_get_contents($log);
$fp = fopen($log,"w");
fwrite($fp,$title);
fwrite($fp,$text);
fwrite($fp, $old_log);
fclose($fp);
flock($lock_fp,LOCK_UN);
fclose($lock_fp);
?>
これ、とあるサイトから引用してきたスクリプトなんですけど、どうやっても$_POSTの値を取得できずにlog/200902.htmの内容が<h2></h2><div class="text"></div>と内容が空になってしまいます。
POSTの値を取得するにはどうしたらいいんでしょう?どなたか知識のある方、ご教授下さい。
0539nobodyさん
2009/03/22(日) 17:37:44ID:???var_dump($_POST);exit;
0540nobodyさん
2009/03/22(日) 17:39:58ID:???自身に送るなら空白
0542nobodyさん
2009/03/22(日) 17:52:24ID:XWTxCtFoformのアクションプロパティは合ってるかと思いますが…。log/200902.htmというファイルに書き込みたいので。
0543nobodyさん
2009/03/22(日) 17:55:25ID:???データを渡すスクリプトのパスを書くんだよ
どのファイルに書き込むかとかは、
スクリプトの方で処理すること
$_POSTの中身が空の配列ってことは、
データが渡されてないってこと
0544nobodyさん
2009/03/22(日) 18:02:21ID:XWTxCtFoarray(2) { ["title"]=> string(4) "test" ["text"]=> string(4) "test" }
これはデータが渡されてるということなんでしょうか。しかしlog/200902.htmの中身は相変わらずです…。
0545nobodyさん
2009/03/22(日) 18:09:39ID:???それはそうとまずHTMLを理解しないと
0546nobodyさん
2009/03/22(日) 18:12:30ID:XWTxCtFoHTMLにも理解がありませんでした。重ね重ね恥ずかしいかぎりです…。
0547nobodyさん
2009/03/22(日) 18:17:48ID:XWTxCtFo本当に無知な私にここまで親身になってくれてありがとうございました。本当に感謝します。
また何かわからないことがあったら自分で調べて、それでもわからなかったらまたこのスレにお世話になると思います。その時はどうか暖かい目で見てやってください…
0548nobodyさん
2009/03/22(日) 18:27:06ID:???0549nobodyさん
2009/03/22(日) 18:34:08ID:XWTxCtFo0550nobodyさん
2009/03/22(日) 18:45:54ID:???まあいいや
0551nobodyさん
2009/03/22(日) 19:52:51ID:???例えば2chは、以下のようなテキスト形式でデータを保存している(本当は違うんだが、まあ割愛)。
nobodyさん<><>2009/03/22(日) 18:34:08 ID:XWTxCtFo<> はい。htmlにさせて頂きました... <>
そのログファイルの内容を読み込んで、HTMLとして整形して書き出すPHPで本文を表示させるわけだ。
HTMLで保持しない理由はいくつかある。パッと思いつくのは
柔軟性
例えば、表示されるHTMLを別の形にしたいとか、RSSも書き出したい、という時に再利用しづらい。
記事削除passをつけたいとか、データ保持先をDBにしたいとか、色んな拡張性が失われたりもする。
セキュリティ
本文に<script>alert('うけけけけけ');</script>と書かれたらどうなる?とか。
どちらにせよ対策は必要なのだが、ログをHTMLとして持っていると、どこで対策すりゃいいのかが曖昧になりやすい。
容量
無駄にデカくなる。大した問題じゃないが。
0552nobodyさん
2009/03/22(日) 20:56:06ID:???0553nobodyさん
2009/03/22(日) 23:17:35ID:???ログをhtmlとして書き出す掲示板はkentも作ってたな
0554nobodyさん
2009/03/22(日) 23:23:17ID:???ログをHTMLとして書き出しておくのは
論外といったら失礼かもしれないけど、
明らかに保守性なさすぎじゃないか?
0555554
2009/03/22(日) 23:29:53ID:???保持しておくだった
0556nobodyさん
2009/03/22(日) 23:30:00ID:???0557nobodyさん
2009/03/22(日) 23:30:47ID:???一件一行で、ヘッダとフッタを除いた状態で保存するなら、そんなに保守性もわるくないと思うが。
0558nobodyさん
2009/03/22(日) 23:34:55ID:???0559nobodyさん
2009/03/22(日) 23:43:37ID:???0560nobodyさん
2009/03/22(日) 23:49:52ID:cLpptsUH穴がないか不安になってきたので、質問します。
要点のみを記載します。
・ID(又はメールアドレス)とパスワードをフォームに入力して、
MySQL内の情報を照合
・正しければトークン用のコードを発行し、ユーザ情報を更新
(テーブルのtokenフィールドに作成した値を追加)
・その他、セッション変数にはログイン時のUAとIPアドレスを代入
・各ページアクセス毎にセッション情報が正しいかをIFで調べる
(会員情報編集などの場合、ユーザIDとトークンコードが正しいか照合)
・パスワードはmd5で保存
と言うことをしています。他に「これもしろ」と言うことはありますでしょうか?
0561nobodyさん
2009/03/22(日) 23:50:51ID:???0562nobodyさん
2009/03/22(日) 23:51:39ID:???MySQL内の情報を照合
(1)この時に、SQLインジェクション対策はされているのか?
0563nobodyさん
2009/03/22(日) 23:52:30ID:???0566560
2009/03/23(月) 00:16:39ID:???しています。まず入力値にhtmlspecialcharsをかけて
DBアクセス時にmysql_escape_stringをしています。
ソースに関してですが、莫大な量になるので掲載を控えます。
それにソースや構文の組み立てを聞きたいのではなく、
自分の足りない知識・誤っている知識を指摘していただきたく思い、質問しました。
0567nobodyさん
2009/03/23(月) 00:29:46ID:???0570nobodyさん
2009/03/23(月) 02:53:59ID:RPfvHZ0v> 0123456789
test.php
> $fp = fopen("test.txt", "r");
> while(!feof($fp)) {
> print fread($fp, 1);
> flush();
> sleep(1);
> }
> fclose($fp);
test2.php
> $fp = fopen("test.txt", "w");
> fwrite($fp, "aaaaaaaaaa");
> fclose($fp);
>
> $fp = fopen("test.txt", "r");
> print fread($fp, 10);
> fclose($fp);
test.phpが走ってる最中にtest2.php走らせても
test.phpの出力にtest2.phpの書き換えは反映されなかった。
読み出しに関してはルーズな実装してもOKって事?
0571nobodyさん
2009/03/23(月) 05:27:55ID:???0572nobodyさん
2009/03/23(月) 05:29:12ID:???ごめん。
0573nobodyさん
2009/03/23(月) 22:30:27ID:???>>568
ID(もしくはメールアドレス)は、必ずしもブラウザで表示するわけじゃないから、
・DB内の情報と照合する時 → mysql_escape_string(mysql_real_escape_string)
・ブラウザに表示する時 → htmlspecialchars
みたいにする、ってことでおk?
じゃないと、ID(もしくはメールアドレス)を更新する際に、'<'が'<'って保存されてしまうからっていうことかな。
見当違いだったらすまん。
0574nobodyさん
2009/03/23(月) 22:33:45ID:???>>573訂正
じゃないと、ID(もしくはメールアドレス)を更新する際に、'<'が'&lt;'って保存されてしまうからっていうことかな。
0575nobodyさん
2009/03/23(月) 22:38:01ID:???保存されてしまうことによって再利用するとき不便になるからだね
0576nobodyさん
2009/03/23(月) 22:58:16ID:???0578nobodyさん
2009/03/23(月) 23:45:08ID:uVBii4+5PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\PHP\\ext\\php_curl.dll'
と同じようなログがたくさん出ます。
でも、該当のファイルは存在します
何が原因でしょうか?
0579nobodyさん
2009/03/23(月) 23:53:02ID:???でもさ、ID・メールアドレスを更新する時に<を使う場合ってあるの?
IDはだいたい半角英数字だし、メールアドレスもそうでしょ?
0580nobodyさん
2009/03/24(火) 00:01:55ID:???100%ってことはないので出口でサニタイズしろってエロい人が言ってた
0581nobodyさん
2009/03/24(火) 00:17:34ID:???0582nobodyさん
2009/03/24(火) 00:41:05ID:???PHPのバージョンは?
DOS窓から、php -mや、php -iって打っても、エラー出る?
5.2.9-1なら
> Please note that the cURL related function is disabled when open_basedir or safe_mode enabled.
ってニュースが出てたけど、関係しそうなとこある?
0583nobodyさん
2009/03/24(火) 04:21:02ID:???echo $a[0] = 'aaa';
echo $a[0][0] = 'news';
こうすると、なぜかバグルのですが、なぜですか?
0584nobodyさん
2009/03/24(火) 04:25:00ID:???出力だけしてくださいよ
0586nobodyさん
2009/03/24(火) 04:26:30ID:???echo $a[0] = 'aaa';
echo $a[0][0] = 'news';
print_r($a);
↓結果
Array ( [0] => jaa )
0589nobodyさん
2009/03/24(火) 04:30:23ID:???<?php
$a[0] = 'aaa';
$a[0][1] = 'jjjjk';
print_r($a);
Array ( [0] => aja )
0590nobodyさん
2009/03/24(火) 04:32:35ID:???バグじゃないよ。
$a[0]は文字列
$a[0][1]はその2文字目を代入しようとしてる文字列の1文字目で置換せよ
だから、$aは1要素配列のまま。
そんだけ。
0594nobodyさん
2009/03/24(火) 04:39:30ID:???0595nobodyさん
2009/03/24(火) 04:42:07ID:???自分初心者だったのでこんなのあったんだとびっくりしました
0597nobodyさん
2009/03/24(火) 04:49:11ID:???そうですか。今まで掲示板とブログ作ったんですか
そのような配列の使い方を書いてあるのがみたことなくて
気になりました
0598nobodyさん
2009/03/24(火) 07:45:46ID:???0599nobodyさん
2009/03/24(火) 07:53:32ID:???単に、1次元配列の要素が文字列で
その文字列にstring offsetでアクセスしてるだけ
0600586
2009/03/24(火) 08:34:05ID:???初心者本には、
あくまで 配列は個々の箱だと意識してました
データ型を指定しなくていいように、箱も好きに使っていいと
思ってました。
0601nobodyさん
2009/03/24(火) 08:34:37ID:???0602nobodyさん
2009/03/24(火) 08:52:05ID:???バグ
>>590は下のコードと勘違いしてるんじゃないのかね
$str = "12345";
$str[0] = "a";
echo $str; // a2345
0604nobodyさん
2009/03/24(火) 08:56:49ID:???0605nobodyさん
2009/03/24(火) 09:01:48ID:???静的な変数(配列)の型定義というのは
型に応じたメモリ領域を確保するということ(Javaでint型なら4バイトlong型なら8バイト等)
PHPはインタプリタだからその辺を動的にやってるわけ
この辺をちゃんと理解してないと正しいイメージはわかない
配列は箱ではなく連続したデータというイメージが正しい
メモリ上ではそのように配置されている
0606nobodyさん
2009/03/24(火) 09:45:45ID:VfITkfEnversionは5.2.3だったと思います
C:\php>php -m としたら、「isqlt09a.dllが見つからなかったため、このアプリケーションを開始できませんでした。
インストールし直すと解決する場合があります」 とアラートが出ました
C:\php>php -m
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_ifx.dl
l' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_oci8.d
ll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_pdo_oc
i.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_pdo_oc
i8.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_pspell
.dll' - 指定されたモジュールが見つかりません。
in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_sybase
_ct.dll' - 指定されたモジュールが見つかりません。
C:\php>php -pでも同じ結果です
見つからないって言われてるモジュール、extの中にちゃんと存在してるんですが、、
0607586
2009/03/24(火) 19:06:44ID:???$aiueo[0] = "a";
$aiueo[0][0] = "aa";
とPHPで入れると置き換わったりする理由を書いて下さい
0608nobodyさん
2009/03/24(火) 19:09:04ID:???記憶違いかも知れんが、依存関係の都合でライブラリを読み込む順序によって、
そんなメッセージがでたかも。
以前、Windows版のPHPってサンプルのphp.iniの順番だとエラーが出てずいぶん
悩んだことがある。
0611nobodyさん
2009/03/24(火) 20:09:50ID:???置き換わる理由は仕様だから。それだけ。
$a[0] = 'abc';
$as = 'abc';
if ($a[0][0] === $as[0]) {
echo ' $a[0][0] equal $as[0]' . " <br />\n";
}
echo "target :" . $as . " = " . $a[0] . " <br />\n";
echo "offset0:" . $as[0] . " = " . $a[0][0] . " <br />\n";
echo "offset1:" . $as[1] . " = " . $a[0][1] . " <br />\n";
echo "offset2:" . $as[2] . " = " . $a[0][2] . " <br />\n";
$as[1] = $a[0][1] = 'xxxxxxx';
if ($a === array($as)) {
echo ' $a is array of $as' . "<br />\n";
}
echo "replaced:" . $as . " = " . $a[0] . " <br />\n";
echo "offset0 :" . $as[0] . " = " . $a[0][0] . " <br />\n";
echo "offset1 :" . $as[1] . " = " . $a[0][1] . " <br />\n";
echo "offset2 :" . $as[2] . " = " . $a[0][2] . " <br />\n";
0613nobodyさん
2009/03/24(火) 20:15:53ID:???0614nobodyさん
2009/03/24(火) 20:36:16ID:???phpinfo()を実行してみて、php.iniをどこから読み込んでいるのかも確認してみて。
以前、WINDOWSディレクトリと、phpの展開先の両方に異なる設定のphp.iniを置いていて、はまったことがあるので。
0615nobodyさん
2009/03/24(火) 20:37:10ID:???0616nobodyさん
2009/03/24(火) 21:07:22ID:/zsLtnA9複数クラスを一つのファイルにまとめたら速くなるのではと
思うのですが、それって実際どの程度の効果があるでしょうか?
まとめなくても、元来OSがファイルキャッシュするので、
あんまり変わらない気もします
0617nobodyさん
2009/03/24(火) 21:09:24ID:???0618nobodyさん
2009/03/24(火) 21:18:30ID:???再利用とか無視して一人で使うんだろうから別にいいとは思うけど
それでも基本どおり1クラス1ファイルにしときな
0619606
2009/03/25(水) 00:12:15ID:4yhBz/QX>>612
そうなってました
>>614
C:\WINDOWS でした。正しいですよね…
>>608さんの書いてる原因かなぁ
もうwindowsで作るの自体やめよっかな
0620nobodyさん
2009/03/25(水) 00:32:37ID:???ボトルネックがわかっていない状態でチューニングをしてはいけない。
まずは測定。
ファイル数云々というより、__autoload()の呼び出し回数が減ることによる高速化は一応期待できるかな。
マジックメソッドの類は総じて重い。
まあ、DBやファイルへのアクセスがあるならそっちがボトルネックになってるとは思うけど。
0621nobodyさん
2009/03/25(水) 01:59:46ID:???環境いじれるなら、APCとか使うのが良いんじゃないかなぁと思う。
ソースコードは扱いやすい単にしておいた方が、いろいろ良いし。
自分ははクラスはモジュールぐらいの単位の方が扱いやすいんで、
1クラス1ファイルにはしてないけど。
0622nobodyさん
2009/03/25(水) 11:16:26ID:yQlt60AAそれとも実行のたびに毎回prepareステートメントを発行するから意味無いんでしょうか
0623nobodyさん
2009/03/25(水) 11:18:39ID:???0624nobodyさん
2009/03/25(水) 15:06:05ID:Ijn9qBqlでhtmlエスケープしていたのですが、
アンパサンドがエスケープされるので、
数値実体参照が「&#〜;」という文字列として表示される
ということが分かりました。
数値実体参照の場合は生で表示するにはどうしたらいいですか?
0625nobodyさん
2009/03/25(水) 15:15:24ID:???0626nobodyさん
2009/03/25(水) 16:45:47ID:???一度submitで送信した後、更新ボタンを押すと
再度送信するようなアラートが出ますが、
これを出さないようにする方法はないでしょうか?
header関数で送信元のページにリダイレクトして戻す方法以外で教えて下さい。
0627626
2009/03/25(水) 16:47:05ID:7ip+uIiL0629nobodyさん
2009/03/25(水) 19:52:08ID:Ut4OfJaEシステムのプロパティで見ると3.25GB認識してるのですが
PHPでどんなに重い処理をしてもタスクマネージャで見ると700MB位しか使っていません。
PHPのメモリリミットは-1の無制限にしてるのに何で?
もっとメモリ使ってくれたら速くなりそうなんだが。
スペックはアパッチ、PHP5
0631nobodyさん
2009/03/25(水) 20:38:00ID:???0632nobodyさん
2009/03/25(水) 20:47:09ID:???「リロード対策」というキーワードでググると
情報が出てくる。
だが、自分には複雑すぎて理解できなかったが。
0633nobodyさん
2009/03/25(水) 21:30:14ID:POBIuYeehttp://kokusan.syokuryo.jp/blog_parts.html
このblogパーツですが中身のjs↓
http://kokusan.syokuryo.jp/blogparts/kokusanParts.js
を機能丸ごと再現してみたいのですが(用途は勉強、兼遊びで)
再現するのに
■サーバサイドの技術は何が必要か
■ローカル側は.jsだからとりあえずはコピペで十分?
という所で(入口ですが)詰まってます。
どなたかご助言plz
0634nobodyさん
2009/03/25(水) 21:32:29ID:???0635nobodyさん
2009/03/25(水) 21:50:38ID:???画像データをメモリ上に読み込んだりしない限り
そんな使うことはないだろ
重い処理なんていってもPHPの場合たかがしれてる
0636nobodyさん
2009/03/25(水) 23:08:42ID:???そうですね
そもそも&までエスケープする仕様はやりすぎのような・・
2chでも&はエスケープしてないし。googleも。
0638nobodyさん
2009/03/26(木) 00:04:21ID:???気に食わないなら文句言ってないで自分で実装すりゃいいじゃん。
単純に置換するだけだから、str_replace一発でできるぞ。
俺はやりすぎとは思わないな。入力文字列をそのまま画面に出力したいなら、&の置換もしたほうがいい。
0639nobodyさん
2009/03/26(木) 00:25:15ID:l1PHOXdz何かスマートな方法はありますでしょうか?
(例)
1.0以上1.5未満 => 1.0
1.5以上2.0未満 => 1.5
2.0以上2.5未満 => 2.0
よろしくお願いします。
0642nobodyさん
2009/03/26(木) 00:39:59ID:???安全にこしたことはないですが、今回は実体参照を頃されてしまうのが問題なので・・
それにしても、エンコードを意識せず、単に置換したらいいだけなんですか?
だとしたら、htmlspecialcharsのエンコード指定は何に使われているんだろう
0644nobodyさん
2009/03/26(木) 01:05:32ID:fG8U3yBv$where_ary = array("id"=>"1","name"=>"あああ");
foreach($where_ary as $key=>$value){
$array[] = $key."='".$value."'";
}
$where = join("&",$array);
と言うように連想配列を使って生成しています。
上記のようにすると、変数に値が入っている場合は大丈夫なのですが、
MySQLの関数(NOWやDATE_FORMATなど)を使いたい時、使えません。
かといって値の部分に関数を記述しても文字列となります。
もっと効率よく生成するには、どのようにすれば良いのでしょうか?
0646nobodyさん
2009/03/26(木) 01:23:03ID:???Zend_Dbの実装はこんな感じ
http://framework.zend.com/manual/ja/zend.db.html#zend.db.adapter.quoting
0647nobodyさん
2009/03/26(木) 01:52:56ID:???0648644
2009/03/26(木) 02:06:29ID:???これは非常に参考になります。
実際に自分もSQL文の生成にはクラスを使っているので
Zend Dbを参考に、独自の仕様にしてみます。
0649nobodyさん
2009/03/26(木) 11:39:12ID:p1YkL4wyある程度インラインで入力してからまとめて実行したいのですが、
どうすればできますか?
0651nobodyさん
2009/03/26(木) 18:55:54ID:JIscrcVE0653nobodyさん
2009/03/26(木) 19:02:58ID:???それか、そのファイルに対する最終アクセス時刻を記録しておいて、
「前回のアクセスは3日前だな、、、
だったらよし、今回は3日分の処理を一気にやればいいんだな」
とかってプログラムで判断させて、アクセスするたびに
その処理を実行するとか。
もちろん、この場合、アクセスがなければ処理も実行されない。
0654nobodyさん
2009/03/26(木) 19:03:41ID:???それがUNIXのcronと同じ。
0655nobodyさん
2009/03/26(木) 19:08:12ID:???こういうこと?
ttp://phpspot.org/blog/archives/2005/11/croncronphp_pse.html
0656nobodyさん
2009/03/26(木) 19:31:31ID:???web cron
0657nobodyさん
2009/03/26(木) 20:06:05ID:???0658nobodyさん
2009/03/26(木) 20:59:43ID:JIscrcVE0659nobodyさん
2009/03/26(木) 21:05:33ID:???STDINを使えという話ではなくて?
http://jp.php.net/manual/ja/features.commandline.php
0660nobodyさん
2009/03/26(木) 21:23:14ID:ih4lRG32どうにもうまくヒットさせることができません
/** */ */
の時に長い方がマッチされてしまいます
どう書けばいいですか?
0661nobodyさん
2009/03/26(木) 21:32:53ID:???0663nobodyさん
2009/03/26(木) 23:16:05ID:46RAjvuH0664nobodyさん
2009/03/26(木) 23:23:56ID:???0665nobodyさん
2009/03/27(金) 07:08:11ID:viybN2w6ディレクトリを再帰的にさらってクラスをリストアップする機能が欲しいのですが
どうしたらいいですか?
PEARのPHP Parserを使ってみたのですが
エラーが出まくって使い物になりませんでした
0666nobodyさん
2009/03/27(金) 08:05:52ID:???既に検討したとは思うが、クラス名を取得する程度なら、Tokenizerで処理しても、
大した手間でもなんじゃないの。
http://jp.php.net/manual/ja/book.tokenizer.php
0667nobodyさん
2009/03/27(金) 09:19:56ID:DtOzsPN+移動先に同名のファイルがある場合に上書きさせたいのですが
一度unlinkしてからrenameしないと駄目なのでしょうか?
0668nobodyさん
2009/03/27(金) 09:23:54ID:???0670nobodyさん
2009/03/27(金) 15:35:49ID:LbT/oMC/モデル部分にデータベース関係の処理(selectやdelete)を全てまとめてますが
フォームの項目チェックなどのバリデーション関係は
モデルではなくコントローラーに記述するべきですかね?
0671nobodyさん
2009/03/28(土) 00:29:13ID:???MとCならばC。Cからバリデーション専用クラスを呼び出せ。
ただし、Cにベタ書きで実装するのはオススメできない。Visitorパターンで実装するのが割と良く見る形。
バリデートはほぼ全てのフレームワークに存在する機能なので、おとなしくフレームワークのマニュアルを読んで構成をパクったほうが速いけどな。
0672nobodyさん
2009/03/28(土) 00:34:00ID:???0673nobodyさん
2009/03/28(土) 02:42:46ID:???バリデーションがCはありえない
0674nobodyさん
2009/03/28(土) 06:25:24ID:xuBHT5omそういう書き方ありますか?
{new Hoge()}->method()
みたいなイメージです
0675nobodyさん
2009/03/28(土) 06:46:27ID:???http://74street.ddo.jp/index.php?PHP%2Ftips%2Fphp003
これかな?
ちなみに、インスタンス化せずメソッドを使う場合、宣言時にメソッドに「static」を付け、「クラス名::メソッド名」で呼び出す。。
class SampleClass {
public static function func($a,$b){
return $a + $b;
}
}
$ans = SampleClass::func(1,2);
0678nobodyさん
2009/03/28(土) 08:56:18ID:???0679nobodyさん
2009/03/28(土) 08:58:31ID:???>>674は何でそんなことしたいんかナゾだけど。目的も書くべきだろ。
ただの興味ということなら、それはそれで良いけど。
0680nobodyさん
2009/03/28(土) 11:44:19ID:???0681nobodyさん
2009/03/28(土) 12:52:45ID:0oeFWAvW$a = 2;
$b = $a * 2;
echo $b;
$a = 4;
echo $b;
期待する結果は48ですが実際は44になります。($bには2行目の結果が入ったままってことでしょう)
2行目を$b = &$a * 2;のようにすると24になります。(*2は無視?)
期待する結果を表示するにはどのように記述すればいいのでしょうか。
PHP5.2.6
0682nobodyさん
2009/03/28(土) 14:13:07ID:???言いたい事は理解できた
$b は常に $aに入れた値を2倍にする変数にしたいという事だな
2行目の $b = $a * 2 は $bに$aの値を2倍した値を入れるという命令だ
だから2行目では$bで$a(2)*2で4が入って3行目で4が出力、
4行目で$aに4を代入しているが5行目では$bは変化無しの4が表示されるから44となる
そして $b =& $a * 2 は変数の参照という事になって $b に入れた値は $a にも反映されるという事だ
2行目で変数&bは$aを参照しているとしているから3行目で2が表示されて
4行目で$aに4を入れているが$aと$bは参照の関係にあるから$bは4となり24となる
変数でそんな事が出来るか記憶を辿ってみたが…出てこない
件を解決する簡単な方法は関数を作ることだと思うんだが?
0683nobodyさん
2009/03/28(土) 14:21:32ID:???掛け算の結果にまで参照変数を反映させるのは無理。もう一回掛け算するしかない
$a = 2;
$b = $a * 2;
echo $b;
$a = 4;
$b = $a * 2;
echo $b;
0684nobodyさん
2009/03/28(土) 14:30:41ID:jCCBzDpKデフォルトでは縦軸にラベル(目盛?10、20、30...など)が表示されるのですが、
これを表示しないようにするにはどうすればよいのでしょうか?
公式のドキュメントを読んだのですが、わかりませんでした。
どなたか分かる方がいましたら、よろしくお願いします。
0685681
2009/03/28(土) 15:12:28ID:0oeFWAvWありがとうございます。
変数のみでは求めることは無理なんですね。関数で処理することにします。
0686nobodyさん
2009/03/28(土) 15:25:27ID:???関数をその場で組み立てるイメージだな。普通に関数を使う場合と違い、「2」の部分を$bの生成時に動的に組み込める。
JavaScriptやRubyでは可能、JavaやPHPでは不可能。PHPでは次のバージョンには盛り込まれる見込み。
これもまあ、関数を作っているわけだけど。
クラスを使ったりグローバル変数を使ったりしていいなら、今のPHPでも同じ処理は一応可能。
0687nobodyさん
2009/03/28(土) 16:48:33ID:y1nm6eda$_POSTを直接チェックするのは何か問題がありますか?
例
if(!isset($_POST["name"])){
echo "未記入です";
}
それか全て一旦POSTを変数に代入してチェックした方がいいですかね?
0688nobodyさん
2009/03/28(土) 17:15:52ID:???0690nobodyさん
2009/03/28(土) 19:01:42ID:???【ショタ】3次専ショタスレ 12【女装・美少年】 [Download]
このスレに変態がいる!!
0691nobodyさん
2009/03/28(土) 19:31:18ID:???公式のドキュメントじゃなくて
phpspotのアフィドキュメントが上位に来るのがむかつくんだけど
どうしたらいい?
googleで除外urlを指定できたらいいんだけど
0694nobodyさん
2009/03/28(土) 22:48:03ID:???0695nobodyさん
2009/03/28(土) 22:52:21ID:???0696nobodyさん
2009/03/28(土) 23:16:06ID:???0697nobodyさん
2009/03/28(土) 23:27:52ID:???なんか都合があるんか知らんが。
0698nobodyさん
2009/03/29(日) 05:04:23ID:???0699nobodyさん
2009/03/29(日) 06:25:15ID:???0700nobodyさん
2009/03/29(日) 09:35:20ID:???0701nobodyさん
2009/03/29(日) 13:21:29ID:EDw1f4T+という定数があったとして、TESTの中身が「/home/test/public_html」だとします。
通常は、定数指定して
include_once(TEST.'/test.php');
としてディレクトリ指定代わりに出来ますが、
定数の中身で表示する事って出来ませんでしょうか?上の例で言うと
include_once('/home/test/public_html」'.'/test.php');
と言うように書き出せればと思っています。
0702nobodyさん
2009/03/29(日) 13:28:04ID:???0703701
2009/03/29(日) 13:29:17ID:???fopenでファイル作成する時に、その出力側のファイル上に
include_once('/home/test/public_html'.'/test.php');
という形で記述されて欲しいのです。
0704nobodyさん
2009/03/29(日) 13:31:15ID:???fopenでtest.phpを作成するってこと?
0705nobodyさん
2009/03/29(日) 19:34:50ID:???PHPスクリプトをファイルとして開く理由がわからんが
0706nobodyさん
2009/03/29(日) 20:07:08ID:g6t/L+Oeこのサイトいくらぐらい掛かってると思いますか?
0707nobodyさん
2009/03/29(日) 20:07:18ID:A+4tAAtu以下のようにすると出ません。
これは何故ですか?
error_reporting(E_ALL | E_STRICT);
class Hoge {
protected $_value = array();
public function & getEntity($key){
return $_value[$key];
}
}
$hoge = new Hoge();
var_dump($hoge->getEntity('no_key'));
0708nobodyさん
2009/03/29(日) 20:08:51ID:???でした
結果は同じですが
0709nobodyさん
2009/03/29(日) 20:18:24ID:???0710nobodyさん
2009/03/29(日) 20:20:00ID:???0711nobodyさん
2009/03/29(日) 20:23:38ID:???0712nobodyさん
2009/03/29(日) 20:34:22ID:???0715nobodyさん
2009/03/29(日) 23:05:06ID:lmZMeLkn【PHPのバージョン】php5.16
【連携ソフトウェア】mysql
【質問内容】
print'<tr>';
while ($row = mysql_fetch_object($res)){
print'<td>'."$row->NAME".'</td>';
}
MySQL から 特定のフィールドを取得し,HTML のテーブルに5列ずつ表示しようとしております。
5列毎にprint'</tr>';を挿入して
テーブルの行数をかえたいのですが,どのようにすればよろしいでしょうか?
【求める結果】MySQL テーブルのの行数が8行の場合
<tr>
<td>NAME1</td>
<td>NAME2</td>
<td>NAME3</td>
<td>NAME4</td>
<td>NAME5</td>
</tr><td>
<td>NAME6</td>
<td>NAME7</td>
<td>NAME8</td>
</tr>
お手数ですがよろしくお願いします。
0716nobodyさん
2009/03/29(日) 23:19:48ID:???0718nobodyさん
2009/03/29(日) 23:22:53ID:???$i = 1;
while ($row = mysql_fetch_object($res)){
print'<td>'."$row->NAME".'</td>';
if($i == 5){
print'</tr>';
$i = 1;
}else{
++$i;
}
}
0719nobodyさん
2009/03/29(日) 23:28:38ID:???HTMLマークアップが不正な件。
8個の場合、2行目3列目までで終わるが、余った2セルはどう埋めるんだ?
>718
<tr>がない。
0720715
2009/03/29(日) 23:39:03ID:lmZMeLkn>>718 を参考にして,
$i = 1;
while ($row = mysql_fetch_object($res )){
if($i == 1){
print'<tr>';
}
print'<td>'."$row->NAME".'</td>';
if($i == 5){
print'</tr>';
$i = 1;
}else{
++$i;
}
}
としてみました。
>>719 の件については,とりあえず暫定的に MySQL 内の行数を5の倍数にしておきます。
皆様ありがとうございました。
0721nobodyさん
2009/03/30(月) 05:37:45ID:Sq1DK82Pそのうえで、xmlWriter()をつかって「EUC-JP」で
XMLを書き出したいのですがどうしたらよいのでしょうか?
単にstartDocumentでEUC-JPを指定するだけでエンコードを変更できるのでしょうか?
Firefoxでは表示され、safariだとエラーになってしまいます。
$writer = new xmlWriter();
$writer->openMemory();
$writer->startDocument('1.0', 'EUC-JP');
$writer->startElement('root');
(略)
$writer->endElement();
$writer->endDocument();
return simplexml_load_string($writer->outputMemory(TRUE));
ちなみに各Directiveの値もメモしておきます。
mbstring.http_input auto
mbstring.http_output pass
mbstring.internal_encoding UTF-8
mbstring.script_encoding no value
※もうひとつのスレッドでは答えがわからずじまいで、
どうしたらよいかヒントだけでもつかめたらと思います。
どうぞお願いいたします。
0722nobodyさん
2009/03/30(月) 08:22:50ID:???0723nobodyさん
2009/03/30(月) 12:12:19ID:ObvykTshhttp://www.gen-x-design.com/projects/php-thumbnailer-class/
このサイトのthumbnail.inc.phpを使って画像をリサイズしてサムネイルを生成したのですが
いまいち仕組みがわからずにいます。
リサイズされた画像はどこかに保存されているんでしょうか?
0724nobodyさん
2009/03/30(月) 12:16:26ID:???0725nobodyさん
2009/03/30(月) 12:28:05ID:ObvykTsh実際にサイトにアップして表示させてみました。
そしたらリサイズされた画像が表示されたんですが
サイトのどこをみても画像が増えた形跡がありません。
リサイズした画像を別に保存するわけではないのですか?
0726nobodyさん
2009/03/30(月) 12:41:43ID:???0727nobodyさん
2009/03/30(月) 12:49:44ID:ObvykTsh画像のアドレスをみても
show_image.php?filename=sample.jpg&width=250&height=250
と書いてあるだけなんです
0728nobodyさん
2009/03/30(月) 13:07:26ID:???0729nobodyさん
2009/03/30(月) 13:09:40ID:???$thumb->save('path/to/file.jpg',80);
0730nobodyさん
2009/03/30(月) 13:13:48ID:ObvykTshそれをしないとただ大きい画像を縮小してるだけで意味ないんでしょうか?
0731nobodyさん
2009/03/30(月) 13:26:05ID:???0732nobodyさん
2009/03/30(月) 13:53:38ID:???サイズも容量も小さくして表示ができるってことでいいのでしょうか。
サムネイル画像の保存をせずに
0733nobodyさん
2009/03/30(月) 14:28:36ID:Nai97eUHデータベースを用いてアプリケーションを作る際
例えば該当するIDを選んでupdate、deleteする時に、
該当するIDがある時は正しく削除され、削除されました。
とメッセージを返すんですが何らかの形で該当しないIDが
投げ込まれた時は一般的にはどのような処理をされていますか?
まず該当するIDがあるかselectで調べて、ある場合はupdateもしくは
deleteで処理みたいな形ですかね?
アドバイスよろしくお願いします。
0734nobodyさん
2009/03/30(月) 14:50:52ID:???0735nobodyさん
2009/03/30(月) 15:01:56ID:???http://jp.php.net/manual/ja/pdostatement.rowcount.php
とか類似関数で。
0736733
2009/03/30(月) 15:12:04ID:???返信ありがとうございます。
これまでなんとなくしか理解できてなかったのですが
今スッキリしました。
本当にありがとうございました。
0737nobodyさん
2009/03/30(月) 18:45:52ID:Gjy/ZAJ6【PHPのバージョン】5.2.6-2ubuntu4.1
【連携ソフトウェア】Apache/2.2.9
【質問内容】
PHPをさわり初めて一日目の初心者です。
header ( "HTTP/1.0 404 Not Found" , true , 404 );で、.htaccessで指定した404エラーページを
表示させたいのですが、ブランクページになって表示されません。
確かに404エラーページはファイル自体が存在していない場合のみ表示されますので、Location:で
存在しないファイルにリダイレクトさせて見たところ、見事404エラーページが表示されました。
しかし、この方法はアドレスが変更されてしまうので、できればそのPHPのアドレスで、404エラー
を表示させたいのですが、何か方法はございませんでしょうか。
よろしくお願いします。
0738nobodyさん
2009/03/30(月) 23:26:09ID:???readfileでエラーページの内容をそのまま流しちゃダメなの?
http://jp.php.net/manual/ja/function.readfile.php
0739nobodyさん
2009/03/31(火) 06:15:24ID:???ttp://www.m-fr.net/study/object/object04.html
このサイトで、
>で、こうします。
>
>obj = new 三角クラス;
>適当な変数 = obj->get_1辺の長さ(); // データの取得
>obj->set_1辺の長さ(適当な値); // データの設定
とあるのですが、下の二行は順序が逆の方がよいのでは?と思いました。
setしてからそのsetした結果得られる値をgetする、みたいに。
その方がしっくりくるというか・・
もしかしたら、何か理由(もしくは自分の勘違い)があって、
getをまず書いておいて、そのsetする一行を書く、という形式にしてるのか
よくわからないので、教えていただけないでしょうか
よろしくお願いします。
0740nobodyさん
2009/03/31(火) 08:44:30ID:???getとsetの別々の事例かと
あとスレタイ
0741nobodyさん
2009/03/31(火) 10:26:43ID:MdY2FCLhWindowsの絶対パスでrequireで読み込むとエラーになります。
require_once("C:\htdocs\test.php");
↓
failed to open stream: Invalid argument
どうしたら読み込めるようになるのでしょうか?
0742nobodyさん
2009/03/31(火) 10:35:59ID:???0744nobodyさん
2009/03/31(火) 11:14:25ID:???>>681さんおすきなほうどうぞ
その1
function cale($a,$b) {echo "<p>" .($a * $b). "</p>";}
$a = 2;
$b = 2;
cale($a,$b);
$a = 4;
cale($a,$b);
その2
function cale($a,$b) {echo "<p>" .($a * $b). "</p>";
}
// $aと$bはそれぞれ別の値を持てる
$a = 2;
$b = 2;
$cale($a,$b);
// $aと$bは常に同じ値になる
$b = &$a;
$a = 100;
cale($a,$b);
$a = 5;
cale($a,$b);
0748nobodyさん
2009/03/31(火) 15:08:08ID:H7khy467++りんご
++バナナ
++ぶどう
↑の4行を↓のようにhtmlタグとして出力したいのですが
wikiみたいなことがやりたいのですがどなたかヒント頂けないでしょうか?
<ul>
<li>食べ物</li>
<ul>
<li>りんご</li>
<li>バナナ</li>
<li>ぶどう</li>
</ul>
</ul>
0749nobodyさん
2009/03/31(火) 15:12:34ID:???0752nobodyさん
2009/03/31(火) 15:27:12ID:qal8dqXuありがとうございます。
>>746-747
本当はファイルが存在しているのに無理矢理サーバーにファイルが存在していないことにして、エラーページを表示させるところが
でしょうか。それとも、「header ( "HTTP/1.0 404 Not Found" , true , 404 );」がおすすめできないのでしょうか。
もし、そうであれば、「header("HTTP/1.0 301 Moved Permanently") ;header("Location: http://www.example.com/") ;」
などのリダイレクトであれば大丈夫ですか。
0753nobodyさん
2009/03/31(火) 15:27:13ID:WkuOnscP【PHPのバージョン】4.3.11
【連携ソフトウェア】Apache2
【質問内容】
auto_prepend_fileで指定したファイルが動いてくれません。
.htaccessで、「php_value auto_prepend_file "ap.php"」と記述しました。
ap.phpの中身は「<? echo("test"); ?>」です。
これでhttp://hostname/index.phpを開くと、
画面上部に「test」と表示されることを期待しているのですが、
TurboLinux + PHP4.3.11のサーバーでは実際は何も表示されませんでした。
もうひとつUbuntu + PHP5.2.4のサーバーがあるのですが、
そちらに同様のコードを設置したところ、意図したとおりに動きました。
何か設定の問題だとは思うのですが、何が問題なのか分からずに困っています。
ひとまず以下のことを試しました。
・phpinfoを確認 ⇒ auto_prepend_fileのLocal Valueは「ap.php」になっている
・auto_prepend_fileの設定をわざと"ap2.php"にした ⇒ ファイルが読み込めないエラー
・ap.phpの中身をわざと文法エラーにした ⇒ 何のエラーも出ない(display_errorsはon)
・ap.php、index.phpの両方でWarningが出るようにした ⇒ index.phpのWarningのみが表示される
・ap.phpの一行目(<?〜?>の外側)に「aaaaa」を追加 ⇒ 何も表示されない
どうもauto_prepend_fileでap.phpを読み込んではいるものの、
ap.phpのコードが実行されていないようです。
この現象について分かる人がいらっしゃいましたらご教示下さい。
0754nobodyさん
2009/03/31(火) 15:50:33ID:???>ap.phpの中身は「<? echo("test"); ?>」です。
<?使えるなら<?=使えよ
ていうか<?phpって書く方を推奨
0755nobodyさん
2009/03/31(火) 15:53:09ID:???よくわかんないけど全てのページのヘッダに挿入するならmod_layout
ttp://d.hatena.ne.jp/hogem/20090321/1237569005
0756nobodyさん
2009/03/31(火) 19:15:21ID:???質問に対する答じゃないけど、HTMLは
<ul>
<li>食べ物
<ul>
<li>りんご</li>
<li>バナナ</li>
<li>ぶどう</li>
</ul>
</li>
</ul>
こう書いた方がいいと思う。
0758nobodyさん
2009/03/31(火) 22:31:20ID:???今日めっけた
ttp://d.hatena.ne.jp/anatoo/20090320/1237530764
function ref($obj){ return $obj; }
ref(new Hoge)->doSomething();
良し悪しはともかく、発想は面白い。
0759nobodyさん
2009/03/31(火) 22:32:52ID:???0760nobodyさん
2009/03/31(火) 23:09:23ID:???0761nobodyさん
2009/03/31(火) 23:32:57ID:???このためだけにgetInstance()とかfactory()とか定義したら、関数増やすよりタチ悪いしな。
ただ、一般的な書き方じゃないので、ref()の定義を探さないと読めない=コードの可読性が落ちるのが難点。
JavaScript界の$()みたいに、一般的なハックになったらアリかな。
0762nobodyさん
2009/03/31(火) 23:35:38ID:???0763nobodyさん
2009/03/31(火) 23:38:29ID:???Hoge::new()->doSomething();
ってできるのにな
0764nobodyさん
2009/04/01(水) 00:05:10ID:???0765nobodyさん
2009/04/01(水) 01:36:40ID:???0768nobodyさん
2009/04/01(水) 02:20:35ID:???0769nobodyさん
2009/04/01(水) 02:32:15ID:???0770nobodyさん
2009/04/01(水) 02:51:42ID:???0771nobodyさん
2009/04/01(水) 03:16:29ID:???1行で書きたいって理由だけでstaticなクラスメソッドを増やすのは流石にナシだろ
だいたい1つや2つならともかく、そういう書き方がしたくなるようなJavaっぽい書き方をしてたら抽象データ型なんて死ぬほどできるわけで
そういうクラス全部にstaticメソッド定義すんのかって話になる。継承も使えないし
コンストラクタが引数を取るような場合さらに面倒くせえしな
まあ、そもそもJavaっぽい書き方なんかするなよ、って言うのが多分正解だけどな
$tmp = new Hoge(); $tmp->fuga();でいいだろ
使いもしない一時変数が増えるのがキモいって気持ちは分かるが
0772nobodyさん
2009/04/01(水) 07:15:56ID:zGetu19rサーバ側のPHP(5.2.6/Windows)がタイムアウトしちゃうんですが、そういうもんなんでしょうか。
タイムアウト伸ばすしかないのかなぁ。
ファイルが壊れるだけで、一見したところ気がつかないのが、またいやらしい。
0773nobodyさん
2009/04/01(水) 07:21:55ID:???0774nobodyさん
2009/04/01(水) 07:26:35ID:???ひとつひとつのクラスにstaticメソッドを実装するってことではなく
rubyみたいにすべてのオブジェクトの先祖になるクラスにstaticを実装するって意味。
今でもrunkit使えば可能なのか、どうか知れないが、
標準で出来たらいいなぁ
0775nobodyさん
2009/04/01(水) 08:25:46ID:wwrEQ3GFecho realpath(".");
とすると、C:\Program Files\Apache Group\Apache2\htdocs
のように\が付きます。これを/に置換すれば良いだけでしょうが、
最初から\ではなく/にして、ディレクトリ名を取得する方法はないでしょうか?
0777nobodyさん
2009/04/01(水) 08:43:29ID:???たまにMysqlへの接続数が多すぎてエラーになります。
そこで、
if(){
通常通りMysqlへ接続}
{接続エラー時の対処}
こんな感じにしたいと思ってるんですが、いい関数ありますか?
0780nobodyさん
2009/04/01(水) 09:29:50ID:???staticで十分か、コンストラクタに仕事させすぎ。
0783nobodyさん
2009/04/01(水) 11:04:49ID:???こっちのほうおすすめ
function errorMysql() {
エラー処理
exit;
}
if (!接続) errorMysql
0784nobodyさん
2009/04/01(水) 11:49:45ID:???0785nobodyさん
2009/04/01(水) 17:33:12ID:???貴様らなにしてんのかね
0786nobodyさん
2009/04/01(水) 18:09:20ID:???0790nobodyさん
2009/04/01(水) 23:06:31ID:???絶対言われると思った。俺もそれは考えたが、5.3.0より前のPHPでは無理。
親クラスで定義された静的メソッドで、子クラスのインスタンスは生成できない。つまり
class Parent{
static function getInstance(){
//do something
}
}
class Child extends Parent{}
とあった場合、Parent::getInstance()の実装がどんなだろうと、Child::getInstance()がChildのインスタンスを返すのは不可能。
Childというクラス名すら取得できない。
>780
{ new UrlString("http://pc11.2ch.net/test/read.cgi/php/1236532468/") }->domain();
コンストラクタによる依存性注入をしてる場合も、newしてすぐメソッドを呼ぶだけでじゅうぶんな事がある。
引数なしのコンストラクタならばたいていの場合不要ってのは同意。
0791nobodyさん
2009/04/02(木) 09:51:30ID:ij3728ylこれって日本語は対応してないの?
0792nobodyさん
2009/04/02(木) 10:31:00ID:???0793nobodyさん
2009/04/02(木) 10:35:42ID:ij3728ylいやいや、、、
まだそこまでレベルいってないですよ
だからあなたが代わりに見て判断してください
0794nobodyさん
2009/04/02(木) 10:44:44ID:???0795nobodyさん
2009/04/02(木) 10:56:23ID:???原理的には日本語でも計算は可能だろうけど、日本語ではMecabとかないと大変だし、
多分計算式に定義されてる係数は日本語の場合を考慮していないので、
信頼出来る結果のためには自分で文献にあたるとか実地調査して決定する必要があるべ。
0796nobodyさん
2009/04/02(木) 11:12:51ID:CfxT7le3【PHPのバージョン】php5ぐらい
【連携ソフトウェア】mysql
【質問内容】
フォームのセレクト項目で悩んでいます。
form.phpを表示させるとき、セレクト項目を
mysqlから取り出して表示させているのですが
(idとその名前)
セレクト項目が4つもあるので、何か一気に取り出す方法が
あったりするのですか?それとも、一個一個4つのセレクト用に
select genre_id,genre_name from genre;
(genreはジャンル)
というふうにするしかないですか?
0797nobodyさん
2009/04/02(木) 11:30:18ID:4VqTVZ/0以下のようなデータをデータベースに登録してます
id,name,age
1,田中,20
2,木村,31
3,坂下,43
このデータをテーブルに書きだしたいのですが
pearなどのライブラリを使用しない場合、どのようなコードを書くのが効率いいでしょうか?
mysql以外のデータベースは使用しないのでmysqlに特化した書き方をどなたかご教示お願いいたします
0798796
2009/04/02(木) 11:40:45ID:???$link = mysql_connect('localhost','ユーザ名','パスワード名');
mysql_select_db('データベース名');
$sql = "select * from テーブル名";
$result = mysql_query ( $sql );
while ( $data = mysql_fetch_array ( $result ) ) {
$data['id'];
$data['name'];
$data['age'];
}
じゃないの?
0799nobodyさん
2009/04/02(木) 11:48:45ID:e2MYzFKZ>>797さんのデータで
id,name,age
1,田中,20
2,木村,31
3,坂下,43
とありますが、たとえばID2の木村さんの行だけを取得する場合、
while ( $data = mysql_fetch_array ( $result ) ) {
if (2==$data['id']) {
$id = $data['id'];
$name = $data['name'];
$age = $data['age'];
break;
}
}
とやってきたのですが、MYSQLではピンポイントで取得することができないってことでしょうか?
0800796
2009/04/02(木) 11:59:21ID:???嘘だよね? select * from テーブル名 where id=2;
あるいは、 where name='木村';
0803nobodyさん
2009/04/02(木) 12:29:08ID:???MySQLにパスワードを設定しようとphpmyAdminでuser テーブルを表示させましたが
Hostが%のレコードがありません。localhost と127.0.0.1というのだけです。
パスワードを設定するのはlocalhost と127.0.0.1でいいのでしょうか?
0804796
2009/04/02(木) 12:40:16ID:???$xxx[1] = "property";
$xxx[2] = "actress";
$i=0;
$g=0;
while ( $i < count($xxx) ) {
$sql = "select $xxx[$i]_id,$xxx[$i]_name from $xxx[$i]";
$result = mysql_query ( $sql );
while ( $data = mysql_fetch_array ( $result ) ) {
$xxb[$g][$xxx[$i]]['id'] = $data[0];
$xxb[$g][$xxx[$i]]['name'] = $data[1];
$g++;
}
$i++;
}
これでいい?
0805nobodyさん
2009/04/02(木) 12:56:43ID:???0807nobodyさん
2009/04/02(木) 13:01:43ID:vfSwYPOW【PHPのバージョン】php5.26
smarty使用
【連携ソフトウェア】mysql
【質問内容】
初めての質問です。
よろしくお願いします。
登録フォームが都合上ページの下部にあるのですが
PHPで入力エラーを同じページの同じ登録フォームのある部分に表示しております。
ページ上部に登録フォームのアンカーへ移動するリンクはありますが
PHPではいたエラー文言付画面の表示時に下部のアンカーへ移動して表示するには
javascript以外に方法はないでしょうか?
要はhttp://www.etc.com/touroku.php#a
みたいにやるにはどうすればいいのか、よろしくお願いいたします。
0808796
2009/04/02(木) 13:05:48ID:???かな
for($i=0;$i<count($xxb['genre']); $i++)
で各セレクト分でしよう
0810nobodyさん
2009/04/02(木) 13:51:13ID:???0812nobodyさん
2009/04/02(木) 19:09:54ID:vfSwYPOWありがとうございます、できました!!
0813nobodyさん
2009/04/02(木) 21:54:38ID:SbciSXr8pukiwikiとかの既存ソースを使ってるのですが
PHPがサバの設定でポート指定されていて
既存ソースだと、リンク先がPHPの場合、ポート指定が外されてしまうのです
TOPページが :7070 で実行してたら
遷移先が :7070 が外れてしまうという状態です
解決方法とかご教授願えますか。
質問場所が悪ければ、聴ける場所なども教えていただけると助かります
0814nobodyさん
2009/04/02(木) 21:56:16ID:???0815nobodyさん
2009/04/02(木) 22:33:32ID:SbciSXr8ちょっと探してみます。
ただ、pukiwikiに限らず、他のPHPでも
同じ状況になってしまうので根本解決するための方法など
ご存知でしたらお願いします。
0816nobodyさん
2009/04/02(木) 22:33:55ID:???0817nobodyさん
2009/04/02(木) 23:10:28ID:???コールバック関数を指定して出力内容を全部受け取り、URLを全部置換する。
0819nobodyさん
2009/04/03(金) 01:14:27ID:QmVSt/Vd【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したい場合は変数にいれず、
直接クエリの文に記述しないといけないのでしょうか?
0820nobodyさん
2009/04/03(金) 01:28:48ID:???現代人ならプリペアドステートメントを使え。プレースホルダ使える状況でクエリを直接組み立てる奴は原始人。
PDOStatement::bindValue()の第3引数にPDO::PARAM_NULLを指定すれば、NULLをDBに入力できる。
つうか、何もinsertしなければ、デフォルト値であるNULLが入るけどな。
(カラムにnullが許可されており、他のデフォルト値を指定していない場合に限る)
0821nobodyさん
2009/04/03(金) 01:33:38ID:???0822nobodyさん
2009/04/03(金) 01:33:52ID:???$val = 'NULL';
0823nobodyさん
2009/04/03(金) 01:34:01ID:???でNULLをDBに入力できる
0824819
2009/04/03(金) 01:37:29ID:???>プリペアドステートメント
はじめて聞きました。
>何もinsertしなければ、デフォルト値であるNULLが入る
これは理解していたのですが、インサート項目が非常に多く、
そのほとんどが必須ではないので、クエリを組み立てるのがめんどくさく
値がわたってこようがこなかろうがすべての項目をインサートさせてしまう感じで作ってしまいました。
プリペアドステートメント勉強します。
ありがとうございました。
0825819
2009/04/03(金) 01:39:55ID:???>>823
それだと文字列のNULLが入ってしまいました。
間違えてるかもしれないのでまた確認してみます。
ありがとうございます。
0826nobodyさん
2009/04/03(金) 01:44:23ID:???insert into test (id, comment) value (NULL, 'test')
0827nobodyさん
2009/04/03(金) 02:04:33ID:7RHF46qiform1.phpにて記述されたformの内容をPOSTで
form2.phpという確認画面で受け取るような
プログラムを作ってるんですが、
確認画面にて前に戻るボタンと送信ボタン2つを作りたい場合は
それぞれに同じ内容のhiddenを設定するしか方法はないんですかね?
もしスマートな方法がありましたらアドバイスよろしくお願いします。
0828nobodyさん
2009/04/03(金) 02:07:57ID:???0829827
2009/04/03(金) 02:11:24ID:???返信ありがとうございます。
やっぱりsessionがいいですよね。
もしPOSTでスマートに出来るならと思い聞いてみました。
0830nobodyさん
2009/04/03(金) 02:26:52ID:???0831nobodyさん
2009/04/03(金) 02:29:07ID:???試してないけど、javascriptでformのactionを変更できるんじゃないの。
http://msdn.microsoft.com/ja-jp/library/cc409726.aspx
このへんは趣味の問題かもしれんが、セッションに値を保持するのは、
同じセッションで複数タブ開かれた場合に動作がおかしくなりやすいから、
あんまりお勧めはできん。
0833nobodyさん
2009/04/03(金) 02:38:12ID:???0834nobodyさん
2009/04/03(金) 03:42:37ID:???0835nobodyさん
2009/04/03(金) 04:07:02ID:???php.iniに書いたmb_string系の設定って反映されてますか?
あと何故かapcも動かない、、、
いくら設定を見直してもなにが悪いのかわかりません。
解決策をご存知の方いましたら、教えてください。
0836835
2009/04/03(金) 06:55:01ID:???0838nobodyさん
2009/04/03(金) 07:28:49ID:b3GlDVd8一応本では読んだんですがいまいちよくわかりません 簡単に説明お願いします
0839nobodyさん
2009/04/03(金) 08:01:16ID:???繰り返し使われる場合はパフォーマンスが上がることもあるみたいだけど、一番大きいのは
SQLインジェクションみたいな攻撃を受けにくくなることじゃないの。
0840nobodyさん
2009/04/03(金) 08:43:25ID:???0841nobodyさん
2009/04/03(金) 08:45:48ID:???もうプリペアでやってるかもしれないけど
$a = "";
$var = "'".$a."'";
$query = "insert into test (id, comment) value ($val, 'test')";
0842nobodyさん
2009/04/03(金) 10:01:31ID:???0843nobodyさん
2009/04/03(金) 10:05:52ID:???0844nobodyさん
2009/04/03(金) 11:18:56ID:???http://neta.ywcafe.net/000974.html
0845nobodyさん
2009/04/03(金) 11:26:15ID:???サンプルコードにこれ見よがしにつっこむ奴なんなの
ある側面から切り取ってるんだから瑕疵がないほうがおかしいだろ
0846nobodyさん
2009/04/03(金) 11:29:51ID:???0848827
2009/04/03(金) 15:07:28ID:???フォームの件ですが色々試しましてSESSIONでいくようにしました。
色々とアドバイス本当にありがとうございます。
それでもう一つ質問なんですが、
フォームのチェックボックスの内容をhtmlに直に書かず、
config.phpなどに$val=array("aaa","bbb","ccc");
みたいな感じで記述しhtmlでforeachを使い
全て書き出すみたいな事をしたいんですが、参考書などを確認したら
配列で記述するのではなくfunctionで
function val(){
$val = array("aaa","bbb","ccc");
return $val;
}
という書かれ方がされてました。
関数にせず配列だけが記述すると何かマズイんですか?
質問が少しわかりにくいですがもしよければ
アドバイスよろしくお願いします。
0849nobodyさん
2009/04/03(金) 15:17:48ID:???$valの中身を将来的にコードからいじる可能性があるならfunction、
可能性がないなら定数のままでいい
0850nobodyさん
2009/04/03(金) 15:40:20ID:???0851827
2009/04/03(金) 15:41:11ID:???返信ありがとうございます。
例えばこれから先チェックボックスの値dddが増えた場合、
$val=array("aaa","bbb","ccc","ddd");
でも
function val(){
$val = array("aaa","bbb","ccc","ddd");
return $val;
}
でも変わらない気がするんですが・・・
素人質問本当にすいません。
今から考えてみます。
0852nobodyさん
2009/04/03(金) 15:48:11ID:???いい例が思いつかないのだけどこんな感じ。条件によって変わる場合だな
function val(){
$val = array("aaa","bbb","ccc","ddd");
// 天気が雪の場合のみ配列にeeeを追加する
if( $this->weather == "snow" ){
array_push( $val, "eee" );
}
return $val;
}
0854827
2009/04/03(金) 16:12:12ID:???>>853
返信ありがとうございます。
今後、配列を元に何か条件をつけるなどの機会がある場合は
関数にしておく方が好ましいという事ですね。
例文まで書いていただき本当にありがとうございました!
0855nobodyさん
2009/04/03(金) 18:24:43ID:ZpjcrZDPエンティティに変換したいのですが、どうすればいいのでしょうか?
htmlspecialcharsはダブルクォーテーションも変換しますし・・。
0856nobodyさん
2009/04/03(金) 18:32:47ID:???次のエラーが出てしまいます。
何が原因なのでしょうか?
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("テスト");
?>
0858nobodyさん
2009/04/03(金) 19:44:58ID:2mI6CRy6【PHPのバージョン】5.2.0
参照渡しで変数を送り
変数が未定義なら空の文字列を返し
変数が定義済みならそのまま返す関数を考えました。
$test = hoge_variable($v);
function hoge_variable(&$v) {
if(! isset($v) ) {
return '';
}
return $v;
}
テストに入る内容は望みのものですが、
変数$vが未定義だった場合、定義されて(?)NULLが入るようです。
この挙動について、どういった理由でそうなるのか、
また$vを未定義のままにする方法はあるのかご教示いただけませんでしょうか。
0859nobodyさん
2009/04/03(金) 20:02:31ID:???&$vのとき、参照を張るには、参照される側のアドレスが必要だから、そこで定義される。値はNULL
&$vにしなければよい。
0860nobodyさん
2009/04/03(金) 20:14:47ID:???定義されてないからNULLだぜ?
0861nobodyさん
2009/04/03(金) 20:15:15ID:2mI6CRy6やはりそんな感じだったんですね。
関数はエラーレベルによっては出るNotice: Undefined variable
の対策だったんですけど、&$vでなく$vにするとそこでUndefined variable
がでてしまう感じで…。
定義されたくない時は直接issetをしていくしかないということですかね。
というかそもそもUndefined variable回避に対するアプローチが違っているでしょうか…?
0862nobodyさん
2009/04/03(金) 20:18:37ID:???0863nobodyさん
2009/04/03(金) 20:35:14ID:2mI6CRy6$flag = $_POST['flag'];
そういう意味で先の
$flag = hoge_variable($_POST['flag']);
だったんですけど、
例えNULLでも配列に定義されてしまうと、
foreachとかする時に邪魔になったりとかそういう感じのことでした。
やはり基本的には
$flag = '';
if (isset($_POST['flag'])) {
$flag = $_POST['flag'];
}
みたいなことで行くのがいいのですかね。
0864nobodyさん
2009/04/03(金) 20:46:30ID:???0866nobodyさん
2009/04/03(金) 22:53:01ID:???> $flag = '';
> if (isset($_POST['flag'])) {
> $flag = $_POST['flag'];
> }
自分はそうしてる
変数が増えてくるとコードがのびがちなので
三項演算子使って
$flag = isset($_POST['flag'])?$_POST['flag']:null;
といった感じにしてる
0867nobodyさん
2009/04/03(金) 23:35:31ID:???クォートで処理していると、インジェクションが無いか処理を注視しないといけない。
プリペアドステートメントは、インジェクションが無い事が一目で分かる。
SQLの構文と変数が分離されるので見やすくなるって利点もある。
>863
functon getPostedVariable($key){
return isset($_POST[$key])?$_POST[$key]:null;
}
とかやると楽なのでオススメ。
プログラムの開始時に$_GETと$_POSTとかを丸ごとメンバに持つクラスのインスタンスを生成して、そいつにこの関数を定義する手もある。
メリットが思いつかないレベルならとりあえず忘れておいてもいいけどな。テストが非常にしやすくなる。
$request = new Request($_POST, $_GET);
echo $request->post('flag');
0868nobodyさん
2009/04/03(金) 23:36:22ID:???0869nobodyさん
2009/04/03(金) 23:49:57ID:???0870nobodyさん
2009/04/04(土) 01:03:53ID:???public private とかって宣言する事は出来ないのでしょうか?
public class Test
{
public function TestMessage()
{
print("あいうえお");
}
}
0873nobodyさん
2009/04/04(土) 02:00:30ID:???0874870
2009/04/04(土) 02:00:58ID:???サンクス
>>872
.Net(C# / VB.net) & C++とかでこれまで開発をして来ましたが何かばれちゃいましたか。
マニュアルをちょっと読む事にします。
というより一つ疑問なんですけどC#とかC++とかだと次のパターンAでみんな記述しているのに
PHPとかだとパターンAの書き方をする人が多いのはなぜでしょうか?
C#だと今まで私が関わって来たプロジェクトは100%パターンAで記述されています。
【パターン@】
if( 1 == 1)
{
}
【パターンA】
if(1 == 1{
}
0876nobodyさん
2009/04/04(土) 02:05:23ID:???両方ともパターン2かよ
0877nobodyさん
2009/04/04(土) 02:08:21ID:???JavaやPHP使いはMSみたいに無駄に行数消費するのを嫌うよ
0878nobodyさん
2009/04/04(土) 02:09:00ID:???てかA括弧閉じてないけど、スペースのことを言ってるのか・・・?
0879874
2009/04/04(土) 02:11:43ID:???>>874がどちらのこと言ってるのか良く分からないけど
俺は@はメソッドの時に使う。
一応Zendのコーディング規約に則ってやってるけど
個人の作業なら別にそんなの君の価値観でやればいいだろ
0880878
2009/04/04(土) 02:13:15ID:???0881nobodyさん
2009/04/04(土) 02:14:37ID:???PHPの「標準」なコーディング規約には2つの流儀がある。ひとつはZend、ひとつはPEAR。
で、どっちも1番の括弧スタイルを採用してるんだ。
C++で言えば、MSDNの規約とGNUの標準スタイルが一致しているような状況をイメージすればいいかな。そりゃ合わせるだろ?
PHPが初めての言語です、って奴が多いのも影響していると思う。
勿論、PHP以前に他の言語を学んでいた奴の中には別のスタイルで書く奴もいる。
俺も2番のK&Rスタイルで書くしな。
0882nobodyさん
2009/04/04(土) 02:16:56ID:???http://framework.zend.com/manual/ja/coding-standard.coding-style.html#coding-standard.coding-style.control-statements.if-else-elseif
if ($a != 2) {
$a = 2;
}
知ったか乙
0883nobodyさん
2009/04/04(土) 02:18:31ID:???悪い、寝ぼけてた。
関数定義とクラス定義の箇所を読んでたわ。
PEARもifはそのスタイルだな。
if ((condition1) || (condition2)) {
action1;
} elseif ((condition3) && (condition4)) {
action2;
} else {
defaultaction;
}
0884nobodyさん
2009/04/04(土) 02:21:18ID:???0885nobodyさん
2009/04/04(土) 02:25:13ID:???0886870
2009/04/04(土) 02:37:49ID:???【パターン@】
if( 1 == 1)
{
}
【パターンA】
if(1 == 1){
0}
の間違いです。括弧が抜けてましたね。
>>877
そう言われれば確かに勝手に整形されちゃいますね。
>>881
なる程2通りの書き方があったんですね。
いずれにせよ@番で統一されているみたいなのでちょっと安心しました。
今後も@で書いて行こうと思います。
(C#)と同じなのでこちらの方が気分的に見やすいです。
PHPでの実務経験が無いので実際の開発現場ではどちらが主に使われているのでしょうか?
0887870
2009/04/04(土) 02:39:20ID:???皆さんも↓の方が見やすくないですか?
>>883
if ((condition1) || (condition2))
{
action1;
}
elseif
((condition3) && (condition4))
{
action2;
}
else
{
defaultaction;
}
0888nobodyさん
2009/04/04(土) 02:39:35ID:???0889nobodyさん
2009/04/04(土) 02:41:13ID:???if ( (condition1) || (condition2) ) { action1; }
elseif ( (condition3) && (condition4) ) { action2; }
else { defaultaction; }
0892nobodyさん
2009/04/04(土) 02:53:10ID:???そのスタイルはないな。見づらい。
インデントスタイルでガタガタ抜かすお前にはPythonが合っていると思う。
Pythonにはどのインデントスタイルが見やすいとかいう議論が一切存在しないぞ。
0894nobodyさん
2009/04/04(土) 03:25:39ID:???本気で言ってますか?
コードを詰めまくって書くよりゆとりを持たせたコードの方が見易いし、
メンテナンス性もあがる気がするのですが。
0895nobodyさん
2009/04/04(土) 03:30:54ID:???まぁコーディングスタイルは宗教論争なんで、不毛なダケなんだけどさ。
0896nobodyさん
2009/04/04(土) 03:31:20ID:???統一させた方が見やすい
0897nobodyさん
2009/04/04(土) 04:00:44ID:???0899nobodyさん
2009/04/04(土) 05:30:26ID:???0900nobodyさん
2009/04/04(土) 05:58:30ID:???EclipseでJavaとPHPをやってる俺からいうと
if (condition) {
}
のほうが見やすい
他の人も同じようなこといってるが
最初に使い慣れたIDEの標準の補完機能によって
どちらが使いやすいか分かれるんだろう
あとはコーディング規約の問題
0901nobodyさん
2009/04/04(土) 07:35:04ID:+rg3YxkWちゃんとロックされるんですか?
同時書き込みでファイル壊れたりしませんか?
0902nobodyさん
2009/04/04(土) 07:37:06ID:???書き込みを行う関数はfwrite
0903nobodyさん
2009/04/04(土) 07:39:05ID:???0904nobodyさん
2009/04/04(土) 07:43:24ID:???ありがとうございました。
0905nobodyさん
2009/04/04(土) 11:05:08ID:UT159Z4LノートPCなので容量を抑えたいのですが、linuxしてる方でおすすめのものがございましたら教えて下さい
0907nobodyさん
2009/04/04(土) 11:42:14ID:???0908nobodyさん
2009/04/04(土) 12:46:42ID:???C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\
hogehoge.html
tomato.php
に各WEBページ(phpファイル)を置いて
http://localhost/
でアクセスしているのですが、これを
C:\Work
hogehoge.html
tomato.php
でアクセス出来る様にするにはどうすれば良いでしょうか・
※デフォルトのパスをC:\Workにしたいと思っています。
0910908
2009/04/04(土) 13:04:00ID:???ありがとうございます。
document root を
【httpd.conf】
DocumentRoot "C:/htdocs"
に変更しApacheを再起動したのですが
Web サイトによってこのページの表示を拒否されました
というエラーが出て一向にページを見る事が出来ません。
なぜでしょうか?
0911nobodyさん
2009/04/04(土) 13:13:06ID:???0913nobodyさん
2009/04/04(土) 13:43:54ID:???0914nobodyさん
2009/04/04(土) 13:58:00ID:???あとID出せよ
0915nobodyさん
2009/04/04(土) 15:00:42ID:???documentrootのディレクトリ設定のパスも書き変えないと意味ないよ
0916908
2009/04/04(土) 15:19:05ID:???>>914
IDを出す、 というのは所謂 fusianasan ですか?
>>915
ありがとうございました。
設定ファイル系を色々といじってみたところ無事動作する様になりました。
ありがとうございました。
0917nobodyさん
2009/04/04(土) 15:27:18ID:???0919nobodyさん
2009/04/04(土) 20:31:48ID:???【OS名】WindowsXP
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql5
【質問内容】
セッションが破棄されるタイミングがいまいち分かりません。
セッションファイルの数を数える事により、現在サイトにアクセスしている人の
大まかな数を数えているのですが、ブラウザを終了してもセッションファイルは残ったままです。
理想を言えば、ユーザにログインボタンを押してもらい session_destroy を呼ぶ
事によりセッションファイルを削除するのが良いとは思いますが、
如何せんブラウザなのでログアウトボタンが必ず押される保障はありません。
ブラウザが閉じられてから5分したらセッションファイルを削除する、といった事は可能なのでしょうか?
通常セッションは一定時間経てば破棄されるらしいのですが、phpの場合はどこで設定すれば良いのでしょうか?
0923nobodyさん
2009/04/04(土) 21:12:45ID:???0924nobodyさん
2009/04/04(土) 21:39:31ID:???いつ消えるかはsession.gc_maxlifetimeで決まる。
集計は、閉じられた情報は取得できないので、セッション変数に「最終利用日時」を記録しておく。
画面を表示するたびにこれを更新して、集計時はその数字を見て判別する、という手がある。
例えば、5分以内にサイトにアクセスした人の人数を「現在サイトにいる人数」と見なすとかな。
ファイルだと大変なので、DBなどの集計しやすい場所にセッション情報を格納するとやりやすい。
0926nobodyさん
2009/04/04(土) 22:18:43ID:???0927920 ◆gRDEQwu9i2
2009/04/04(土) 22:21:55ID:???これの事だったんですねw
勘違いしてました。
>>923
そうですよね。
>>924
ちょっと色々といじってみます。
>>925
別に荒らしてはいない気がしますが・・・
>>926
DBにアクセス情報を記録させてそこで判定した方が確実で簡単かもしれませんね。
0928nobodyさん
2009/04/04(土) 22:25:35ID:???0929nobodyさん
2009/04/04(土) 22:34:25ID:???0931nobodyさん
2009/04/04(土) 23:03:22ID:???0932nobodyさん
2009/04/04(土) 23:06:05ID:???function ExecuteSanitizing(&$strSanitizing)
{
$strSanitizing = htmlentities($strSanitizing, ENT_QUOTES, mb_internal_encoding());
}
$str = "<b>あいうえお</b>";
$str = instance->ExecuteSanitizing($str);
echo $str;
として出力するとローカルでは文字化けしないのにさくらインターネットだと文字化けしちゃいます。
なぜでしょうか?
0933nobodyさん
2009/04/04(土) 23:26:21ID:???0934p7033-ipbfp405osakakita.osaka.ocn.ne.jp
2009/04/04(土) 23:30:26ID:UHDnoHcu0936fusianasan
2009/04/04(土) 23:40:52ID:???0938fusianasan
2009/04/04(土) 23:46:28ID:???いや、おれ2ちゃんのボランティアやってるからこのぐらいの特権は持ってるよ
0939nobodyさん
2009/04/04(土) 23:48:52ID:???なにがボランティアだつまらん
0940nobodyさん
2009/04/04(土) 23:52:00ID:???0941f&lrm;usianasan
2009/04/04(土) 23:57:19ID:???0942fusianasan
2009/04/04(土) 23:58:04ID:???どうすれば出来るですか?
あいうえお
0943fusianasan
2009/04/05(日) 00:00:02ID:???0946nobodyさん
2009/04/05(日) 00:31:03ID:???クラスメソッドを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」と定義していたことでした。
エラーメッセージからでは気づきにくいことでした・・・
だとさ
0947nobodyさん
2009/04/05(日) 00:42:58ID:???0948nobodyさん
2009/04/05(日) 00:45:11ID:???だからこのクラスはabstractとして宣言されるか、残りのメソッドを実装しなければいけません。
このメッセージで分かりづらいってなら、どう出せばいいんだろう。
0949nobodyさん
2009/04/05(日) 00:48:33ID:???ZendJapanもエラーメッセージを日本語化すべきだな
0950nobodyさん
2009/04/05(日) 01:35:51ID:???0951nobodyさん
2009/04/05(日) 02:02:56ID:???ありがとうございます。ローカルの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
0952nobodyさん
2009/04/05(日) 02:07:24ID:???自分が借りているレンタルサーバーの場合、
(1)そもそもユーザーがphp.iniを編集できない
(2)php.iniがpublic_htmlの外に置いてあった
この2パターンがありました。
0954nobodyさん
2009/04/05(日) 02:39:34ID:???質問用テンプレ作りました。
どうぞテストもかねて使ってみてください。
0955nobodyさん
2009/04/05(日) 03:48:15ID:???0957nobodyさん
2009/04/05(日) 11:30:01ID:rlL9K/DC//$text
-----
あいうえお
-----
//取得する為の正規表現
preg_match_all("/-----¥n(.*)¥n-----¥n/is",$text,$array)
しかし、「-----」の間を上手く取得できません。
どういった正規表現のコードを書けば良いか教えて下さい。
0958nobodyさん
2009/04/05(日) 12:04:57ID:???0959nobodyさん
2009/04/05(日) 12:10:08ID:???-----
↓
-{5}
0960nobodyさん
2009/04/05(日) 12:10:54ID:???0961nobodyさん
2009/04/05(日) 12:20:05ID:???\rとか\r\nは含まないんだな?
0962nobodyさん
2009/04/05(日) 12:43:45ID:???環境によって必要ならそういう対応すればいいだけ
0963nobodyさん
2009/04/05(日) 12:52:14ID:???ウニックス系で\nと書くとLF(0x0a)を表し、
ウィンドズ系で\nと書くとCR+LF(0x0d 0x0a)を表すのが基本でしょ
0964957
2009/04/05(日) 13:26:52ID:???ただ、以下のようにしましたが、やっぱり取得できません。
$text = trim("
-----
あいうえお
-----
");
preg_match_all("/-{5}\n(.*)-{5}\n/",$text,$array);
0965nobodyさん
2009/04/05(日) 13:52:29ID:???trim
trim
trim
trim
trim
trim
trim
trim
trim
trim
0967nobodyさん
2009/04/05(日) 13:55:58ID:???-----
あいうえお
-----
";
preg_match_all("/-{5}\n(.*)-{5}\n/s",$str,$m);
0968957
2009/04/05(日) 14:00:27ID:rlL9K/DCそれで、>>967のコードをそのままコピーして
print_rで出力してみたのですが、やはり文字の「あいうえお」が取得できません。
テスト環境がWindowsXPのファイルがUTF-8ですが、それが関係するのでしょうか?
ただ、他の文字コードにしてもやっぱり取得できません。。
0969nobodyさん
2009/04/05(日) 14:03:21ID:???0970nobodyさん
2009/04/05(日) 14:06:09ID:???0971nobodyさん
2009/04/05(日) 14:08:54ID:???<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<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] => あいうえお ) )
0972957
2009/04/05(日) 14:11:33ID:rlL9K/DCそうですか・・。
テストしているローカル環境のPHPが5.2.5で
試しにさくらのレンタルサーバ(5.2.8)にもアップして試してみたのですが、
971さんのような結果になりません・・。
0973nobodyさん
2009/04/05(日) 14:11:50ID:???<?php
$text = trim("
-----
あいうえお
-----");
preg_match_all("/-{5}\n(.*)\n-{5}/",$text,$array);
var_dump($array);
?>
0975nobodyさん
2009/04/05(日) 14:18:21ID:???改行コードがCR+LFだからとかいうオチじゃないよね?
もしこれで通ったらぶっ飛ばすぜ
<?php
$text = trim("
-----
あいうえお
-----");
preg_match_all("/-{5}[\n|\r]+(.*)[\n|\r]+-{5}/",$text,$array);
var_dump($array);
?>
0976nobodyさん
2009/04/05(日) 14:23:01ID:???お尻の改行だけを取るならrtrim("\n",変数)の方が誰が見ても分かりやすくていいと思うんだ
0977nobodyさん
2009/04/05(日) 14:24:31ID:???こういう書き方するなら正規表現もっと勉強したほうがいい
0979957
2009/04/05(日) 14:47:03ID:rlL9K/DC全く反応無しです・・。
array(2) { [0]=> array(0) { } [1]=> array(0) { } }
という結果にしかなりません・・。
作成手順は、これまでDreamweaverを使っていたのですが、terapadに変更しました。
そしてこれまで挙がっているソースをコピーして保存して実行したのですが、
それでも上記のような結果になります。
文字コードをEUCにしてもSJISにしても結果は同じです・・。
やっぱりPHPのバージョンの問題ですかね・・・
0980nobodyさん
2009/04/05(日) 14:54:28ID:???オススメの入門サイトはありますか?
できればpearを使った場合のメリットとかも十分に解説されているサイトを希望します。
0981nobodyさん
2009/04/05(日) 15:07:29ID:???サクラエディタとか秀丸とかEmEditor使えよ
0982nobodyさん
2009/04/05(日) 15:24:51ID:???0983nobodyさん
2009/04/05(日) 16:37:11ID:???0984nobodyさん
2009/04/05(日) 16:38:57ID:???0985nobodyさん
2009/04/05(日) 22:31:43ID:QUmCZ8RSこの配列をあいうえお順でソートしたいと思います
標準関数ではあいうえお順でソートする関数がないので、自分でユーザー定義関数にしようと思います
あいうえお順にするためにどのようなアルゴリズムを用いればいいのかどなたかヒントだけでもお願いいたします
【サンプルの配列】
$hiragana = array(
"かいわれ",
"れたす",
"あめ",
"さらだ"
);
↑をソートして、結果が↓
$hiragana = array(
"あめ",
"かいわれ",
"さらだ",
"れたす"
);
0986nobodyさん
2009/04/05(日) 22:36:37ID:???0989nobodyさん
2009/04/05(日) 23:56:37ID:???0990nobodyさん
2009/04/06(月) 00:09:45ID:CWy5GQCeCGIゲームを設置したんだけど
サイトによっては自動的に更新されてるんですよ
ページを定期的に読み込むにはどうしたらいいのか教えてください
0991nobodyさん
2009/04/06(月) 00:16:48ID:???0992nobodyさん
2009/04/06(月) 01:04:38ID:???0993nobodyさん
2009/04/06(月) 04:19:15ID:???http://pc11.2ch.net/test/read.cgi/php/1238958898/
0994nobodyさん
2009/04/06(月) 05:48:09ID:???0995nobodyさん
2009/04/06(月) 22:26:16ID:???0996nobodyさん
2009/04/07(火) 11:27:25ID:???0997nobodyさん
2009/04/07(火) 11:38:35ID:???0998nobodyさん
2009/04/07(火) 12:32:43ID:???0999nobodyさん
2009/04/07(火) 13:04:04ID:???1000nobodyさん
2009/04/07(火) 13:05:23ID:???10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。