<?php foreach (range('a', 'z') as $letter) { print $letter; print "<br>"; } ?> こういうことができるのが、PHPのすごいところ。 おなじことをperlでやったら、正規表現を駆使した 渾身の一作で、何十行 書かないといけないことやら。
<?php $a = uniqid(); print $a; ?> これ、試してみたら、全然ユニークじゃないんだけど、 どういうこと? 生成されるIDの左側が常に一緒なんだけど??
一文字でも違えばユニークだと思うが ランダムと勘違いしてないか?
PEARって別にincludeとかしないでも、 ソースの中にベタ書きしてもいいのか?
他人に配布しないならいいんじゃね
>>717 何がすごいのかわからんけど。
('a'..'z').each{|x|puts x}
>>723 だからさ。
そういう書き方すると、
なにをやっているのか、意味が
まったくわからないわけじゃん。
>>717 程度の話ならどの言語で書いても数行じゃないか
数十行になるのはアセンブラくらだよ
まぁ、ある程度簡単で読みやすく書けるところはいいと思うね でもコメントは書こうよ・・・
>>724 普通に解るだろ別に
それはその言語を知らないから読めないだけじゃないか
単にa〜zまでを出力するのに可読性を低くしたり数十行使ったり方がむしろ難しいと思うの
だからDANあたりにPHP使いはアホとか言われるんだよまったく
>>724 「PHPのすごいところ」って、そういう意味かw
まあ、
>>717 はわかりやすいからいいんじゃない?
別にすごいとは思わんけど…w
>>717 perlではこう書けます。
foreach my $letter ('a' .. 'z') {
print "$letter<br />";
}
同じくらい読み易いでしょ?
むしろ正規表現を使うほうが難しいw
>>717 >>723 はRubyの例だけど読みやすいように書いてみるか
('a'..'z').each do |x|
puts x + "<br />"
end
これって、すごいのだろうか?w
PHP しか知らないんだから PHP がすごいのも仕方ないw
コージーお兄さん、サ
誤爆失礼
Perlだったら print foreach a .. z, "<br>"; こんだけ。
それいいな。
>>717 >おなじことをperlでやったら、正規表現を駆使した
>渾身の一作で、何十行
>書かないといけないことやら。
強引に正規表現を使ってやったぞ
(my $str = join('', 'a'..'z')) =~ s/(\w)/$1<br>/g;
print $str;
>>717 Perlでやるとこう?
print join '', ('a'..'z'), '<br>';
または
print ('a'..'z');
print '<br>';
読みにくいかなぁ
>>742 元のphpのコードでは、
一文字ずつ、後ろに"<br>"を付けるようになってるんだが…
>>> for o in range(ord('a'), ord('z')+1): ... print chr(o), '<br />' Pythonは'a'..'z'と書けないけど、for x in 〜: という構文はPerlのforeachや Rubyのeachよりも「その言語をしらないユーザー」に読みやすい。 inclusiveな範囲で文字列を列挙する関数を書くとこうなる。 >>> def chrange(from_, to_): ... for o in xrange(ord(from_), ord(to_)+1): ... yield(chr(o)) >>> for c in chrange('a', 'z'): ... print c, '<br />'
717は必ずレスがもらえるコピペ
746 :
デフォルトの名無しさん :2009/05/24(日) 16:10:28
>>744 [Ruby]
for o in ('a'..'z')
print o + "<br/>"
end
>>746 素直にそう書けばいいのに、 Rubist ってやたら .each {|x| ... } を使いたがるよね。読みにくい。
>>743 しまった><
じゃあこう
# aからzまで後ろに<br>を付けて出力
print map{"$_<br>"}('a'..'z');
>>747 eachもmapもselectもsortもFile.openも似たような構文で書けるから。
なんでeachだけforみたいな別記法使わなきゃならんのという感じ。
rubyの世界の殻の中ではちゃんと統一はとれている。
rubyの外からだと独特で読みにくいのは認めるけど、こればかりは
「使ってみないと分からない」の世界じゃないのかなぁ。
>>747 一言で言うと、「ダサイ」んだよ。Rubyで for 使うと。
他の言語で言うと、foreachを使うべきところで for使う感じ。
>>751 Perlの場合、foreachと書くところでforと書いた方がスマートな場合を
Larry Wall自身が自著で幾つか例を挙げている。
だからどうした、としか
>>747 だって、for が each の構文糖なんだもん
print "$_<br>" foreach 'a'..'z';
携帯で画像をランダム表示したいのですが どのようなスクリプトが使えるのでしょうか?
<img src="<?php rand(1,10); >.jpg"> で1.jpg〜10.jpg用意しろ
これはスクリプトではないので他の方お願いします
javascriptでいいんじゃない
>>757 で何が足りないのか言ってくれないと次が出せない
PHPのタグの閉じに?が抜けてるから そのままコピペして動かなかっただけじゃないのかw
この質問かつてないくらい様々なスレにマルチされてるな
>>760 遅れてすいません
今サーバをもってないのですが
無料PHPサーバでおすすめあげてもらえませんか?
あぁ、後データベース使いたいならfirebirdがいいよ
BDはXindiceの方がいいよ
ありがとうございます!! 携帯ではJSは使えないようです
いや今時のJSは携帯持ってるよ
未だにcookieが使えない携帯があります
>>745 けどこのスレってPHP初心者大半 + 一部の分かってる人、と
思ってたら、わりと他の言語もたしなんでる人がヲチしてる
みたいなのが分かってちょっと驚いてるw
MySQLで、レコードの数を知りたい時はどうかくの?
>>774 見積書
内容 数量 単価
DBレコード調査 1 \50,000-
あと勉強することっていったら、 e-mal、正規表現、MySQL、画像生成くらいかなぁー
あとinclude_pathの意味がわからない
なんでotuneの野郎がこんなスレ見てるのかマジで意味がわからない
それと、pearとsmartyとcakeかな。
>>773 LLバトルロワイヤルスレから人が来てるからな。
わざわざPHPの初心者スレをチェックする Ruby/Perl/Python 使いなんて
ほとんどいないだろ。
PHPはスクリプト系の王者なんだから、 他の言語のことなんか気にしてないのにねー
723 >('a'..'z').each{|x|puts x} 724 >だからさ。 >そういう書き方すると、 >なにをやっているのか、意味が >まったくわからないわけじゃん。 まじっすか。 foreach (range('a', 'z') as $x) { echo $x; } とおなじじゃないのか。 この程度で「意味がまったくわからない」というのなら、プログラム書くのやめたほうがいいよ。 いくらなんでも頭悪すぎる。
単にRubyの構文知らなかっただけだろ
>>783 アンカーの張り方くらい覚えてから書き込んでくれよ
ペチパーの低レベルさがまざまざと
791 :
デフォルトの名無しさん :2009/05/25(月) 07:26:56
>>784 やってる奴じゃないと、普通はわかんないだろ・・・・
#そのくらいは想像せいや ってのもありだけど
putsってあったらRubyかTCLだろJK
>>724 Cしか知らない人がいきなりforeachとか'a' .. 'z' とか見たらそこで凍ると思うぞ。
方言みたいなもんなんだから言語が違ったら読みにくいのは仕方ないだろ。
RANDMIZE DIM GOTO GOSUB RESTORE READ PEEK POKE IF 〜 THEN 〜 ELSE FOR 〜 NEXT モシ 〜 ナラバ イケ 〜
tumblrからお越しの皆様は、半年ROMってろ
tumblr のやつらってキモイよね〜 誰にも相手されてないくせに やたら自意識過剰でさ〜 弱小ゴミクズ言語のくせにナマイキなんだよね〜
<script> a="byebye"; <a src="javascript:'window.alert(a);'">aaaa</a> window.alert(a); </script> これをサニタイズするにはどうしたらいい?
htmlspecialchars
>>796 やめなさいってw
俺は両方見てるんだからさw
>>797 意図がわからない
scriptタグの中にHTMLを書くってのは何か意味があるの?
何のために「サニタイズ」したいのかもわからない
グーグルで検索したら、extractは危険だから使うな、って 書いてあるのだが、どうなのだ?
>>803 危険な理由を考えてみ。宿題。
昔のPHPはクエリのaaaは自動的に$aaaに展開されていた。
危険すぐるので今はoptional、非推奨になっている。
普通に考えて、野良クエリーがグローバル変数を侵食するとか怖くてつかえんだろw
GETで送ったaaaが普通に$aaaに入るはんて怖すぎるw でも初期につくったPHPプログラムを見ると、普通にif ($aaa == とか使ってて え、なにそれこわい
807 :
デフォルトの名無しさん :2009/05/29(金) 13:10:18
>>806 昔はそれしかできなかったんだから、しょうがないでしょ?
機能的にできなかったことで、今の観点から文句をいわれてもねぇーって感じ
いや、$HTTP_VARSは使えたでしょ
お伺いします。 よくこういうmysql_queryの使用例が出てくるのですが、 mysql_query('SELECT * FROM テーブル WHERE なんとか); WHEREってどんな役割があって、どう使うものなのかがどうしてもわかりません。 色々とググっては見たのですが、具体的な解説は見付かりませんでした。 どうか教えてください。
>>809 板違い。データベース板で聞いてよ。
SQL文については初歩の初歩だから、入門書の1冊くらい読みなさい。
811 :
809 :2009/05/29(金) 17:15:27
そうでしたか、ごめんなさい。 でもおかげで「SQL文」で検索したらわかりました。 いままではPHPを使っているんだから、 PHP関連から探すという先入観があり進めなかったようです。
>>808 そういう問題じゃない。
この野良クエリが変数に入ることがなぜ脆弱性を引き起こすのか理解してないな。
大げさだが、環境変数書き換えるようなもんだからな
>>810 お前が板違い。
質問に一切答えない
webprog板のキチガイ自閉症どもから
避難してこのスレができたのだ。
>>811 PHPを学ぶときに、
「PHPだけ学べばいいんだ」
って思って最初はじめるんだけど、じきに
PHPプラス、SQLも学ばなくては
いけないんだ、って気づかされる。
つまり、PHPとMySQLのバイリンガルになることを
強要されるってこと。これがキツイ。
PHPで自分でテキストいじり倒すよりはるかにSQLのほうが簡単だと思うが SQLなんてエディタで楽々吐けるんだし
818 :
817 :2009/05/29(金) 23:38:43
そういう意味ではPHPとDBはセットなんだと思うよ 今の時代でPHPだけってシステムのほうがほぼ無いんじゃないかな
>>815 そういうおまえも、質問には何一つ答えてないワケだが。
SQL補完できるエディタとかってあるの?
PHP+Postgreは少数派か・・・ んー、スーパーグローバルの値を、SQL文にそのまま使うのは怖いね。 限定された空間で作るなら適当にやるけど、公開サーバーだと・・。 とりあえずは、SQL Escapeは必須だし、$_POSTで受け取った変数の中身 くらいはチェックに掛けるな
結局、このスレには > WHEREってどんな役割があって、どう使うものなのか という問いに答えられるヤツは一人もいないのか。
そんなの調べれば出てくるからな
>>823 だいたい「どんな役割があって、どう使うものか」を聞きたい人って
学校や会社の宿題が終わらなくて2chで済まそうっていう屑ぐらい
じゃん。そんな屑にいちいち答え教えてたらキリがない
PHPスクリプトがサーバーで動くとき、 アパッチ権限で動く場合と、 自分の権限(自分のアカウントがもしyamadaならyamada)で動く場合と、 この2つだけ? もっと他にもあるの?
「サーバー権限」 「ユーザー権限」 この2つ?
>>816 PHPっつーかweb開発やってるとPHP、SQL、DB、HTML、CSS、JavaScript(AJAX)、Flash(ActionScript,Flex)、
サーバー構築の知識、サーバーメンテの知識、一通り必要だぞ。
別にPHP関係なくて、Ruby や Railsだって今時そうだし。
それで、キツイ言ってたら、プログラマーやってけないと思うけど。
つか簡単でしょそれら
831 :
デフォルトの名無しさん :2009/05/30(土) 07:19:02
つーかDB触るアプリだと、必須だと思うのだが>SQL
SQLでできることはSQLでやったほうが、パフォーマンスぜんぜんいいしね
#基本はねw
>>809 SQL今後も書きそうなら、入門書位読みなさい
>>827 Apacheからたたく場合はApacheのuser(and group -> httpd.conf) だっしょ?
#普通はパーミッションあわせるわなぁ・・・・
cuiの場合は起動するuser(and group)にあわせる
そういう意味では、変わらないと思うのだが
#基本はね
#cron なんかだと user 指定する場合もあるけど
>>830 簡単なことしかやってなかったらいいんですけどねえ・・・
「つか」って何ですか?
>>827 > Apacheからたたく場合はApacheのuser(and group -> httpd.conf) だっしょ?
suEXECでユーザ権限で動くサーバも多い。
設定次第では、特定の既存ユーザのアカウントで動かすこともできるが、まあこれは
Apacheのuserってことになるのかな。
他のパターンはあるのかなってことだろ?
つーか、どうせこんな質問、レスばかりになるんだから、ム板にPHPを持ってくるのは やっぱり激しくミスマッチな気がする。
837 :
デフォルトの名無しさん :2009/05/30(土) 11:46:37
>>834 あ そうだ すまん
#自分じゃつかわねーから 忘れてた
>>816 >PHPとMySQLのバイリンガルになることを強要される
飯のタネだと思えばつらくもなんともない
てか、言語だけ覚えてもただの言語マニアだろ。 どんな言語でも実用的なもの作ろうと思ったら、 システムや外部ツールとの連携を覚えることは必要になる。 PHPでもコマンドラインツールだけ作る用途で使うなら、 SQLなんて知らなくてもいい。 むしろパイプやファイル入出力のほうが有用になる。
このスレ、板違いだろ
>>839 覚えたばっかりで使ってみたかったんですね。
SQLとファイル入出力を両方知った上でどちらを使うか洗濯するのであって 片方しか知らなくていいってことじゃないと思うが 俺は文字を表示したいだけだからechoだけで十分だし そこまでできてるので俺はPHPできる人ですって話にはならんわけで
別に1年目からそれを全て求められるわけじゃないからねぇ 5年やって純粋なPHP以外は解りませんだったらアホだけど 5年やればそのうちの8割くらいは触ることになるはずだから
いや、5年もいらないだろ
じゃ何年?
メールフォーム一筋で食ってきた俺なんか未だにSQLとか書いたこと無いぜ仕事ください
触るだけなら1年程度で十分だな。 練りこむのを入れるなら3年強。
仕事就いて即バグ取りとメンテ、増築させられたよ C++やってたから文法覚えるだけで特に苦にならなかった SQLもいくつか見たら、ノリ判るし
ノリでプログラムを理解する奴を俺は信用しない。
いや、SQLぐらいプログラムできるなら判るでしょ・・・
>>847 それはさすがにもう食い扶持ないと思うぞ……。
つーか今までよく食ってこれたなお前。
>>850 この場合、ノリってのはプロジェクトの作法みたいなものを指してるんじゃね
条件の記述パターンとかトランザクションのかけ方とか
5年必要って話じゃなくて5年やって駄目ならアホって話だよ 大きなプロジェクトなら1年2年スパンだからずっとコードと保守って事もあるし それで2年やってサーバ知らないからアホって事にはならんけど 次も同じ仕事を2年3年続けてたらアホだよねって
>>853 思うに、誤解の無い表現が出来ない奴は、職業プログラマは駄目だってことじゃね?
856 :
847 :2009/05/30(土) 23:16:58
>>852 スピード対応重視だったせいか去年までは何故か食えてたんだけど流石に無理があったw
今はデザイナの嫁さんの稼ぎで食ってる主夫≒ニートでござい。
確かにメールフォームの需要がなくなるってことはなさそうだな 食えるかどうかはともかくw
858 :
デフォルトの名無しさん :2009/05/31(日) 00:21:36
>>851 やってることのレベルによると思うけど、それは無理
単純なSQLだけならありだろうけど、そんな奴は迷惑
#と数年前の自分に言いたいw
MySQL使いに多いんだけどJOINなしのSQLを何度も投げるのはやめて欲しい もう3.23の時代じゃないんだぞ
>>859 ・その方がスクリプト(とDBの構造)がシンプルになる。
・その方が 圧 倒 的 にパフォーマンスがいい場合がある。
なんて理由から、JOINを選択的に排除するのは特に問題だとは思わない。
逆に、とにかくJOINする、っていう考え方が害になることも多いんだよ。
4〜5個JOINを入れ子にしたSQLとか、書いた奴以外が読むのは激しく負担。
また、そこでバグでも出された日には目も当てられない。
いやだからその考え方が江戸時代の考え方なんだよったく
あまり複雑なJOINだと大量に重複データーが混じるが、それって問ボトルネックになるのかな?
それはSQLが間違ってるから混ざるのでは 外部結合なんて混ざりようがないだろ
JOINがネックになってればそこはチューニングするんだから、 最初からJOINなしで作るのはおかしい。 よっぽど統計の取り方がクソなRDBMSでも無い限り、JOIN使った方が速い。 JOINは害って言ってる奴は、MySQL4しか使ったこと無いんじゃないか。
なんで突然外部結合に話を限定するんだ。
それこそまさに、限定的にJOINを使ってるってことじゃないの?
>>859 から感じる雰囲気では、こんなSQLも普通だと思ってそうだが、そんなもんなの?
(出所は伏せるが、知ってる人は多いかも)
SELECT
class_id1, class_id2, name1, name2, rank1, rank2,
product_class_id, product_id, T1_classcategory_id AS classcategory_id1, T2_classcategory_id AS classcategory_id2,
product_code, stock, stock_unlimited, sale_limit, price01, price02, status
FROM
(
SELECT
T1.class_id AS class_id1, T2.class_id AS class_id2, T1.classcategory_id AS T1_classcategory_id,
T2.classcategory_id AS T2_classcategory_id, T1.name AS name1, T2.name AS name2,
T1.rank AS rank1, T2.rank AS rank2
FROM dtb_classcategory AS T1, dtb_classcategory AS T2
WHERE T1.class_id IN (
SELECT class_id1 FROM vw_cross_products_class AS crs_prd WHERE product_id = ? GROUP BY class_id1, class_id2)
AND T2.class_id IN (
SELECT class_id2 FROM vw_cross_products_class AS crs_prd WHERE product_id = ? GROUP BY class_id1, class_id2
)
) AS T1
LEFT JOIN (
SELECT * FROM dtb_products_class WHERE product_id = ?
) AS T3
ON T1_classcategory_id = T3.classcategory_id1 AND T2_classcategory_id = T3.classcategory_id2
ORDER BY rank1 DESC, rank2 DESC
せめて読みやすくしようと勝手にインデントしてみたが、括弧の対応でミスった。
それって
>>859 が書いたんじゃなくてお前が書いたんだろw
言いがかりで正当化しようとするなよ
俺も何度か途中参画したプロジェクトでテコ入れしたことあるけど 結合してクエリ投げる回数減らした方がパフォーマンス上がる場合が多かった
みんながみんなMySQL使ってるわけじゃないだろ。 接続コストが高いけど性能も高いPostgreSQLやOracle使ってるなら、 JOINした方が全然早い。 単純読み出し命のMySQLくらいじゃないか。都度投げた方が早くなる可能性高いのは。
LAMPって知ってる? ポスグレやOracleはそもそもLAMPの保障外だから 事例としては稀で、実務では通常ありえない組み合わせ PHPでDBと言えば、特別指定しない限りMySQLのことだから
そ、そうだね… 話題変えようか…
なんか久々に聞いたなLAMPって単語
>>867 >>865 のことか?
俺が書いたんではなく、読まされたんだよ。ボトルネックっぽいからと。
結論から言うと、そのデータを取得するためには、90%は無駄な処理。
それを確認するのにどんだけソースとテーブルの関連を調べたか。
最初から、シンプルに3つ位のクエリを出して処理して十分追いつく内容だったし、
マトリックスを作るにしても、もぶっちゃけこのSQLよりPHPで作った方が早かった。
大事なのは、それを突き止めることも困難なスパゲッティSQLを自己満足で書くんじゃないと。
チューニングの結果として複雑になるならまだしも、最初から複雑に書く奴は馬鹿じゃないか?
>>870 さすがに恥ずかしい切り口じゃね?それは。
PostgreSQLも、8.x系統からはまたライトユーザの視野に入るようになってきてる印象。
それまでは、結構昔からDB使ってる人や会社で好まれるもの、っていうイメージがあったが。
それはそのSQL書いた奴が馬鹿なだけで、 JOINと言う仕組みが悪いわけじゃないような気が。
PostgreSQLもWindows版つくったりと、ユーザー広げようとしてるしね Joinより、ビューをDB側で用意したほうが圧倒的に早くなるよ
なんだ、LEFT JOIN のことか
なんだか勇気をもらえるスレだなココ
>Joinより、ビューをDB側で用意したほうが圧倒的に早くなるよ それはない
viewったって中身は結合だから、たまたま速ければそれでいいんだけど 遅かった場合に直しようがないから結局最初からSQLで結合した方が楽だよ
>>865 ひどいね。スキーマが分からないので何ともし難いけど分かる範囲だと
次のように書ける。
[無保証]
SELECT
T1.class_id AS class_id1, T2.class_id AS class_id2,
T1.classcategory_id AS classcategory_id1, T2.classcategory_id AS classcategory_id2,
T1.name AS name1, T2.name AS name2, T1.rank AS rank1, T2.rank AS rank2,
product_code, stock, stock_unlimited, sale_limit, price01, price02, status
FROM dtb_classcategory T1, dtb_classcategory T2
INNER JOIN vw_cross_products_class crs_prd1
ON T1.class_id = crs_prd1.class_id1
INNER JOIN vw_cross_products_class crs_prd2
ON T2.class_id = crs_prd2.class_id2 AND crs_prd1.product_id = crs_prd2.product_id
LEFT JOIN dtb_products_class T3
ON T1.classcategory_id = T3.classcategory_id1 AND T2.classcategory_id = T3.classcategory_id2
AND crs_prd2.product_id = T3.product_id
WHERE crs_prd1.product_id = ? ORDER BY rank1 DESC, rank2 DESC
RDBMSのバージョンも分からないけど、インデックスの使用を妨げる
ような書き方もしていないから多分速いよ。
スキーマが分かればもっと短く速く書けるようになる可能性が高い。
(特にvw_cross_products_class。product_idがキーならこのテーブルを
第一テーブルにしてdtb_classcategoryをJOINした方が速くなる。
あとカンではT3のclasscategory_idの制約も必要ないと思う)
PHP上でロジックを書いた方が速いかはレコード数等々にもよるけど。
あと元クエリーは酷すぎ。多分最善策だったのは、このクエリを事前に
DB板の関連スレにコピペする事だったんじゃないのかな。罵倒しつつ
親切な人がすっきりと書き直してくれたはず。
881 :
デフォルトの名無しさん :2009/05/31(日) 09:00:46
>>870 それは単なる言葉の定義。
そういう構成で使われることが多かった だけやん
誰が何の保障をしてくれるわけ?
>>870 いやあの、LAMPって保障とかそういう言葉じゃないから。
既にあったDBがポスグレとかOracleとかあるからしねえ。
昔はポスグレの方が性能高かったから(今は知らん)か、ポスグレ指定されることもあるしねえ。
金あるとこはしょーもないシステムにOracle突っ込もうとするし。
883 :
デフォルトの名無しさん :2009/05/31(日) 14:17:24
>>879 Oracleの待てビュー早くね?
#Ora使いじゃないからわかんないんだけど
メールヘッダインジェクションとか まじで勉強しないとダメなの?
パスの相対指定のやり方とかってどうやるの? 外部から見られたら困るtxtファイルなんかを public_htmlの外に格納するときなんだけど、 --public_html--a--1.php | |--private_html--2.txt こうなっていたとして、1.phpから、2.txtを 読みたいんだけど。 1.phpからみて、一つ上の(a)、一つ上(public_htm)の、一つ上の中の、 private_htmlの中の、2.txt これでいいの? だとしたら、相対パスの書き方はどうなるの?
require_once('../../private_html/2.txt'); これでできた。 でも、ドキュメントルートを指定して書く やり方あったよね。それ教えてよ。 [DOCUMENT_ROOT] こんなかんじのあったでしょ。
またお前か
>最低限、CR、LFだけはチェックし、含まれる場合 >はセキュリティ上のエラーとして処理(攻撃が行わ >れたとアラートを発生させる等)しなければなりま >せん。 こんなこと書いてあるんだけど、 本当にこんなことしないといけないの?
ここはプログラム板 C++やJavaの偉い人がきますよ
>>888 SQLの場合、実装に穴があると「;」の後ろにLF入れられたら面倒なことになる場合があるけど、
それは穴の方が問題であってLFが問題じゃないよね。
他にCRLFが問題になる場面って思いつかないな。SQLの場合だけ気をつけてればいいかと。
>>890 SQLの話じゃないよ。メールヘッダインジェクションの話だよ。
誰がアナルやねん!
894 :
デフォルトの名無しさん :2009/06/01(月) 19:49:24
ここで聞くことなのか怪しいところですが、PHPを自宅で使える環境にできません。 Apache_2.0はちゃんとインストールできてると思います。 PHP5.2.9もちゃんとインストールして、指示されているように設定の文書も変更しました。 (それが古いバージョンのものだったので一部違う部分もありましたがだいたいできたと思います) ちなみにOSはVistaです。 わかる方がいたら是非教えてください(>_<)
895 :
デフォルトの名無しさん :2009/06/01(月) 20:34:22
LoadModule php5_module "drive:/path/to/php-5.2.6/php5apache2.dll" は設定してる? もしくは変更したところを全部書いてみる エスパーじゃ答えられないし、それやんないとお互い時間の無駄
896 :
デフォルトの名無しさん :2009/06/01(月) 21:21:20
設定の変更などは高度すぎてわからないので まとめてインストールできるXAMPPというものがあると聞きまして インストールしたのですが、結局できません。 依然としてApacheは正常に動いてるようなのですが。。 もうなにがなんだか…すいません
xamppで失敗できる人がいるとは思わなかったw 単に使い方わかってないだけでインストールは一通り出来てんじゃないの? 何をもって「できない」と思ってるのか書いてくれないからわからんけどさ。
898 :
896 :2009/06/01(月) 22:33:17
なんとかでき?ました!笑 メモ帳で書いてたので拡張子がphpのつもりがtxtになってるのが原因でした。。 ありがとうございました!! ちなみに、こんな一括インストールがあるのに、これが主流でないのはなぜでしょう? これには何か欠点があるのでしょうか?
・Windowsでは連続動作・セキュリティ的に脆弱 ・一括インストールだと後のバージョン更新、ライブラリ追加ができない ・バージョンやライブラリ当の違う、複数の環境に対応したテストがしづらい
900 :
デフォルトの名無しさん :2009/06/01(月) 22:43:06
>>898 秀丸使ったほうがいいと思うよ(メモ帳以外のエディタなら何でも)
>何か欠点
使いたいバージョンを手でインストしても、慣れればそう手間ではない
おまけがいっぱい入りそうなのが嫌
Linux鯖がメインでphp以外はディストリのパッケージを使うから
#Win版はzipを解凍
Postgresの方がメインだから
単なる趣味だから
まぁ、せっかくだからPHPエディタのスタンドアロン版とかお勧めする 簡易デバッグも出来るし(設定できればの話だが)
>>898 お手軽開発用としては割と主流だけどね。
本番用には
>>899 の理由含めて色々問題があるから使い辛いけど。
903 :
896 :2009/06/01(月) 23:30:20
そうなんですか。。。 僕は学校の課題を家でも出来るようにしたいだけだったので、たぶんこれで大丈夫です! もしハマっていったらまた個別で使いやすいようにインストールしていきます。 ちなみにエディタはGreenPadを使うようにしました。一番簡単なようだったので。。。 いろいろありがとうございました!!
>>885 まず
http://www.php.net/manual/ja/ これをブックマークしといて。
それから
search for 欄にDOCUMENT_ROOT
を入力してからその右側のプルダウンからonline documentationを
選択してそのさらに右にある矢印をクリック。
気持ち悪いピンクの囲みに何か書いてあるだろう?
xampp使うと成長しないからね
906 :
デフォルトの名無しさん :2009/06/02(火) 14:35:27
$arr = (4,7,8,9) 上記配列で、 残りの1~9(今回の場合は1,2,3,5,6)までの値を配列に格納 する方法を教えてください。
普通に1から10まで回して、$arrに存在してなかったら追加でいいんではない?
$a=array(4,7,8,9); $b=array(1,2,3,4,5,6,7,8,9,10); var_dump( array_diff($b,$a)); が array(7) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) [5]=> int(6) [9]=> int(10) } なのはなぜですか?
トーナメント表などのお勧めなscriptってありますかね?
910 :
デフォルトの名無しさん :2009/06/03(水) 00:42:12
>>906 $array = range(1,9);
$data = array(4,7,8,9);
print_r( array_unique( ( array_merge( $array, $data ) ) ) ) ;
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 )
911 :
デフォルトの名無しさん :2009/06/03(水) 00:46:50
>>908 <?php
$a=array(4,7,8,9);
$b=array(1,2,3,4,5,6,7,8,9,10);
print_r( array_diff($b,$a));
Array ( [0] => 1 [1] => 2 [2] => 3 [4] => 5 [5] => 6 [9] => 10 )
PHP Version 5.2.6
>>908 何を聞きたいのか知らんが、なぜ[3]が入るのか?
ということであれば、再現せず
<?php
$a=array(4,7,8,9);
$b=array(1,2,3,4,5,6,7,8,9,10);
var_dump( array_diff($b,$a));
array(6) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[4]=>
int(5)
[5]=>
int(6)
[9]=>
int(10)
}
PHP 5.2.8
>>898 主流じゃないと思うが、検索する限りではWindowsではよく使われているようですよ。> XAMPP
>>910 rangeという関数あるんですね。
ありがとうございます。
いろいろと活用できそうです。
いやだから文句言うなら回答例を
プログラムって、はじめてやるような例の場合、 精神的な負担やストレスがはんぱないよね。 ストレス度250%って感じ。 同じこと何回もやって、 「ああ、また例のあれだな」 って、先の展開が読めれば なんてことないんだけど、1回目は 本当に脳の血管がぶちきれそうになる。
>>919 そこで言うストレスっていうのは、時間内にできるかどうかもわからん!ってもんだろうな。
時間的な制限がよっぽどきっちきちでなければ、初回が一番楽しい。・・・は語弊があるか。
一番モチベーション高いけどな。
二度目は前回の反省を活かしていじる楽しみがある。(でも一番迷走しやすい)
逆に、三回目以降こそ苦痛で仕方がないような気がする。
どうせそのままでは使えなくてあちこちいじる必要があるのに、全体としてやってることは
前と同じっていう、なんとも言えない作業感が辛くなったりする。
また、前にやった処理と若干違う部分がなんとも修正しにくかったりした場合とかも、変に
あるものを活かそうとして逆に足を引っ張られたりしない?
>>920 ああ、あなたは理系だね。
私は文系だから、ストレスを感じ取る
局面が正反対なの。
unko大学からのアクセスのときだけ、 専用のページに飛ばすのって どう書けばいい? unko大学のリモホが、 abc-123.unko.edu だったとしたとき。 リモホを変数に格納して、 ピリオドで区切って配列に格納して、 右から二つのセクターが、edu、unko、 と一致しているかどうかを==で調べて、 もしtrueなら飛ばす、これでいいの?
>>922 別にそれでもいいけど普通htaccessでしょ。
それでいいんじゃねーの
>>923 ただ飛ばすだけでなくて、ログも取りたかった。
phpで全部制御すればなんでもできるでしょ?
>>925 ログはHTTPdのログがあるじゃないか・・・。
まあPHPで済まして悪いことは何もないからそのままでもいいと思うが。
無料のレンタルサーバーだから アパッチのログは見れないんだよ、dude
date関数って、どの時間帯が表示されるのかな? php.iniの設定で決めるの?
つまり自分のパソコンで実験してるときはJSTが表示されて、 レンタルサーバーにアップロードしたら、 そのサーバーのタイムゾーンで表示されてしまうのかな? だとしたら、アタマこんがらがるね。
なんでPHPerって、スレを乱立させるんですか?
クッキーの受け入れを拒否してると、 セッションクッキーも受け取れなくなるの?
ブラウザの開発元に聞いたら? サーバ側の処理で「クッキーの受け入れ拒否」とかあるの?
仮に誰かが血迷って次スレ立てるとしたら、少なくともスレタイを「PHP初心者@〜〜」にしとけ それか、ここがム板での雑談スレって扱いなら、テンプレに質問スレへのリンクでも貼って置けよ。 クソスレ乱立させんな
>>931 当然。URLにセッションIDを埋めるしかなくなる。
それが他人のパソコンに残ったり、そのURLを利用者が知らずにネットに貼ったりして
セッション乗っ取りが行われる。セッションIDにはワンタイムトークンを使うべきと言われたり、
決済やパスワードの変更等重要なタスクが発生する場面では再認証すべきと言われているのは
そのため。
>>932 開発元に何を聞くんだよw
>>928 date_default_timezone_set()
>>934 あーー。
それで、use.cookie_only=1
とかにしないとダメなんだ?
>>936 session.use_cookies = 1;じゃなかったっけ?
セッションハイジャックでググってみるといい。
938 :
デフォルトの名無しさん :2009/06/04(木) 17:18:28
$first_sunday = mktime(0, 0, 0, $month, 1 - date("w", mktime(0, 0, 0, $month, 1, $year)), $year); 西暦と月の情報だけで、その月の朔を含む週の日曜日を求めるコード。 長くて気持ち悪いんだけど、もっと短くならないかな?
十分短いと思うがw
>>938 $first_sunday = strtotime('next sunday', mktime(0, 0, 0, $month, 1, $year));
941 :
デフォルトの名無しさん :2009/06/04(木) 18:10:33
>>940 お、ありがとう。
この関数のことは知らなかったよ。
>>922 Webサーバが逆引きした名前を用意してくれるとは限らないし、
そもそも逆引きの名前がないかもしれない。
>>940 $first_sunday = strtotime("next sunday $year-$month-1");
>>944 % php -r "var_dump( date( 'Y-m-d' ,strtotime( 'next sunday 2009-2-1' )));"
string(10) "2009-02-08"
PHP5で、文字列の連結を高速化する手法はありますか? 配列に格納後joinするのが早いと思っていたのですが、実際に計測してみると「.」で一つずつ連結する方が早い始末… メモリ確保の観点から「.」で一つずつ連結するより早い方法がある(C#のStringBuilderのような)と思うのですが、どうなんでしょう
>>946 '.'を使うのは並び順とかを指定するコストを人間が
負担してるわけだから早いのは当たり前。
例えば以下でどっちが早い?っつったら二番目に決まってるじゃん。
ループ回す分のコストがないわけだから。
foreach(1..5 as $count){
print $a[$count];
}
print $a[1] . $a[2] . $a[3] . $a[4] . $a[5];
>>945 PHP 4.4.3では2009-02-01と出るな・・・・。
まったくPHPってヤツは。
949 :
946 :2009/06/06(土) 16:39:34
foreach($a as $tojoin){ $a = $joined . $tojoin; } よりも $joined = join('', $a); の方が遅いってこと?なら研究の余地があると思うが。 joinは内部的に配列を追ってるから、そのコストを人間が 負担するのでは比べる意味がない。
ほとんどの場合、その程度の速度差を気にしたところで何の意味もない
953 :
945 :2009/06/06(土) 17:38:33
>948 2009-02-08になったのはPHP5.2.6@FreeBSD。 まったくPHPってヤツは。。。
954 :
952 :2009/06/06(土) 17:56:11
すみません
>>952 >とんでもないロス
は言い過ぎました。
ある程度のロスがあるので、気持ち的にちゃんとした処理が簡単に出来るならしておきたい
に訂正しまふ
>>952 あのさあ・・・・。
連結作業があって、それをそのままドンと出すのと、
配列チマチマ作る作業が先にあって、それからjoinするのとじゃ手間が全然違うでしょ。
それでも通常と配列にはほとんど差がでてないという。
逐次データが出てくるような場合は '.'、元々配列ならjoinの方が早いっていうのは
当たり前のような気がするが。
ためしに配列作ってそれを '.'で繋ぐってテストスクリプト作ってみ。
あとこういうのはクラス化するとどこでロスが出るか分からないから
>>950 みたいに
裸でスクリプト書くのが普通。
そもそも君が知りたいのはjoinのコストと'.'のコストでしょ?全然テストになってない。
テストスクリプト作り直し。
質問 リモートホストをサニタイズ無しで 表示するのって危険?
大事なのは、リモートホストの直接菜表示が危険かどうかではなく、 それが何故危険かどうかわからないことだ
>>955 お願いします、PHP以外のCやC#とかをいじってから言って下さい
C#には文字列連結用のクラスまでデフォルトで用意されてるんですが…
>>958 他の何言語を持ち出してきても結論は変わらないでしょ?
それと
>>955 がCやC#をいじったことがない前提で話を
しているのはなぜ? w
>>959 メモリ確保時のロス、リスト構造、ポインタ、PHPのメモリコピーのタイミングなどの話が全く出てこないので、他言語の事を上げさせていただきました
正直、ここまで話にならないとは思いませんでした
>>960 話にならないのはお前のテストコードだろ。
俺は元々C書きだ。
お前が本当にC書きなら、メモリ確保やポインタがどうなってるか知りたい場合ソースコード
読むのが普通だろ。何やってんの?
> メモリ確保時のロス、リスト構造、ポインタ、PHPのメモリコピーのタイミングなどの話
PHPのテストコードレベルでそんな話出てくるわけ無いだろ。
>>962 おい・・・・・このテストスクリプトって無駄なjoinを繰り返してないか・・・?
他人にお話にならないとか抜かすのは100年早いと思うぞ。
でだ。単純に、
> for ($ii=0; $ii<$cnt; $ii++) {
> > $sb1 .= $str;
> }
と、
> $sb2 ='';
> $sb2 = join('', $test_array);
とを比較してみたら、これでもやっぱり配列の方が遅かったな($test_arrayは用意してある)。
何か問題を感じたらこういう根本的なとこから追っておくのが普通だろ。
まてまて、これは公平な試験じゃないな。片側だけ配列にアクセスしてる。 > for ($ii=0; $ii<$cnt; $ii++) { > > $sb1 .= $test_array[$cnt]; > } と、 > $sb2 =''; > $sb2 = join('', $test_array); だとjoinの方が早い。 結論: ・'.' と joinはjoinの方が早い。 ・配列を使った連結と使わない連結は、使わない連結の方が早い(当たり前だわな)
965 :
962 :2009/06/07(日) 00:05:10
配列を使わない方が速いに決まってるってのが分からんのですが 実際にどんな処理をしてるのかは知りませんが、 join時に配列の各要素を回ってメモリサイズを計算 ↓ メモリ確保 ↓ 結合 の方が 一回一回メモリを確保で結合していくよりも速くないですか? まあ勘違いしてるかもしれんので、今度時間のある時にでもCで確認してみます
966 :
965 :2009/06/07(日) 00:11:08
一応
>>965 で言ってる配列は、ポインタを格納した配列です。
PHPは値を書き換える時点でメモリをコピーするらしいので、
多分ポインタで持ってるのではないかなと
この時点で間違ってるんかな…
967 :
966 :2009/06/07(日) 00:57:22
ああああ変なこと言ってる
>>966 は無視してくださいスレ汚しすみません
まぁぶっちゃけると、そんなこと気にしてる暇があったらコード書け、と。 今の時代、早いコードより見やすいコードのほうが重要
ここで遅い、早い言っている人はそれがクリティカルなプログラムをphpで作っているんだw
>>965 > 配列を使わない方が速いに決まってるってのが分からんのですが
配列をシークするコストがなくなるからな。文法無視して例を書くと、
foreach(1..100 as $loop){ $a .= 'abc' }
foreach(1..100 as $loop){ $a .= $b[$loop] }
どっちが早いか明白だろ?
> 一回一回メモリを確保で結合していくよりも速くないですか?
仮にPHPがそう設計されてるとして、結合だけに関してはな。
ただ、君のテストコードだとjoinは配列使ってて'.'は配列使ってないので
、配列のコストがjoinには掛かる。だから、「君のテストコード」
の場合ではjoinの方が早いとは限らない。
>>966 だ・か・ら、
ソース嫁、と。
>>968 そうでない場面もあるよ。まあPHPでは少ないけど。
>>970 > ただ、君のテストコードだとjoinは配列使ってて'.'は配列使ってないので
.で逐次連結するか、すべて一時配列に格納して最後にjoinするか、
そういう前提でどっちが効率的なのか、って質問だろうに。
勝手なテスト書いてクソの役にもたたない結論出されてもね。
言われてるのは、何のためにそこまでテストしたいんだってのがぶれ過ぎてるってことじゃないの?
例えば
>>962 のコードでは
$var2[] ='a';
ってことをやって計測してるけど、本当にこれが最善の配列の作り方なのかとか、
例えば連結する文字列が固定なのであれば
join('', array('a', 'a', 'a', 'a'))
なんて書き方も可能なのでそっちとの比較もしてみるとか、
考慮に入れてもいいような事がいろいろあるはず。
その辺が甘々なのに、ちっちゃなパフォーマンスにこだわるのが違和感バリバリ。
というか、joinよりimplodeの方が速度出るんじゃなかったっけ? その辺から地道に頑張れ
joinはimplodeのaliasだぞ。
あら。ほんとだ。 差が出るのはsplitとexplodeか。(正規表現の解釈で?) うん。おれが地道に頑張る
_Y_ r'。∧。y. ゝ∨ノ PHP厨が配列の ,,,ィf...,,,__ )~~( 連結の議論をしてる間に _,,.∠/゙`'''t-nヾ ̄"'''=ー-.....,,, ,i i, ,z'"  ̄ ̄ /n゙゙''''ー--... ,i> <i 文明はどんどん発達し r”^ヽ く:::::|::|:::〔〕〔〕 i> <i. ていく・・・・・・。 入_,..ノ ℃  ̄U ̄_二ニ= `=.,,ー- ...,,,__ |,r'''"7ヽ、| __,,,... -ー,,.=' >ーz-,,,...--,‐,‐;;:'''""~ ~''':x.,, ~"|{ G ゝG }|"~ ,,z:''" ___ ~"'=| ゝ、.3 _ノ |=''"~ <ー<> / l ̄ ̄\ .|)) ((| / ̄ ゙̄i;:、 「 ̄ ̄ ̄ ̄| ̄| ̄ ̄ ̄\ ))| r'´ ̄「中] ̄`ヾv、 `-◎──────◎一' ├―┤=├―┤ |li:, |「 ̄ |i ̄i|「.//||「ln|:; ||//__|L_」||__.||l」u|:; |ニ⊃| |⊂ニ| || ,|/ |_. └ー┘ ._| ||/ ヘ 「 ̄ ̄ ̄| /
相変わらずそのAAは発達しないんだな
テストコードを書いた者ですが、 もともとはC#で言う「StringBuilder」を作りたかったのであのようなコードになりました 書き方が悪かったですね まあ多分色々勘違いしてると思うので大人しくソース眺めてみます
>>960 > 正直、ここまで話にならないとは思いませんでした
この流れ、どう読んでもお話にならないのは自分の方だから、
社会に出て身の程を知った方がいいよ。
PHPのスレだなあ
とりあえず、
>>979 のしたかった話と、大方のレスのレベル(階層)がずれてるのは確かだろ。
文字列連結の、PHPの実装上最も速い方法は 「.」 での連結なのか?っていう疑問。
んで、ただ単にCの階層で具体的な話をする(できる)奴がいなかったってだけじゃないか
# 本人が挙げたテストコードが、その階層以前の問題だったってことも大きいんだろうけど
>>960 の煽りはいただけないが、
>>980 の煽り返しは明らかにレベル(次元)が低い、と思う。
ちなみに俺はPHPのソースコードはダウンロードしたことはあるが読んだことない。
需要があるみたいなので、そろそろ次スレ頼む
>>981 >ただ単にCの階層で具体的な話をする(できる)奴がいなかった
>ってだけじゃないか
>>961 が指摘してることを理解してから出直しな
>>945 2/1は日曜なんだから次の日曜は8日で当たり前じゃないのか?
985 :
945 :2009/06/08(月) 21:33:48
願わくは984にもう少しスレを遡る勇気あらんことを。
何だよ性格ひねくれてんな
>>984 2/1の次の日曜は8日なんだが、'next sunday'は1日になったり8日に
なったりするからやっぱりPHPはこういうトコ困ったちゃんだな〜って流れだよ。
そういう時は "+1 day" してから訊ねるといい。
989 :
デフォルトの名無しさん :2009/06/09(火) 14:03:16
php4とか旧世代の遺物を使ってんのが悪いんだろ
>>989 客のサーバにPHP4しか入ってない(んで触れない)こととか普通にあるからなぁ。
うちでもメインのサーバーはPHP4だよw 今度PHP5の新サーバーを立てたけど、まだまだPHP4には頑張ってもらわないとw
PHP5に入れ替えても完全に動くって補償があるならいいけど 今とりあえず動いてるなら4使い続けちゃうよね
サーバーで動かしてるサービスが複数あるから PHP4からPHP5に移行するメリットが特に無い。 PHP5でかかにゃならん仕事はPHP5が入った別のサーバーで書く。
994 :
デフォルトの名無しさん :2009/06/10(水) 09:17:20
>>992 商用の鳥のパッケージ使うならいいけど、srcのほうはupdateとまってるでしょ?
とういうのが気になる
5.2->5.3のギャップもすごそうだね
995 :
デフォルトの名無しさん :2009/06/10(水) 23:34:35
仕事では4ばっかりで、5はまずない うちの会社はそんな感じ 正規表現苦手なのにXMLをちょこっと使う必要があるから、そのあたりの関数作ったりして、少し憂鬱になる サポートとっくに切れてるんだから新しくしてよと
今回、実験してみたんだけど、 その国が15:00前後になるように リンクを投入すると、一番クリック数が 多くなるみたいね。
わかんないことがあったんで、 アメリカの掲示板に英語で質問したら すぐに解決した。2ちゃんねるはもういらない。
>>997 2chじゃなくてMLとかだろjk・・・。
糞スレ終了 php板に帰れよ
?>
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。