【PHP】ID出さんでも質問OKなスレ【初心者歓迎】2
立てるなら過去スレ張れよ出来損ない
姉妹スレDAT落ちしてるぞ
ほんと使えねえクズな
>>1 だな
立てられないなら無理して立ててんじゃねえぞボケ!
やっぱマイケル・ジャクソンの曲はいいなぁ♪
そもそももう統合していいんじゃね ID出したくない理由ってなんだろうな 単にめんどいというならそういうやつには向いてないし門前払い審査には最適なんだがな どうせテンプレもよんじゃいねえよ
削除依頼よろ
駄目だぁ、出来ない・・・パトラッシュもう疲れたよ・・・・・・
できないっつーかやることやってないからだろ
じゃ逆に聞くけど前スレ999は何故シカトなの?
phpinfo()の出力結果のLoaded Configuration Fileにパス書かれてあるとオモ
>>13 すみません、別のことしているうちに次のスレが立っていたもので・・・
>>14 Loaded Configuration Fileの欄には(none)と書かれています
コレがまずいのでしょうか?
Configuration Fileがロードされてないってことだと思いますが。 apacheのhttpd.confのPHPInDirで指定したパスに置かれたphp.iniが読み込まれます。 もう一度確認したほうが良いと思います。 以下回答者の愚痴です。 スレが立っていたから回答を無視するって何様? 999以前にも2回ほどphp.iniがロードされてないって言われてなかった?何を確認したの? やることやってないってのは、「正しい修正をやってない」ということではなく「回答されたことをやってない」という意味だよ? いい加減にしてほしい。
根に持ち杉きめえ
>>16 すみませんでした
わざわざ答えてもらってるのに
もう一度自分で色々試してみます
>>16 さん
ありがとうございました
無事に解決しました!!
3時半から8時間かかりましたが、理由は
>>16 さんの教えてくれた、
>apacheのhttpd.confのPHPInDirで指定したパスに置かれたphp.iniが読み込まれます
この部分でした
『PHPを伝授する』スレの設定をそのまましていたもので、PHPIniDir "c:/php"が自分の設定では、PHPIniDir "c:/WINDOWS"でした
いやぁ、ほんと良かったです
>>16 さんを含め、その他教えてくれた方々皆さんに本当に感謝します
ありがとうございました
今日中にはどうしても終わらせたくて、もし今日出来なかったら暫くふてくされてPHPから離れようと思っていたところでした
本当に皆さんありがとうございました
良かったね。 次からは改善してくれよ。 設定コピペとかは最高に馬鹿な行為だからね。身をもって実感できたかと。
>>20 いやぁ、マジでありがとうございました
自分の使ってる参考書にはPHPIniDirの記述が無くて、コレが何なのか分からないまま『PHPを伝授する』スレの通り設定していました
ほんと助かりました
非常に疲れましたが、良かったです
PHPとSQLiteで会社の簡単な車両予約を作っております。 同じ日付の予約が出来ないように、予約フォームからPOSTされたときに 同じ日に予約が既にある場合は、新たな予約を受け付けないように処理していますが、 予約後にブラウザの戻るボタンでフォームに戻り、同じ日付で再度予約を入れると受け付けてしまいます。 こういう場合はどのように対処すればいいんでしょうか?
日付の判定処理がちゃんとできてないように見えますが
>同じ日に予約が既にある場合は、新たな予約を受け付けないように処理していますが、 これがうまくいってない。 実行されるSQL文をvar_dumpなりで表示させて確認したほうがいい
25 :
22 :2009/09/11(金) 10:06:20 ID:???
>>23-24 ご指摘のとおりでした。SQLの判定文が間違っておりました。
スレ汚しをお許しください。
許してやる
お前アスペルガーだろww
PHP 5.2.9 を Windows で動かしています。
処理の長い処理に、順次 printing... を出したくて
http://jp2.php.net/manual/ja/function.ob-flush.php#90529 などを参考に
function flush_buffers(){
ob_end_flush();
ob_flush();
flush();
ob_start();
}
for($i=0;$i<10;$i++){
flush_buffers();
echo 'printing...<br />';
usleep(300000);
}
としてみましたが、結局、全部まとめて出てしまいます。
何かアドバイスをいただけませんか。
30 :
28 :2009/09/11(金) 17:44:19 ID:???
>>29 早速ありがとうございます。
HTML で出したいのですが、
HTML で出力とはどういうことでしょうか…。
>>28 php5.2.10にバージョンアップしないの?
古いIEの256バイトの呪いとか、apachでのキャッシュとか、0.2秒で目視できないとか
<?php class aaa{ public $b; } $c = new aaa; $c->b=1; print $c->b; ?> ---------------------------- オレ様が華麗にOOPに挑戦
$c = new aaa(); ()つけような
>>33 直接フィールド($b)を操作するのはよくないからアクセサを用意してください。
継承しないフィールドは基本的に全てprivateでOK。
<?php
class aaa {
private $b;
public function setB($value) {
$this->b = $value;
}
public function getB() {
return $this->b;
}
}
$c = new aaa();
$c->setB(1);
echo $c->getB();
?>
php.iniに、 pdo.dsn.samples="sqlite:C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\samples\samples.sqlite" と書き加えろと参考書に書かれているのですが、別にどこに書き加えてもいいのでしょうか? 特にpdo.dsn=と言う様な行も見当たらないのですが
きめえところにインストールしてんな 俺ならD:\Apache2.2\htdocsだぞ
>>38 マジですか?
やっぱCよりもDの方がいいんですかね?
いやドライブはどこでもいいけど階層深いとめんどくさい場面があるから
xamppを使う場合、 \x ってのを入れると、\xがなんか、 特別な意味に解釈されてしまって うまく動かない、ってのを本で読んだんだが、 そうなの? \xampp\sample\... とかってパス名を使う場合。
だから初心者はxamppは使うな
ファイル書込を行いたいのですが 同じ処理をメール受信トリガーで起動させるとfopenでエラーが出ます 具体的には function csv_write($email){ $result = "rslt"; $date = date('Y/m/d'); $word = $email.",".$date."\n"; $pointer=fopen("./csv/test.csv", "a"); if($pointer == FALSE){ $result = "fopen失敗"; mail("$email", "check01", "$result"); return; } flock($pointer, LOCK_EX); fputs($pointer, $word); flock($pointer, LOCK_UN); fclose($pointer); mail("$email", "check02", "$result"); } これをそのまま呼び出したPHPにブラウザからアクセスすると書込成功するのですが メール受信で起動させるとcheck01のエラーメールが届きます この原因は何が考えられるのでしょうか?
カレントディレクトリが違うんじゃないのかな。
46 :
44 :2009/09/14(月) 15:49:02 ID:???
>>45 dirname(__FILE__)かましたら無事にできました!
ありがとうございました。
どーもこのカレントがちょろちょろ変わるのが慣れないですね
脳内エラーパターンリストに早く刷り込まないと
コマンドプロンプトで、C:\Documents and Settings\メイン>って言うのから、cd.. と打たなくてもいきなりC:\>となるような方法ってありますか?
スレ違い
そこをなんとか
phpで、すでに定義された関数を削除することはできるでしょうか。 やりたいことは、ライブラリやフレームワークが提供する関数を上書きしたいということです。 素直に再定義するとエラーになるので、関数をいったん削除できないかと思い、質問しました。 よろしくお願いします。
そういう場合は普通継承させるんじゃないの?
まあ、役には立たないのだけどね。
素直にクラス作って継承させちゃえよ
データベースというのはPHPの参考書には必ず書かれていますが、厳密にはPHPの分野なのでしょうか? それともSQLやデータベースの分野になるのでしょうか?
釣りですね
いや、初心者なんでマジで聞いたんですけど・・・
データベースはデータベース SQL,MYSQL,SQLLite,・・・ データベースと一口にいってもいろいろある プログラミング言語と一口に言ってもいろいろあるのと同じ 分野と言うなら全部別
ツナマヨというのはコンビにには必ず置かれていますが、厳密にはコンビニの分野なのでしょうか? それともおにぎりやツナマヨの分野になるのでしょうか? 変だろ?
関係データベースシステムを操作する言語がSQL(Simple Query Language) 一種のプログラミング言語と考えていい
Simple?
略語ですらないらしいな。
しーくうぇる
Structured English Query Languageが元だね ただSImple Query Languageもあっている
すみません、queryメソッドと、prepare/excuteメソッドの使い分け&違いを教えていただけませんか? どっちも同じような所で使われていて、本3冊を読んでみたりしたのですが分かりません
>>66 query →基本 初心者はこれを使え
prepare/excute → 上級者用
SQLインジェクション対策でこれを使う
はじめのウチは無視してOK
つうかなんで同じスレで聞かないの? マルチと言うかは微妙だけどさ
>>67 そうやって脆弱性のあるプログラムが量産されるわけだな
と言うか、SELECT以外は全部prepare/execute使えばいいんじゃないの? 俺は良く分かっていないからそうしてるんだけどw
selectには何で使わないの? sqlインジェクションの危険は同様にあるぞ
変なデータ入れられることはないが見られちゃまずいものを見られる危険性があるからな
>>71 じゃぁもう全部にprepare/execute89を使えばいいの?
>>72 > 変なデータ入れられることはない
いや、あるだろ。
>>72 >変なデータ入れられることはないが
「;」をエスケープしなきゃupdateでもdrop tableでもし放題だよ
DBを絡めたコードを書いたことない奴が多いスレだな
初心者歓迎だから当然だな
select文にどうやってupdateやdropを組み込むの?
ん?SQLインジェクションへの対抗手段としてquoteってあるんだよね? 「'」を無効化できるから で、それだとコードが冗長になるって言うんでprepare/executeメソッドを使うんだよね? でもそれでも「;」をエスケープしなきゃ駄目だって事? じゃぁ対策はどうすればいいの? 他にメソッドとかあるの?
>>81 レスを順によく読め
;を使ったマルチプルステートメントのリスクは、prepare/executeを使わなかった場合の話だ
>>81 プリペアドステートメント使っていれば「;」も平気だよ。
SQLインジェクションへの対策はmysql_real_escape_stringなどを使う
これは\n\rや'";等をエスケープする。
プリペアドステートメントはそもそもインジェクション対策ではなく
クエリのパースの回数を減らしDB側の負担を軽く(リソース消費量を少なく)させるのが目的。
プレースホルダを使うのでインジェクション対策にも有効というだけ。
冗長だから使うというモノではない。
84 :
nobodyさん :2009/09/16(水) 15:07:06 ID:72D7UAj5
phpでテキストを作成してログを出力してるんですが、ログファイルが増えるのはよくないので 出来ればmessagesとかに一緒に出力出来ればと思ってるんですが 権限の問題かmessagesには出すことが出来ませんでした。 ログを出すさいにmessagesなどに出す方法があれば教えてください。
>>84 1.独自のログに出力させ、そのログをlogrotateでローテートさせる
2.loggerを使う
例)exec("logger -i -t TEST -p kern.warning 'TEST message from php'");
3.messagesの権限を変える。
好きなの選んで。
俺なら1を選ぶが。
>>84 messagesだとOKなのは、ローテーションされるから?
だったら、自前のログファイルもlogrotate等でローテーションすれば良いのでは
> 権限の問題かmessagesには出すことが出来ませんでした。
syslog()を使ってもダメだったってことかな
87 :
84 :2009/09/16(水) 16:23:03 ID:72D7UAj5
>>85 ログ関係いままで触ったことがなかったからloggerなんてものがあったの知らなかったです
ちょっと調べてみます。
>>86 logger同様にsyslogも知りませんでした。
使い方は調べてみて良さそうなほうを使ってみようと思います。
messagesだとOKっていうわけじゃないんですが、ログをフォルダ単位(/var/log)でとっているので
散らばるのはよくないかな〜という漠然とした考えでした。
php.iniのinclude_path= の設定で、 include_path=".;c:/php/includes;C:/php/Pear;"と参考書やネットを見て設定したのですが、 自分のc:/phpフォルダを見ると、includesというフォルダやファイルが見当たりません コレで大丈夫なのでしょうか? 殆どがこのような設定になっていますが、皆さんのphpフォルダの中にはincludesというファイルやフォルダが入っているのでしょうか?
89 :
85 :2009/09/16(水) 17:02:10 ID:???
>>87 syslog()なんてあったのか。
ならexecでloggerなんて呼ばないでsyslog()を使った方が良い。
ただ、syslog()は/etc/syslog.confに書かれたログにしか出力しないので注意
/etc/syslog.confの設定はスレ違いなので調べて。
で、そこまでやるならやっぱりlogrotateの方が良いと思うぞ
PHPから別のMySQLサーバーへの接続ができません。原因は何でしょうか。 試したこと: ・「localhost」で自分のサーバーのMySQLに接続できる。 ・「127.0.0.1」で自分のサーバーのMySQLに接続できない。 ・別のサーバーのIPアドレスでそのMySQLに接続できない。 ・別のサーバーのホストアドレスでそのMySQLに接続できない。 接続できないとき、mysql_connect、mysqli_connectともに、エラー2003、 「Can't connect to MySQL server on 'サーバー' (13)」のエラーが出ます。 また、mysqlコマンドで上記いずれも接続できることは確認しています。 なのでサーバーが起動していないとか、ポートが空いてない、 ユーザー権限・パスワードの設定ミスではありません。 宜しくお願いします。
MySQLが外から接続できない設定になってる
92 :
90 :2009/09/16(水) 19:35:53 ID:KVXgimyy
selinuxは無効にするのがデフォって教えてもらわなかったのか?w
94 :
nobodyさん :2009/09/17(木) 00:51:33 ID:GtJThGz3
質問させてください。 コンストラクタがいまいちどのタイミングで使うのか理解出来ない のですが、誰か教えてください。
>>94 使うも何も、オブジェクトを生成するときに呼び出されるメゾットだよ
主にオブジェクトの初期化を行うことが多い
>>94 Hogeクラスがあるとする。
このクラスのオブジェクトを作成する場合、
$obj = new Hoge(引数);
と記述する。
このとき、function __construct(引数)が定義されてると、自動的に実行される。
どのタイミングで使うかを気にしているみたいだが、
コンストラクタを関数として直接呼ぶ必要は無い。
97 :
94 :2009/09/17(木) 01:29:07 ID:GtJThGz3
>>95 >>96 えと・・・クラスを書いた後、オブジェクトを関数の中に書かなくても
最初に実行されるメソッドって事でいいんですかね?
PHPってPEARやPDOとかを含めたリファレンスって無いんですか? もういい加減ネット調べるのもめんどくさくなってきた・・・ 本でバッと見た方が早いし IT後進国の我が県で一番大きな本屋に売ってなかったんですけど、何かいい本ないですか? アマゾンで買います
101 :
nobodyさん :2009/09/17(木) 10:54:41 ID:aZjknirC
PHPのリファレンス本とPearのリファレンス本とPDOのリファレンスの3冊買えば解決というより ネットでサクっと見るほうが効率よさそうな気もするけどな。
リファレンス程度の事をいちいちブラウザで調べてたら面倒と思うかもしれんな。 IDEならHELP内包してるし、PHPエディタだって関数位ならF1一発で検索できる。 まぁ紙媒体で持っておきたいというのもわかるけどね。
>>102 してないんじゃね
ネットへのリンクがほとんどだろ
マニュアル(php_manual_ja.chmとか)をダウンロードしておけば それを表示っていうのはあるな
http://itpro.nikkeibp.co.jp/members/ITPro/oss/20050311/157352/?P=3 の、次にコマンドライン版PHPを用いて以下のように実行する。
# php /usr/lib/php/DB/DataObject/createTables.php example.ini
という部分とか、
http://hikatu.sblo.jp/article/2916423.html のphp C:\server\php\PEAR\DB\DataObject\createTables.php example.ini
という部分をWindowsのコマンドプロンプトで実行したいのですが、
どのようにすればいいのでしょうか?
そのまま打つだけではコマンドプロンプトが受け付けませんし、
> php /usr/lib/php/DB/DataObject/createTables.php example.ini
とかいう記述方をとる場合、先頭の「>」の前にはいったい何を書けばいいのでしょうか?
コマンドプロンプト実行時はC:\Documents and Settings\メイン>となっていますが、この後に上記の
php /usr/lib/php/DB/DataObject/createTables.php example.ini
など記載しても受け付けられません
ただ単にC:\>の後に記述しても受け付けられず、混乱しています
>>105 phpにパスが通って無いだけじゃないの?
とりあえず、受け付けませんじゃなくて画面に表示されるエラーを記述しなよ
あと「>」の前は書くモノじゃなくて、今いるパスが表示されているだけ。
>>106 すみません、受け付けないじゃなかったです
今実行したら、別ウィンドウで、
「このファイルは開けません:ファイル createTables.php このプログラムを開くには作成元のプログラム名が必要です。
インターネットで自動的にプログラムを検索するか、又はコンピュータにあるうろグラム一覧から手動で選択してください」
とまぁ、よくあるエラーが出てきました
本当ならばココでpear.iniとかテーブルベース上のテーブルに対応したデータアクセスクラスが作成されるはずなのですが・・・
何か表記方法をまちがっているのでしょうか?
108 :
107 :2009/09/17(木) 13:29:19 ID:???
ちなみに自分は良く分からないので、 cd c:\を書いて、C:\>という風にいつもしています
>>107-108 実行したコマンドも”全て”コピペして。
createTables.phpを直接実行したら、.phpという拡張子が関連づけされていなければそうなる
ってこれはphp関係無くwindowsの初歩的な事だよ
>>109 さん
C:\>C:\php\PEAR\DB\DataObject\createTables.php "C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\samples\chap6\myConfig.ini"
と入力しました
.phpの後の「"」の記号は付けたり外したりしました
ごめんなさい、構文の方はまぁ分かるのですが、こういうコマンドプロンプトのようなコンピューターの中の方はからっきしで駄目でして
コマンドプロンプトの弄り方の載ってるサイトを4つほど見たのですが、良く分からなくて・・・
>>110 >>105 でitproのサイトのってるけど、そこには↓↓こう書いてあるでしょ?
# php /usr/lib/php/DB/DataObject/createTables.php example.ini
>>110 では先頭の「php」が抜けているよね?
C:\>php C:\php\PEAR\DB\DataObject\createTables.php "C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\samples\chap6\myConfig.ini"
↑こんな感じで先頭にphpをつけて実行して。
>>111 さん
確かに・・・
phpって付いていました
で、
C:\>php C:\php\PEAR\DB\DataObject\createTables.php "C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\samples\chap6\myConfig.ini"
としたら、「'php'は、内部コマンド又は外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません」と出て、
C:\>C:\PHP\php PEAR\DB\DataObject\createTables.php "C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\samples\chap6\myConfig.ini"
としたら、「Could not open input file:PEAR\DB\DataObject\createTables.php」と出てしまいました
確かにエラーにはなりましたが、コマンドプロンプトが動作しただけでも進展で嬉しかったです
しかし、createTable.phpが動作してくれないと、PEAR::DB_DataObjectは作動しないようで困りものです
もうココに10時間程かけてしまいました(苦笑)
>>112 最初の部分よく見て!createTables.phpへのパスが
「C:\php\PEAR\DB\〜」じゃなくて「PEAR\DB\〜」になってるよ!
C:\PHP\php C:\PHP\PEAR\DB\DataObject\createTables.php "C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\samples\chap6\myConfig.ini"
↑これでいけると思う
>>113 うわぁぁぁぁぁぁぁぁぁ!!!!!
行った!!
動いた、動きました・・・涙
感激です。
>>113 さん、あなたへの感謝の気持ちは一生忘れません。
また、こんな質問にずっと付き合っていただき、まことにありがとうございました
本当に嬉しいし、感謝しています
ありがとうございました!!
コンストラクタを分かりやすく何かで例えてください マニュアル読んでもしっくりこない どなたかお願いします><
どの辺が分からんの?
たとえるからわかりにくくなる インスタンス化(new)したときに一番はじめに呼び出されるメソッド(≒関数)
そんなのはマニュアルに書いてあるんだからいらないですこの無能><
言葉の意味がわからないのなら理解するのは無理 あきらめてください
>>115 う〜ん、基本中の基本だからなぁ・・・
逆に説明するのが難しい
自分はJavaScriptから始めたんだけど、JavaScriptの方がいい説明があったような気がする
今まで自分で初期化用の関数を用意してたのが最初から用意してくれたのがコンストラクタだよ! これ以上に簡単にどう説明しろと
よくわからんから、ガンダムにたとえてくれ
阿呆はスルーしとけ
ここまでの池沼は初めて見たな ガンダムとドムが合体して子供が産まれた、こういう事だよ
アムロがイッたんだな
いや違うだろ アムロがハンバーガーを食べて痛風になったって話だろ?
機動戦士ガンダム 第22話 【女性を襲う恐怖!赤い彗星のお触りテクニック】 じゃなかった?
ガンダムじゃわかりにくいだろ JoJoでたとえてくれ
ストーンオーシャンのジョリーンのオナニーシーンで3回抜いた
>>129 「ブッ殺す」と心の中で思ったならッ!その時スデに行動は終わっているんだッ!
|l、{ j} /,,ィ//| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ i|:!ヾ、_ノ/ u {:}//ヘ | あ…ありのまま 今 起こった事を話すぜ! |リ u' } ,ノ _,!V,ハ | < 『おれはクラスからインスタンスを作成したと fト、_{ル{,ィ'eラ , タ人. | 思ったらいつのまにか初期化されていた』 ヾ|宀| {´,)⌒`/ |<ヽトiゝ | 催眠術だとか超スピードだとか ヽ iLレ u' | | ヾlトハ〉. | そんなチャチなもんじゃあ 断じてねえ ハ !ニ⊇ '/:} V:::::ヽ. │ もっと恐ろしいものの片鱗を味わったぜ… /:::丶'T'' /u' __ /:::::::/`ヽ \____________________
133 :
nobodyさん :2009/09/18(金) 11:25:15 ID:N3PcKfh3
PHPからrpmコマンドを叩きたくてrpm.phpを作成して下記を作りました。 exec('rpm -ivh ./ntp-4.2.2p1-9.el5.centos.i386.rpm'); rpmファイルの権限と所有は -rwxrwxrwx 1 apache apache としrpmとphpは同じフォルダに置きました。ブラウザからアクセスして実行してみましたが、rpm -qa | grep ntpで見ても入っていないようです。 上記のコマンドを入力して実行するとちゃんとインストールされるのでコマンドはあっていると思います。 うまくいかない原因があれば教えてもらえないでしょうか。
アンパンマンで説明してやった方が分かりやすくないか?
>>133 たぶんパスが通って無いと思う。「rpm -ivh」の部分を「/bin/rpm -ivh」にしてみて
あとexecじゃなくてsystemにして出力と戻り値を拾ったほうがいい
$last_line = system('rpm -ivh ./ntp-4.2.2p1-9.el5.centos.i386.rpm 2>&1',$retval);
var_dump($last_line);
var_dump($retval);
>>133 echo exec('whoami'); のユーザーで rpm使える?
しかし、こんなスレでよく質問する気になるね。
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww 何このスレwwwwwwwwwwwwwwwwwwwwwwwwwwwww
140 :
137 :2009/09/18(金) 11:33:56 ID:???
確かにrpm -ivhは一般ユーザじゃ普通無理だな
アンパンマンで例えるならば簡単だ カビルンルンそのままじゃねぇか!!
142 :
133 :2009/09/18(金) 11:39:36 ID:N3PcKfh3
>>137 パスが通ってなかったみたいです。でも
error: can't create transaction lock on /var/lib/rpm/__db.000
と出てきましたので一般ユーザーでは無理みたいです。
でも原因がわかりましたので助かりました。
ありがとうございます。
sudoあたりで権限あげれば出来るのかな。
143 :
142 :2009/09/18(金) 14:46:04 ID:N3PcKfh3
sudoで apache ALL=(ALL) ALL とかやってもダメでした 試しにsudoに %wheel ALL=(ALL) ALL を追加して /etc/groupに wheel:x:10:root,apache してみましたがダメでした。 PHPでrpmコマンド叩く事って無理なんでしょうか。 実は商用のものでブラウザ上からrpmファイルを指定して実行するものがあったので 便利だと思いちょっと似たようなの作ってみたかったのですが。
googleで php sudo ってやって出てくるページを10個ぐらい眺めるといいかも。
>>143 ソースは?
ちゃんとsudoのパスワード渡してる?
どうも須藤です
148 :
143 :2009/09/18(金) 15:38:45 ID:N3PcKfh3
>>144 シェルからはまだ試しておりません。
>>145 ちょっと見てみます。
申し訳ない。
>>146 当初は
apache ALL=(ALL) ALL
としてましたが、その後に
apache ALL=(ALL) NOPASSWD:ALL
と変えております。
rpm.phpは
$last_line = system("sudo /bin/rpm -ivh ./ntp-4.2.2p1-9.el5.centos.i386.rpm 2>&1" ,$retval);
と変更して
ブラウザ上で実行すると
string(9) "Password:"
int(1)
という感じで表示されます。
NOPASSWDにしているのでパスは聞かれないような気もしますが。
ふと思ったのですが、IPv6のクライアントから繋いできた時 $_SERVER['REMOTE_ADDR']の値ってどんな風になりますか?
http://bugs.php.net/bug.php?id=33170 $client_ip = $_SERVER["REMOTE_ADDR"];
$client_hostname = gethostbyaddr($_SERVER["REMOTE_ADDR"]);
$client_hostname2ip =
gethostbyname(gethostbyaddr($_SERVER["REMOTE_ADDR"]));
echo $client_ip."->".$client_hostname."->".$client_hostname2ip;
実行結果
IPv4: 10.11.12.13->server.domain.de->10.11.12.13
IPv6: 3ffe:1::1->server.ipv6.domain.de->server.ipv6.domain.de
gethostbynameはipv4にしか対応していないからipv6の3つ目の結果が想定してたものと違うというのが
このバグレポートでのお話
失礼致します。 あるウェブサービスAPIを取得して、XSLT処理をしたあと、XML出力するという PHPのコードを書いています。 このコード自体問題なく動いているのですが、問題はこのXMLのある文字列を 置換したいのですが、その場合のstr_replaceの書き方がわかりません。 XSLT処理後XMLが格納されている変数 = $result 置き換えたい文字列 = hiropon 置き換え後の文字列 = <iframe src="xxxx" border="0"></iframe> xxxにはURLが入ります。 そのまんま、str_replace('hiropon',置き換え後の文字列,$result)でやっても うまくいかんのです。 変数にHTMLのタグを丸ごとつっこんでも駄目でした。どうしたらいいでしょうか?
>>151 お前何カ所に書き込んでいるんだよ?
webサービス作ってて、マルチポストが嫌われる事も知らんとはね
get って大文字で書かないとダメなんだね。
今、SQLite3を使っていますが、MySQLを使おうと思っています この場合、SQLiteはアンインストールしたり、php.iniにてsqlite部をコメントアウトしたりした方がいいのでしょうか?
少しでも余計なリソースを削除したいなら、消してもいいけど 普通はそんな事しなくて平気
156 :
nobodyさん :2009/09/22(火) 15:23:45 ID:kzOpjiPM
1分のload averageの数値を取得するものを作ってみました。 exec('top -i -n1 -b | grep "load average"', $ret); $ave = substr($ret[0], strrpos($ret[0], ":")+1, 5); $ave; echo $ave とすると *.** " と表示されて"が入ってきます。 これはどこから入ってくるんでしょうか?
一応PHPの学習は終わったのですが、まだ全然使いこなせていません 基礎を習得したくらいなので、今後実践的な事を書いていきたいのですが、学習に役立つサンプルのあるいいサイトありませんでしょうか? 自分でも探しているのですが、例えばクライアントサイドの場合はFireBug等で勉強出来ましたが、流石にサーバサイドは無理だと思いまして
フリースクリプトが星の数ほど公開されてるじゃん 掲示板なりアクセス解析なりショッピングカーとなり好きなの見てみればいいんじゃない
159 :
nobodyさん :2009/09/22(火) 19:46:01 ID:rnxaS1Zp
大角本やいろんなPHPの本を読むのがいいと思うよ。 むろんサイトも参考になると思うが、ソースがきたないのもあるし
require_once('DB/DataObject.php'); $config=parse_ini_file(dirname(__FILE__).'/myConfig.ini',TRUE); $options=&PEAR::getStaticProperty('DB_DataObject','options'); $options=$config['DB_DataObject']; ごめんなさい、この$optionsは上書きされないのでしょうか? 自分にはちょっと分かりませんでしたので質問させていただきました
されるでしょ
162 :
160 :2009/09/23(水) 00:55:25 ID:???
ですよね? では、上書きされるのであれば、下から2行は何の為に記述しているのでしょうか? DB_DataObjectクラスの変数$optionsの部分だけを$config['DB_DataObject']で書き換えているという意味なのでしょうか? ちなみに、PEAR::DB_DataObjectのサンプルコードの一部です
どこに書いてあるの?
164 :
160 :2009/09/23(水) 01:07:20 ID:???
独習PHPのP254です(苦笑 サンプルコード全部書いておきますが、何かDB_DataObjectを利用する場合、この4行は定型的な記述だと思っておけば良いと書かれています <?php require_once('DB/DataObject.php'); $config=parse_ini_file(dirname(__FILE__).'/myConfig.ini',TRUE); $options=&PEAR::getStaticProperty('DB_DataObject','options'); $options=$config['DB_DataObject']; $book=DB_DataObject::factory('book'); $book->selectAdd(); $book->selectAdd('title'); $book->published='翔泳社'; $book->orderBy('isbn ASC'); print($book->find().'件が検索されました。<br />'); while($book->fetch()) { print($book->title.'<br />'); } ?>
試しに省いてみたら?
まず試してみるのは大切だよね
167 :
164 :2009/09/23(水) 13:59:59 ID:???
$options文を一方ずつ省いてみましたが、 Fatal error: Call to undefined method DB_DataObject_Error::selectAdd() in C:\Program Files\〜 となってエラーが出ました う〜ん、コレはどうなっているのでしょうか? 何故オーバーライドされているのにどちらとも作用しているのでしょうか???
エラー文に書いてるじゃないか
169 :
164 :2009/09/23(水) 14:50:44 ID:???
えぇ、6行目のselectAdd()が定義されないというのはエラー文から分かりました このselectAdd()で取得カラムをクリアするのは分かります しかし何故オーバーライドしないと作用しないのかが自分には分かりません $a = ’aaa’; $a = 2; で$aをprint出力すると2と出ると思いますが、このaaaと2はオーバーライドされた後も互いにまだ影響はあるのでしょうか? オーバーライドされているのであれば、上書き前のものは別に必要ないのかと思っていたのですが・・・・・・ ごめんなさい、エラー文の意味が分かっていないかもしれません どういうことなのでしょうか?
もしかしたら3行目はクラスをロードしてるだけとかね
171 :
164 :2009/09/23(水) 16:04:21 ID:kQ5zUYAt
3行目が、コール元のクラス名DB_DataObjectの中の変数$optionsを取得しているというのは分かります で、それをこの構文内の$optionsに代入していると もしselectAdd()がこの文の後にあり、で、4行目の$optionsの文がその後にあるというのならば何となく分かるのですが、3行目の後すぐに4行目で$optionsに別の値を代入しているという事がサッパリ理解できません 例えば、 $a = ’aaa’; print $a; $a = 2; print $a; は分かりますが、 $a = ’aaa’; $a = 2; print $a; は何の為に1行目を書く必要があるのかという風な疑問です しかも質問のコードはこの1行目がなければ作動する事がないというので更に訳がわかりません 3行目でクラスをロードしてすぐに別の式で上書き代入した場合は、ロードはそのまま作用するのでしょうか? このサンプルコードの上4行がDB_DataObjectを利用する場合、定型的な記述だと思っておけと書かれているので分からないままでは実践で使えないだろうなと思いこだわっているのですが・・・苦笑
172 :
164 :2009/09/23(水) 16:17:08 ID:???
$a =& $c; $a = 2; print $a; print $c; は、分かりますか?
174 :
164 :2009/09/23(水) 16:32:10 ID:???
分かりました、ありがとうございました 単純なところで迷っていたみたいですね、お恥ずかしい限りです・・・
例では$cに当たる部分がメソッドだから意味が違うよ
ex) class myClass { function setValue( $set) { $foo = &PEAR::getStaticProperty('myClass', "foo"); $foo = $set; } function view() { print PEAR::getStaticProperty('myClass', "foo"); } } myClass::setValue('value = foo'); myClass::view();
>>175 あっ、ほんとですね
メソッドの場合は意味が違うのですか?
失礼ですが、意味の違いが分かりません
>>176 すみません、初心者なのでいまいち分からなかったのですが、文をそのまま実行したら、
3行目がParse error: syntax error, unexpected T_STRING, expecting T_FUNCTION in C:\Program Filesとなりました
>>176 のコードは、まずmyClassというクラスを定義し、中身はsetValueとviewという2つの関数を内包
setValue関数はまずmyClassというクラスからfooという変数を取得、次にsetValue関数の引数$setを$fooに代入
view関数はそのままprint()
で、メソッド呼び出しという考えでいいのでしょうか?
('value = foo')は$setにfooを代入
で、上の方でも書いている問題点なのですが、自分がこうじゃないのかなぁと思ったのは、
$foo = &の文でコピーした変数fooと$foo = の下の文は独立して・・・ってアレ?
どっちとも同じ式に・・・???
ごめんなさい、やっぱ分かりません
エラーは全角スペースかな。 getStaticPropertyが返してるのは参照なので、 'myClass'と"foo"という文字列で参照できるようにした変数の参照を返してるんだと 思います。 実際どうなってるのかは知らないけど、たとえば $foo = &$proparty["myClass"]["foo"]; みたいな感じで。 なので、 $foo = $set; は $proparty["myClass"]["foo"] = $set; をしてることになりますよね。
そうすることに何の意味があるの?
180 :
164 :2009/09/23(水) 18:16:35 ID:???
つまり、
>>164 の場合は、
$optionsという変数がオーバーライドされているわけではなく、
PEAR::getStaticProperty('DB_DataObject','options') = $config['DB_DataObject']
と代入しているという事でしょうか?
となると変数$optionsというものは意味が無く、形だけのものだという事なのでしょうか?
それがメソッド時の「&」の意味だと言うのならば分かります
>>176 の例では
PEAR::getStaticProperty('myClass', "foo") = $setという意味で、PEAR::getStaticProperty('myClass', "foo")がオーバーライドされて消えたのではないと言う意味になるのですね
173が分かるなら、それ以上のことではないよ。難しく考えすぎじゃない?
一種の決まり文句とかおまじないのようなものと思っておけばいいと思う。 ソースのコメントに、 // おまじない だの // ↓消すと何故か動かなくなる だのが書かれてるコードはたまに上がってくるしな。
PHPって曜日も把握してるの? たとえば、 2009/09/23 って入れたら、 「その日は水曜日」 ってわかる?
umu
>>184 すごいね。
もしかして、2000年分くらい
全部記憶してるの?
umu
計算で出るだろ
strtotime() と date() だろ
arrayの内容を、 一個づつ取ってきて、 画面に表示する、 ってプログラム、 forとforeachではできたんだけど、 こんどwhileでやってみるかな?って思ったんだけど、 どうやって組むかな?
<?php $banban[] = "HTML"; $banban[] = "XHTML"; $banban[] = "XML"; $banban[] = "CSS"; for($i=0;$i<=3;$i++){ print $banban[$i] . "<br>"; } ?> ------------------------------------- ↑これがforのバージョン。
<?php $banban[] = "HTML"; $banban[] = "XHTML"; $banban[] = "XML"; $banban[] = "CSS"; $banban[] = "PHP"; foreach($banban as $aaa){ print $aaa; print "<br>"; } ?> ------------------------------------------ ↑これがforeachのバージョン。
君の見てるサイトの配列のページに書いてあるじゃないか
print_r じゃダメなの?????
>>190 <?php
$banban[] = "HTML";
$banban[] = "XHTML";
$banban[] = "XML";
$banban[] = "CSS";
for($i=0;$i<array_count_values($banban);$i++){
print $banban[$i] . "<br>";
}
?>
<?php $banban[] = "HTML"; $banban[] = "XHTML"; $banban[] = "XML"; $banban[] = "CSS"; array_walk($banban, create_function( '$v','print $v."<br>";' )); ?>
reset($banban); while ($val = each($banban)) { print $val[1] . "<br>"; }
すみません、上の質問読ませて頂きました
読んでいて自分も疑問に思ったので調べてみたのですが、
>>176 のような『&』の事を何と呼ぶのでしょうか?
ネットで調べても、&だけでは色々とあって自分では辿り着きませんでした
何か、何とか演算子とか名前があると調べやすいと思ったものですから
リファレンス演算子
create_functionってあまり推奨されてないよね
そりゃ無名関数があるしな
リファレンス演算子 で出てこないッス・・・orz
よく色んなサイト(例えばココ
http://www.phpbook.jp/install/phpini/index2.html )
や本でphp.iniの中で、include_path=".;c:/php/includes;"とありますが、自分のPHPフォルダ内にはincludesというフォルダもファイルも存在していません
で、上記のようにphp.iniを設定していますが、意味が無いように思えます
コレは自分で勝手にincludesというフォルダを作ればいいのでしょうか?
それとも、その中に何か必要な(or重要な)ファイルとか入っているのでしょうか?
どうすればいいのでしょうか?
204 :
203 :2009/09/24(木) 15:50:47 ID:???
PHPのバージョンは5.210です
>>203 インクルードパスっていうのは、php本体ではなく、phpの拡張パーツが入るディレクトリの場所。
なので拡張パーツが特になければ、 include ディレクトリはなくていい。
必要になったら、設定ファイルのその箇所に書いたディレクトリを作ればいい。
アルバイトや派遣でPHP経験者の希望が多いみたいなんで PHP経験者になりたいのですが どんなwebアプリケーションを作れば PHP経験者として採用されるレベルになれますか?
>>206 たぶん、経験者を募集している企業の本音は、
「業務で携わったことがある」ことが条件だと思う。
とりあえず、
・サイト画面から入力ができる
・データベースと連携できる
・W3Cチェックを通るHTMLでそれらができる
・環境を作れる(PHPやDBの設定など)
というところは押さえておいたほうがいいかも
実務経験がないのを経験者とは言わない
>>207 の書き込みから未経験者が回答してることは分かった
経験とはそういう事は言わないんだよ
>>209 質問者のためにもなるから正答と思えるものを書いたほうがいいよ。
レス批判しあってもしょうがないし
>>210 批判というより初心者の回答者を正してるだけなのにな
求人での経験ってのは業務で作業したことがある経験の事で趣味での経験ではない
>>207 が書いてあるのは経験ではなくてただのスキル
企業募集の経験者ってのは業務経験者のことだよ。 そうじゃないところはわざわざ経験者とは書かないで、 初心者歓迎や独学でやってる人歓迎みたいな風に書いてあるでしょ。 経験者になりたいのならアルバイトでも経験者になるので、 初心者でアルバイト募集してるとこで下積みするといいよ。 もしかしたらそこから正社員登用されるかもしれないし。
仕事したことない奴が仁王立ち気分でキーボードかちゃかちゃして回答してるんだなwこのスレ
お前みたいのよりは幾分まし
PHPでCGIゲームとか、 WEBゲームとか ブラウザゲームとか作ってみれば? あれは基本が全部つまっている。
PHPでサーバー内のディレクト名を変更する事って出来るのでしょうか? 数百のディレクトリ名を法則にそって変更しないといけないので、手作業でやるにはちょっと時間がかかるので・・・。
普通にrename()でいいんじゃないか?
222 :
nobodyさん :2009/09/25(金) 17:18:49 ID:JtFu9Epk
$dir_file = opendir( './' ); while( $file_name = readdir( $dir_file ) ){ echo "$file_name"; } closedir( $dir_file ); とやっても何も表示されないんですが何か間違ってますか?
>>222 公式マニュアルに正しいディレクトリの取得方法のコードが載ってるの見た?
224 :
222 :2009/09/25(金) 17:28:40 ID:JtFu9Epk
何もファイルが無いんでね?
226 :
222 :2009/09/25(金) 17:41:49 ID:JtFu9Epk
いや・・・ファイルは10個くらい置いてるんですが・・・ opendir.php <- このファイルに224のスクリプトを書いてます index.php test.php up.php こんな感じで10個ほどあります。一応権限も777にしてみましたがダメでした。
じゃエラー表示しない設定にしてたら表示するようにするとか
228 :
226 :2009/09/25(金) 18:10:44 ID:JtFu9Epk
>>227 すいません。
特に何もしてないのでエラー表示の設定などはしてないです。
どのようにすれば出るようになるのでしょうか・・・
じゃ変数の値や関数の返り値を各行で確認してみるとか・・・
セーフモードおふにしてみろ
231 :
226 :2009/09/25(金) 18:29:18 ID:JtFu9Epk
>>229 試しに
echo "1hoge";
if ($handle = opendir('.')) {
echo "2hoge";
while (false !== ($file = readdir($handle))) {
echo "3hoge";
echo "$file\n";
}
echo "4hoge";
closedir($handle);
}
echo "5hoge";
こういうの書いてみたら1hogeと5hogeのみ表示されました・・・
>>230 php.iniのsafe_modeですよね?Offとなっておりました。
ますます意味が分からない・・・
いやそれは止まってる場所を調べる方法であって値を調べているわけではないぞ・・・ >path が有効なディレクトリでないかまたは権限が 制限されているかファイルシステムのエラーによりディレクトリが >オープンできない場合、opendir() は FALSE を返し、 E_WARNING エラーが発行されます。 opendir() >のこのエラー出力は、 関数名の前に '@' を付けることにより抑制できます。 カレントディレクトリがオープンできない理由てのは俺には分からん。 warningエラー出てるんじゃないの? var_dump(ini_get('display_errors')); var_dump(ini_get('error_reporting')); を実行した際の結果は?
検索ワードが見つからない場合に、not found的な表示をしたいです。 SQLで検索ワード見つからない場合にnot foundを表示する事自体は分かったので すが、 それ以降のHTMLの表記を中止する事は可能ですか? <?php if ( ○○==0 ) { echo "not found"; } ?> <font>TEST</font> これ以降下にズラ〜〜っとHTMLが続くのですが、それを途中で止めて not foundだけをページに表示するにはどうすれば良いでしょうか。
exit
235 :
226 :2009/09/25(金) 18:47:21 ID:JtFu9Epk
>>232 馬鹿な勘違いしててすいませんでした。
実行した結果は
tring(0) "" string(4) "2047"
となっておりました。
>>233 <?php
if ( ○○==0 ) {
echo "not found";
} else {
?>
<font>TEST</font>
ズラ〜〜っと
<?
}
?>
</html>
>>235 display_errorsが0ってことはエラーが表示されてない設定になってると思うお
php.iniを書き換えればいいお
239 :
226 :2009/09/25(金) 19:08:16 ID:JtFu9Epk
>>238 くだらない質問につきあっていただきありがとうございます。
php.iniを
display_errors = On
error_reporting = E_ALL & ~E_NOTICE
に変更してみましたが、変化は見られませんでした。
変更するところ間違ってるのかな。よく分からなくなってきた。
242 :
226 :2009/09/25(金) 19:32:14 ID:JtFu9Epk
>>241 2回ほど再起動しました。
う〜ん・・・
243 :
226 :2009/09/25(金) 19:34:04 ID:JtFu9Epk
>>241 すいません。
一応サーバごと再起動してみたらうまいこといきました。
ログを見るとどうやらapache様が挙動不審になってたようです。
設定を修正して見れるようになりました。
Webは普通に動いてたのでピンポイントでおかしくなってたようです。
こんなくだらない事にながながとつきあっていただき本当にありがとうございました。
244 :
sage :2009/09/25(金) 20:36:02 ID:???
古いファイルを判定して削除したいんですが、なにぶん初心者なもので良い方法を思いつきません。 date("Ymd H:i:s.", filemtime($file)) をwihleで回して更新日を取得する事が出来るようにはなったのですが これをどのようにすればよいのでしょうか? ヒントをいただけないでしょうか
現在の時間とファイルの作成時間の差を取る その差が、削除したい差以上であれば、削除 てな感じでよくない?
古いファイルの判定基準が曖昧だな 更新日って一度そのファイルが作成されたら更新はもうされないの? とりあえず3ヶ月更新なかったものを削除とすると 取得した更新日と現在日時の差で90日分あいていたら そのファイルにたいしてunlinkかけるとかでいいんでない?
247 :
sage :2009/09/25(金) 20:43:14 ID:???
例えば5個ファイルがあったとして新しい3つのファイルを手元に残して 残りの2個は削除したいという意味です。 説明不足申し訳ない。
更新日時でソートして上から3つのファイル名に対して削除かける てな感じでよくない?
>>247 ファイルを作成するときに同時にファイル名を記録するtxtを用意して
それをもとにして削除しな
250 :
sage :2009/09/25(金) 21:18:20 ID:???
>>248-
>>249 while (false !== ($file = readdir($dir))) {
$filetaime[] = date("Ymd H:i:s.", filemtime($file));
$filetime[] = sort($filetime);
unlink($file[$i]);
というのを思いついたのですが、ファイル名と時間が連動してないですね。
きっとアホなことしてると思われてるんでしょうけど、複数の変数を連動させるような事はできますか?
全部取ってからでないとソートできないっしょが?
252 :
249 :2009/09/25(金) 21:41:52 ID:???
$new_file = "hoge.txt"; //新しいファイル名 touch($new_file); //新しいファイルを作成する file_put_contents("log.txt", $new_file."\n", FILE_APPEND | LOCK_EX); //新しいファイル名をログファイル(log.txt)に追記 $list = file("log.txt"); //ログを配列に読む $tmp_log = ""; //新しいログ for ($i = count($list) - 1; $i >= 0; $i--) { //後ろから回す if ($i > 5) { unlink($list[$i]); //ファイル削除 } else { $tmp_log .= $list[$i]."\n"; } } file_put_contents("log.txt", $tmp_log, LOCK_EX); 動作確認もしてないし細かいとこが違ってるかもしれんけど イメージとしてはこんなかんじのことをいった
253 :
252 :2009/09/25(金) 21:48:57 ID:???
追記の仕様を勘違いしてた&for文とif文の条件がめちゃくちゃだったw 眠くて頭が回らない・・・
途中で送信してしまった 252は忘れてちょうだい・・・
ISBNコード 書名 価格 出版社 0-0000-0001-2 ガリの穴 25,000円 山田のおばさん コレをあなたのデータベースに登録してみて下さい
したよ
257 :
nobodyさん :2009/09/25(金) 23:26:38 ID:xPOnPJfW
いつもログファイルに書き込みするときは fopenしてLOCK_EXしてfputsで書いてLOCK_UNしてfloseしてるんだけど やっぱりfile_put_contents1行で書いたほうがいいものなんかね?
いいって何が?
>>255 俺もしたけど、まさかコレをデータベース登録したおかげでこの俺に彼女が出来る事になったとは・・・
261 :
sage :2009/09/26(土) 00:07:25 ID:???
>>260 file_put_contentsでもパイプでLOCK_EXすればいいんじゃないの?
file_put_contents($file, "hogehoge", FILE_APPEND | LOCK_EX);
こんな感じ。
パイプて
263 :
sage :2009/09/26(土) 00:24:43 ID:???
これはロックされているのか?
>>261 > FILE_APPEND | LOCK_EX
これは有効なのか?
マニュアルを見ると、
フラグを組み合わせる際には、論理 OR (|) 演算子で連結します。
FILE_APPENDはLOCK_EX と同時には使用できません。
と読めるのだが...。
「追記はアトミックに行われるためロックは不要」とあるので、
FILE_APPENDの指定だけでログ追記するのに問題はなさそうではあるが。
265 :
sage :2009/09/26(土) 00:50:03 ID:???
横からで悪いがロックしなくても同時書き込みが発生しても大丈夫ということか?
267 :
sage :2009/09/26(土) 01:40:05 ID:???
マニュアルを信じるならfopenでわざわざLOCKとか使わなくても file_put_contentsの1行で済むというわけか。
FILE_APPENDの場合についてはそのように読めるな。
php でバッチやるならタイムアウトにならないように注意ね
PHPでは、 配列ってシングルクオート入れないと、 正式にはダメみたいだね。
配列に入れる? 正式?
anArray['keyString'] の話か?
>>272 それそれ
シングルクオート抜いたら、
Noticeが出やがる。
何を今更感てんこもりだな・・・
つ$anArray[1]
>>275 数字だったら、Noticeが出ないってこと?
つ$anArray[$key]
define('keyString', 'manuke'); とかあったらバグの元だろうに
>>277 変数でもNoticeが出ないってこと?
$anArray[keyString]
定数keyStringを先に探して、なければ文字列'keyString'とみなす。
クオートで囲わなくても動くかもしれないが、それはたまたまだってこと。
>>278 はこれを説明している
$anArray[1]
1番の要素。
1は番号であって文字列ではないのでクオートで囲わない。
これで判るかい?
2番目の要素だよ
>>281 2番目とは限らないし、そもそも「1番目」ではなく「1番」と書いているだろ
ちゃんと読め
284 :
282 :2009/09/27(日) 00:55:21 ID:???
ん? 1番と書いてるんだから最初の要素のつもりだろ、っていう意味かな? 背番号1番=1番目の打者ではない、という説明で判ってもらえるだろうか
もっと具体的に説明した方がいいと思うよ。 ほのめかすような書き方だと2chでは攻撃されたと思う人が多いから。
286 :
233 :2009/09/27(日) 02:01:49 ID:???
PHPの配列は、数値であっても番号と言うよりただのキーだから、 何番目というのはあまり意味が無い。 $ar[2]=2 ; $ar[0]=0 ; $ar[1]=1 ; print_r($ar) ; 結果 Array ( [2] => 2 [0] => 0 [1] => 1 )
ただのキーだから「何番」というのもおかしい
>>288 foreach の出力の順とかあるでしょ
foreachの順番は配列の内部順番。 配列のソート関数はソレを並び替えるもの。
ん?どういうこと? 順序が関係ないって上で言ってるのに矛盾してるぞ?
>>294 あー、それは俺が書いたんじゃないから知らん。
ID表示ないんだからアンカー付けてくれよ。
勉強しようと思って参考書買って来たけど 外れ引いたっぽ・・・orz
アマゾンで書評がついていない本は 買わないほうがいい
外れだと理解できるだけの勉強はできたってことだろう
299 :
sage :2009/09/28(月) 10:47:22 ID:???
$file=fopen($filename, "a"); flock($file, LOCK_EX); fputs($file, $hoge."\n"); flock($file, LOCK_UN); fclose($file); こういうの使い回してるんですが、これってもっとシンプルには出来ないでしょうか?
どういう意味でシンプルといってるのかがわからんが コードを単に短くしたいのならfile_put_contents()使えばいい file_existsやis_readableなどチェック機構を組み込んだ関数を作るのもよい
301 :
sage :2009/09/28(月) 11:37:10 ID:???
上にも出てるけどfile_put_contentsでもロックされてるっぽいから いちいちfopenとかfcloseしなくてもfile_put_contentsで充分なんじゃないかな
>>301 されてるっぽいとかあいまいな回答なんていらねえんだよ
しっかり検証してから回答してね
303 :
sage :2009/09/28(月) 11:52:15 ID:???
じゃあLOCKされてるから大丈夫と書けばそのまま信じるのかな
検証するためにデッドロックがおきえる環境を意図的に作るほうが難しい
305 :
sage :2009/09/28(月) 12:11:34 ID:???
いまどきのサーバーやPCで同時書き込みとかが発生するくらいの処理数ってかなりのもんだと思う。 負荷ツールで負荷かけてもデッドロックが起きる前に別の問題で落ちそうだし そういう環境作るのってけっこう難しいな
>>304 abじゃないようのjava製のソフト使えばできます
307 :
sage :2009/09/28(月) 18:54:01 ID:???
hoge.txtテキストの中身をクリアにしたいとき touch("hoge.txt") とするのはアリですか? なにか他にクリア方法が思いつかないのですが、代替案とか普通はこうするだろってのがあったら教えてください。
truncate?
309 :
sage :2009/09/28(月) 19:17:12 ID:???
file_put_contents($file , "") でもクリア出来るんじゃね?
310 :
sage :2009/09/28(月) 21:28:13 ID:???
mktimeでファイルの更新日を比較したりしてるんですが、これは扱える数字の限界とかありますか? 2000年問題みたいに扱える桁数の制限から使えなくなったり変な値を返したりすることが出てくるでしょうか?
>>310 環境は?
2038年問題で検索してみて。
>>310 どうせそこまで同じコード書いてないから心配する必要ないよ
313 :
sage :2009/09/29(火) 07:46:18 ID:???
>>310 環境はCentOS5.3のPHPは5.1.6です。
検索してみましたが30年近く先の話なので気にしなくてもよさそうですね
>>312 確かに気にしなくてもよさそうです
>>313 まぁそんなにシビアなシステムでないならいいんだが
「2038年にコード使って無いから関係無い」というのは間違い
日付の計算した時に2038年1月19日を超えたらおかしくなる。
2004年にATMで誤動作をおこしたのもコレ(内部で2倍にしていたため)
だからコーディングの仕方、運用の仕方では今すぐ起こる問題。
例えば、開始日・終了日などを設ける場合に、
「終了日は(事実上無期限で)決まってないから3000年にしとけ」とかした場合に
当日が終了日を超えているかどうかチェックしたりするとおかしくなる。
頭の片隅にでも2038年の事は入れておいた方が良いよ
2038年になってりゃパソコン側でも改良してるから間違いではないな
316 :
sage :2009/09/29(火) 11:30:05 ID:???
その頃にはおれ定年でもういね〜よ
317 :
314 :2009/09/29(火) 11:35:18 ID:???
なんだよ釣りかよ、マジメに回答した俺が馬鹿だった。
たいして参考にならないから気にしなくてもいいよ
319 :
sage :2009/09/29(火) 11:46:08 ID:???
あれって2039年になるとどういう値を返すわけ?
>>317 他スレでも2038年については何度も話題になってるんだよ
毎度、2038年まで後30年もあるから問題無いっていう本質を理解できていない馬鹿がでてくる
321 :
sage :2009/09/29(火) 11:53:11 ID:???
>>319 0とかになるんじゃないの?
と適当に言ってみる。
何この自演
年月日だけなのか時分秒まで含めるのかで変わってくるな。
>>321 CentOS使ってるなら64bit版使えば気にしなくていい
Datetimeは5.3以降じゃないとつかえないのが辛い
え?5.2だよ
>>328 失礼!
RHEL5がphp5.1.6なので、それで使えないのが辛い
自分で入れればいいのに
サポート受けてるのか
>>332 ちゃんと書くと、
RHELをH/Wベンダ経由で800ライセンス買っている
redhatのサポートもH/Wベンダ経由で受けているが、
redhat networkで落とせるパッケージ以外のモノを入れるとサポートが受けられなくなる。
うちは大部分がjavaのシステムだけど、一部phpを使ってる(余談だがpythonも使ってる)
そのphpのためにサポートで揉めるのは勘弁。
スレ汚しスマンかった。
PHPカンファレンスではPHP5.2使っている人が一番多かった記憶がある。 OSバンドルは5.1みたいなので、みな自分でインストールしてるって事かな?
335 :
nobodyさん :2009/09/29(火) 14:25:29 ID:yA+gFAaj
CSVを読み込んで 列順序を変更した上で表示したいです。 項目例の1行目を非表示(2行目からのデータ部分のみ)にして表示したいのですが どのように記載すればよいのでしょうか? for( $i=0 ; $i<count( $data ) ; $i++ ) { print "$shop[$i],$priceA[$i],価格:$priceB[$i] $place[$i]<br>\n"; } 現在の表示部分はこのような感じです。 初心者な質問ですが ご教授お願いいたします。
linux使う奴でPHPを自分で入れない奴なんているのか
>>335 良く分からんが
$i=1
にしてみてはどうだろう
>>335 csv読込み部のソースは?
$shopとか$priceAに既に格納されているなら$i=1で
>>336 昔はソースから入れていたけど、最近はyumで済ませてる。
初期設定にもよるがサーバ設定ならパッケージに最初から入ってるんじゃね ふるいのがだけど 最新のはソースからビルドしないといかんから ちょっといじってみよう程度にはじめたにわかUnix使いだとちょっと大変かもな
初めまして。 プログラミング初心者の学生です。 今のアルバイト先で自分が関わっているパッケージでは、 各ファイルのPHPコードが膨大な自家製ライブラリを、そのページで 使う、使わない関わらず全てインクルードしてしまっています。 このおかげでパフォーマンス(特にメモリ周り)が残念なことになっています。 なんとかしてPHPコード中の不要なrequireを取り除きたい (そのファイルのPHPコードが参照していないインクルードを取り除きたい) のですが、自動的にPHPコード間の依存関係を解決して、 参照していないrequireファイルをリストしてくれるようなツールはないでしょうか? もし無いようであれば、自分で簡単なツールを作ってしまおうと思うのですが、 プログラミング初心者でもカスタマイズしやすいPHPパーサーはありませんか? なければ言語処理研究室の人にyaccの使い方を教えてもらうので PHPのBNFを教えてください。
>>340 難しい事に挑戦するんだね、がんばって
http://www.php.net/manual/ja/book.tokenizer.php を使ってもいいし
BNF周りを知りたければソース一式チェックアウトしてre2c/bison用ファイル
Zend/zend_language_parser.y
Zend/zend_language_scanner.l
を読んだらいいんじゃないかな
最適化はいいんだけど、動的言語で参照していない事を証明するのは大変そうね
eval('require_once "foo.php";'); とか
require_once true ? 'foo.php' : 'bar.php'; とか意味解析するの?面倒そう
オートローダを使用するよう書き換えたほうがよかったりしてね
342 :
340 :2009/09/29(火) 17:56:16 ID:???
>>340 tokenizerで字句解析はできるのですね。
現状のソースをみる限り、完全な構文解析は必要ないし、
http://sourceforge.jp/projects/sfnet_phpparser/ を参考に、簡易パーサーを作ろうかなあ・・・
>BNF周り
PHPは文脈自由文法じゃないぽいですね。
死ぬかもorz
>require_once true ? 'foo.php' : 'bar.php';
>eval('require_once "foo.php";'); とか
うわあああああああああああああああ
!イ´ ,' | /__,.!/ V 、!__ハ ,' ,ゝ
`! !/レi' (◯), 、(◯) レ'i ノ
,' ノ !'" ,rェェェ、 "' i .レ
真面目に作ったら余裕で卒研になりそうだ・・・orz
343 :
nobodyさん :2009/09/29(火) 18:38:14 ID:bssRjC3K
>342 1.hoge.phpでのrequireしてるものは確かdebug的なものでだせたはず 2.hoge.phpでのメソッド呼び出ししてる箇所から必要なライブラリを検索して一覧を作成 3.1−2で無駄なもの一覧作成完了 でいいんじゃないの? 動的関数は面倒ぽいが・・・そんなに難しくないと思う
よろしくお願いします。 IMAPサーバーにあるメールをGmailにコピーしたくて次のようにしました。 $overview_list = imap_fetch_overview($src, "1:{$srcs->Nmsgs}", 0); foreach ($overview_list as $overview) { $head = imap_fetchheader($src, $overview->msgno); $body = imap_body($src, $overview->msgno); imap_append($dst, "{" . $DST['host'] . ":993/imap/ssl}INBOX", $head.$body); } メールそのものは追加されるのですが,Gmail側では, メールの送信日時が,コピーされた日時になってしまいます。 元メールの送信日時を反映させるにはどのようにすればうまく行くでしょうか。
345 :
nobodyさん :2009/09/30(水) 00:35:19 ID:BlvWBTQC
よろしくお願いします。 IMAPサーバーにあるメールをGmailにコピーしたくて次のようにしました。 $overview_list = imap_fetch_overview($src, "1:{$srcs->Nmsgs}", 0); foreach ($overview_list as $overview) { $head = imap_fetchheader($src, $overview->msgno); $body = imap_body($src, $overview->msgno); imap_append($dst, "{" . $DST['host'] . ":993/imap/ssl}INBOX", $head.$body); } メールそのものは追加されるのですが,Gmail側では, メールの送信日時が,コピーされた日時になってしまいます。 元メールの送信日時を反映させるにはどのようにすればうまく行くでしょうか。
346 :
nobodyさん :2009/09/30(水) 10:57:57 ID:7ZBUopvT
foreach($data as $hoge1){ echo $hoge1 . "<br>"; } ってやると 最初の1個目はちゃんと出るけど2個目以降は先頭にArray〜って出る。 なぜ?何か間違ってる?
var_dump($data);
2個目以降に配列が入ってるからだろ
349 :
346 :2009/09/30(水) 11:10:20 ID:7ZBUopvT
>>347 array(24) { [0]=> string(5) "hoge1" [1]=> string(5) "hoge2" [2]=> string(5) "hoge3"
こんな感じで24個入れてます
その変数でその結果はありえない。 可能性があるとしたら隠してる部分。
351 :
346 :2009/09/30(水) 11:25:12 ID:7ZBUopvT
>>350 hoge24まで書いたほうがよかったでしょうか?
変数自体は
$data[] = $data . "hoge$i" . "\n";
で入れてます。
>$data[] = $data . "hoge$i" . "\n"; で >array(24) { [0]=> string(5) "hoge1" [1]=> string(5) "hoge2" [2]=> string(5) "hoge3" にならんでしょ。 先頭に$data付いてるもの。
>>351 小出しにしないで関連する部分のソース全て示して
355 :
346 :2009/09/30(水) 11:28:42 ID:7ZBUopvT
>>352 すいません。
var_dump貼り付けてるだけなんでそのままコピペしてるんですが
本当は違うものがvar_dumpされてないといけないってことなんですよね?
>>353 エラーログにはなんて出てる?
リサイズしてって事は、memory_limitとか超えてない?
>>355 もう一度確認するけどvar_dumpだとArrayが付いてなくてforeachだとArrayが付くの?
>>356 すみません、エラーログがどこ見れば良いか分からなかったのですが、
よく調べたらconfig.phpに「最大添付量」という項目があり、
100kbで制限されていたようです。ここを変えたら無事投稿できました。
お騒がせしました。
359 :
nobodyさん :2009/09/30(水) 11:52:22 ID:sh5fr2N4
mb系のmail関数でメール送信は不具合があると言われました mail()で送信するのが正しいと言われたのですが mail()でのメール送信の正しい書き方を教えてください
>>361 知らないから聞いてるんだけど?
ここ初心者歓迎の質問スレでしょ?
素直にmb_send_mail使っとけ、問題無いから
RFC違反はmb_send_mail使うだけじゃ解決しない話か? だったら自前でエンコードしとけって話だな。
>>364 >質問はIDだせ
勝手なルール作るなよ
mb_send_mailは環境によって文字化けするからおすすめできないなあ そんなのも知らないのかなここの自称回答者ってのは
>>365 それ具体的にRFCの何に違反する話ですか?
bug報告が見あたらないんですが、devにも流れてませんよね?
>>367 文字化けするからmb_send_mail使わないって理由は無いな
適切にエンコード指定すればいいだけだろ?
>bug報告が見あたらないんですが、devにも流れてませんよね? 違反しないと思うなら無批判に使っとけばいいんじゃね?
373 :
369 :2009/09/30(水) 13:12:00 ID:???
>>371 俺が悪かった。
たぶんホッテントリ入りしてるblogの事を言ってると思うが、
はてブで俺もコメントしてるのにすっかり忘れてた。
また文字化けごときでぐだぐだ言ってると思い脊髄反射してしまった。
結局、RFCは関係なかったみたいですね、安心しました。
すみません PEARなんて時代遅れのモノを使うなと言われたのですが PEARを使う事に問題ってあるのでしょうか?? 今後、PEARは衰退していくのでしょうか?? 自分で作るよりは、PEARのpdoとか使う方が良いと思うのですが…
>>375 ZF とか、他フレームワークを使え、ということだよ
>>376 ありがとうございます。
開発現場ではSymfonyも使っているのですが
うまく言えませんが、ちょっとした画面を作るのにいくつもディレクトリ・ファイルが存在する事になり
一言で大げさだなという印象を持ちました。
小規模の開発の場合もフレームワークを使っていくのが普通なのでしょうか?
そうなるとPEARまさに用無し(洋梨)という事ですね!
PDOはPECLだろ ようするにそういうことだ 低速なPEARより高速なPECLに置き換わってるということ なんでPECLが高速なのかはぐぐればすぐにわかるのでぐぐってくれ クラスライブラリの話なのでフレームワークの話をしてるやつはスルーで
>>378 あぁそうでした、pdoはPECLでしたすみません。
PEARはphpで書かれ、PECLはC言語で書かれているのでPECLの方が速度が速いという認識です。
あと言葉足らずでした。
具体的には、ちょっとした管理画面をPEARのHTML_QuickFormを使って作ったら
PEARなんて時代遅れの〜と言われてしまいました…
>PEARなんて時代遅れの〜 PECLがPEARのモジュールすべてを置き換え可能なものなら そういう言い様もあるのかもしれんが・・・
それより「人権擁護法」という危険な法律を知っているかい? 「差別を取り締まる」強力な権限「人権委員会」という組織を設置する法律です。 人権委員会が差別と認定したら、一般人はもちろん警察官も罰せられます。 おそらく「差別を受ける側」の在日朝鮮人や部落解放同盟が人権委員になります。 そうなると警察は朝鮮人を事件の容疑者にすることができなくなります。 容疑者が「俺が朝鮮人だから疑うのか!」と人権委員会に訴えれば、 差別と認定される可能性が高く、警察官が処罰されます。 レイプ事件の容疑者が「俺が朝鮮人だから拒否したのか!」と訴えれば、 被害者の女性が処罰される可能性もあります。 人権委員会の権限は非常に強固あり「簡単に悪用」できる非常に危険な法律です。 しかし民主党は、この危険な法律を「こっそり成立」させようとしています。 その背景には「朝鮮人は差別されて可哀相な人種。日本人は差別する悪い人種。」という 偏った考えがあります。 すなわち「日本は悪い国」という、いわゆる「反日思想」です。 日本人が日本を嫌いになるのは異常なことですが、現実には大勢います。 反日思想の日本人を作り出したのは「日教組」です。 日教組は戦後GHQの指導で設立されましたが、当時の共産党員と在日朝鮮人が運営にあたりました。 彼らはごく自然に日本の教育現場に反日思想を持ち込みました。 戦後70年近く日本人に反日教育をやり続けた結果、多くの反日思想の日本を作り出しました。。 今では「日本人が日本を嫌い」を異常と感じないほど洗脳が進んでいます。 朝日新聞やNHKや電通など主要なマスコミも反日団体です。 小泉安倍政権が北朝鮮に対して否定的な政策を打ち出して以降、 反日団体である「民主党」に政権を取らせるべく世論の誘導に本腰を入れました。 サブプライム問題に端を発する世界的な不況と重なり、自民党は支持率を落とし、 遂に反日団体「民主党」が政権を取りました。 民主党が進めようとしている反日政策は他にもたくさんあります。 ・在日外国人に日本の参政権を与えるのもそのひとつ。 ・受給者の7割以上が在日朝鮮人と言われている生活保護を手厚くするのもそのひとつ。 日本は働かないで日本に寄生する朝鮮人の楽園になります。
HTML_QuickFormの場合多くの人はそんなもの使わないで htmlに直接フォームを記述して自分でバリデーションロジックもかいてるからじゃない? その部分に関してはバリデーション機能豊富なフレームワークつかえというのもあながち間違ってないな
PEARのすべてのモジュールが時代遅れなんてことはない そういう意味で時代遅れというならそいつはアンチかマジキチ
そういう意味でアンチとかマジキチというならそいつはアンチかマジキチ
みなさんありがとうございます。 適材適所って事ですね。
387 :
nobodyさん :2009/09/30(水) 23:09:52 ID:yTlYrHgD
test.php <? include("test.conf"); $ans = $a + $b; echo $ans; ?> test.conf $a = "10"; $b = "20"; だと実行結果は $a = "10"; $b = "20"; 0 ですがtest.conf内を<?php ?>で囲えば意図した結果が返ります。 include先がPHPである必要があるけどファイルの拡張子などは別のものでもよいという考えで大丈夫?
389 :
387 :2009/09/30(水) 23:37:49 ID:yTlYrHgD
>>388 こちらの説明には
読み込むファイル中のPHPコードとして実行する必要がある コードは、 有効なPHPの開始タグおよび終了タグで括る必要があります
とあるのでやはり拡張子はphpでなくても良いという判断で大丈夫なようです。
ありがとうございました。
390 :
sage :2009/10/01(木) 11:29:37 ID:???
header("hoge: test"); これを指定の場所に送りたいのですがどういった関数を使えば指定の場所へヘッダーを送信できますか?
>>390 出力するページのヘッダをいじる関数だからよそのページにヘッダを送出することはできない
392 :
390 :2009/10/01(木) 13:46:22 ID:???
>>391 なるほど。
そうなると他の関数を使わないといけないという事でしょうか。
それともPHPではヘッダーを任意の場所に飛ばすという事自体無理なのでしょうか。
引き続き調べてますがなかなかそれらしいのがみつからない状態です。
WebProxyなんかがあるのを考えるとできるはず ただやろうと思ったことがないのでやり方はわからないなぁ
>>390 さっぱり意味がわからなくて、みんな良く回答してるなと関心します。
指定の場所 とは何でしょう。
あなたのいうヘッダというものが送られる先はサーバー?ブラウザ?
で、どうなってほしいんでしょうか。
397 :
390 :2009/10/01(木) 17:42:45 ID:???
みなさん大変失礼いたしました。 header("hoge: test"); というヘッダーを特定のサーバー(例:192.168.1.1)に送信したいと思ってます。 ヘッダを受け取ったサーバーはその内容をひたすら記録していくというものです。
意味不明すぎるけど、要はHTTPリクエストヘッダを送りたいってことか。 そもそもそれってheader()できるのか? 普通にPEAR:HTTP_Requestでも使って好きにヘッダ追加すりゃ5分も かからないだろうに
header関数でHTTPリクエスト送ろうとする人初めて見た
HTTPリクエストって、 「おまえんとこのページ見せて〜〜」 って、firefoxから、WEBサーバーに送る手紙?
そうじゃね? PHPでブラウザのようなものを再現するのかと思った
404 :
nobodyさん :2009/10/02(金) 16:10:04 ID:Zilzfd9c
つまりはCSRFをやりたいってことか?
PHPって横に長くなる傾向があるんで、 モニターは横長の買ったほうがいいよね?
横に長くなるコーディングをしてる貴様の書き方に問題大有りだろ PHPの性にするな池沼が
でも正方形に近いモニターだと、 コードの右端が切れて見えなくなるよね?
14.1インチ使ってますけど見えますね
改行しても問題ないだろばかー。
413 :
nobodyさん :2009/10/04(日) 18:40:48 ID:WZQEMB6D
imageconvolutionでのシャープ化についての質問です 使い方が分からずググったら、こういう感じで設定すれば良いとあり $matrix = array(array(-1, -1, -1), array(-1, 16, -1), array(-1, -1, -1)); imageconvolution($img, $matrix, 8, 0); 実際シャープはかかったのですが、もう少し弱くかけたいのです それで値を変更してみると真っ黒になってしまいます どのように調整すればよいのでしょうか?
フレームワーク勉強しようと思ってるんだけど、最初にやるには何がいいですか? Zendとかcakeとかいう名前は知っているのですが、何を、また何からやればいいのか分かりません 好きなものをやれというのは勘弁してください
Zendでおk
初心者はcakePHPから勉強しろ その次にpear その次にsmarty
楽になるための苦労は別にいいが、特に楽になってない気がする
418 :
414 :2009/10/04(日) 21:34:11 ID:???
zendとcakeは一緒に使うことは出来ないんですよね?
何かzendの方がcakeよりも難しそうですが、自分の作りたいようなフレームワークを使いたい場合はzendの方がいいような事を聞きました
将来的な事を考えるとzendの方がいいように思えますが、cakeの決められたレール(ルール)だけで特にPHPで不都合を感じないというのであればcakeでもいいように思います
>>416 一応基本的なことはですが、PEARとSmartyは学習しました
その後に学ぶフレームワークという場合は、やはりcakeの方がいいのでしょうか?
420 :
414 :2009/10/04(日) 21:56:24 ID:???
分かりました、zendにします
>>417 このレスはどれに対して言ってるの?
言ってる意味も分からないんだけど・・・
(フレームワークを利用することで)楽になるための苦労(勉強)・・・ (実際使ってみるといろいろ段取りが必要なこともあって)特に楽になってない
>>422 まぁ、それはそうかもね
それに、PHP学習してもまた各フレームワークの記述方法に慣れないといけないとかあるし
Smartyもそうだけど
例えばforeachにしても書き方が少し変わるとか
で、
>>422 はフレームワークは使ってないの?
前もforeachが違いすぎてどうのと言ってた人か? あんなのドキュメント見れば初見でも3分で理解できるレベルだろ
>>424 何の事だ???
知らんけれど、俺はただ最初にSmartyで出てきたのがforeachだったから記憶にあっただけで
別に他の構文述べても良かったんだけど
cakePHPやれよ!!!!!!!!!!!!!
確かにフレームワークで一番人気はcakePHPだけど・・・ symfonyは日本では人気が無いからまぁ別としても、Zendではなくcakeをそこまで強調する理由は?
ググったんですが、よくわからないのですが、n12br()という関数は使えないんでしょうか? Fatal error: Call to undefined function n12br() in E:\xampplite\htdocs\guestbook.php on line 100 *で囲った下のような書き換えをネット上で見かけたので、その下のecho文を 書き換えてみましたが、どうもうまくいきません。 *********** .n12br($row['body']). 以下に書き換える。 .12br(htmlspecialchars($row['body'],ENT_QUOTES)). ************* echo "<p>" . n12br($row["g_mes"]) . "</p>"; echo "<p>" . 12br(htmlspecialchars($row['g_mes'],ENT_QUOTES)) . "</p>"; 結果>Parse error: parse error, expecting `','' or `';'' in E:\xampplite\htdocs\guestbook.php on line 101
nl2br
n12brでぐぐったら、間違えた話ばっかりだったが。
打ち間違いならしょうがないと思うが n12brで覚えてる人はfunction名がなぜその名前なのか考えないのかな?
つられすぎだろ
参考書のフォントは見にくいからn12brなのかnL2brなのか混合しちゃったよ
セッションファイルの置き場所を知る方法について質問です。 session.save_path の値が設定されていない(=空文字列)の場合、session_save_path() も空文字列を返すようですが、 そのような場合はセッションファイルを置く場所というのはどうやって決まるのでしょうか。
OSのtmpディレクトリ
>>435 ありがとうございます。もう少し詳しく教えていただけないでしょうか。
現在、session.save_pathは未設定、環境変数$TMPDIRも未設定の状態で、
セッションファイルが /var/tmp に格納されます。
この /var/tmp という値はどうやって決まったのでしょうか。
なおPHP5.2.10です。
>>437 Mac と Linux です。
で、PHPのソースコードを追ったところ、
ext/session/session.c の php_session_initialize() で PS(mod)->s_open() を呼んでいる。
けどこれは関数ポインタで、その実体はデフォルトでは ext/session/mod_files.c の PS_OPEN_FUNC() であり、
その中で php_get_temporary_directory() を呼んでいる。
そして main/php_open_temporary_file.c の php_get_temporary_directory() で、環境変数 TMPDIR があればそれを使い、なければ P_tmpdir を使っている。
この P_tmpdir は stdio.h で定義されており、
grep P_tmpdir /usr/include/stdio.h すると
#define P_tmpdir "/var/tmp/"
となりました。
P_tmpdir なんていうのがあるんですねー。知りませんでした。
しかしこれだと、PHPレベルではデフォルトのセッションファイル保存ディレクトリが取得できないということですよね。困りました。
未定義=OSのデフォルト 仕様です
>>441 434ですでに書いている。
セッションファイルの保存場所が知りたいけど、session_save_path() が空文字列で困っているという状況。
>>442 ごめんなさい。
なぜ「セッションファイルの保存場所が知りたい」のかを知りたかったのです。
返答によっては問題解決のために違ったアプローチの仕方もあるかもしれないと思いまして。
バグなのかなぁ。 $_ENV['tmp'] を使っている気配。
>>438 更にphp_get_temporary_directoryでgrepしてみなよ
sys_get_temp_dir()がまんま呼んでるだろ
今のところは実装依存という条件付きでやっつけて、
php.internalsにクレクレしておくといい
>>438 仕様なのだからと回答したのにスルーかよ
>>431 なーんも考えないで
ただ丸暗記してるだけの人って多いよ。
ただ丸暗記の方が覚えるの大変だと思うけどなぁ
>>447 仕様がどうなっているかを聞いているのに「仕様です」と回答してどうするwww
>>449 生まれ持った能力配分が、
暗記力 ■■■■■■■■■■■■■■■
思考力 ■
↑こーんな人も実際いるから、
そういう人は暗記だけでゴリ押ししちゃう。
やっぱxamppユーザはゆとりだなぁ
>>450 =質問者か?
未定義の場合はOSデフォルトで決められたディレクトリになるんだよ
これで2回も回答したよ?
未定義の場合の挙動についてはどこにも書いてないし
実装が仕様ですと強弁したとしても
どう実装されているかを答えらてない
もう質問者は自分で答え
>>438 見つけちゃったようだし
対策も
>>446 で出てるんだから黙っとけ
伝統的に/tmpや/var/tmpは一定時間アクセスの 無いファイルが消えるようになってるから。 といえば良かったのだろうか?
アホな回答者には態度がでかくなっても問題ないさ
>>455 どう実装されたかなんてソース見ろとしかいいようがない
まだやってんのかw
>>434 は過程を聞いてるんでしょ
Q. どう決めているのですか?
A. ソース読め
ならいいが、OSのテンポラリ君は結果だけ言って
答えたつもりになってるからスルーされたんじゃね
回答する事は良いことだが
何を聞かれているか理解できないのを質問者のせいにするのは良くねぇなぁ
質問者ひつこいなw
462 :
nobodyさん :2009/10/06(火) 09:51:03 ID:T6gAVcs1
OpenSSLで暗号化してあるファイルを復号化しているのですが 復号化のパスをPHPにそのまま書いております。復号化するには必ずパスが 必要になりますが、こういったものを保持するにあたって少しでも安全性の高い 保持方法というのはありますでしょうか?
>>460 =質問者は他人に何かを伝える事を、表に出て体験してくるように。
人間の脳というメモリに保存
465 :
nobodyさん :2009/10/06(火) 11:34:11 ID:T6gAVcs1
>>464 最近のサーバには人間の脳が載っているのでしょうか。
残念ながら使用しているサーバには人間の脳は載っておらず、apacheやphpといったものしか積んでおりません。
可能であればPHPで出来ることでお願いできればと思います。
>>434 に絡んでる奴、スレ立てて質問者と二人きりでやってくんねぇかな
>>460 ソースにマジックナンバーを書いておくと中間コード上にプロセスの最初っから最後まで保持されるが
それを見られる状態ならなんでも出来るって話で、何をしても無駄に終わりそうよね
OSとHTTPサーバ(Apacheならモジュール,CGIどちらで動かしているかも)書いたら
もっといい返事貰えるかもよ
467 :
466 :2009/10/06(火) 11:44:30 ID:???
468 :
465 :2009/10/06(火) 12:00:46 ID:T6gAVcs1
>>466 OSはCentOS5.3です。
Apache 2.2.3
PHP 5.1.6
openssl 0.9.8e
動作として
自動受信したメールに添付されている暗号化ファイルを特定フォルダへ移動
特定フォルダにて復号化
復号化ファイルを自動で所定の場所へ移動
となっております。
使用しているのは表に出ているapacheと処理を行うPHPとOpenSSLのみで他の言語やDBなどは使用しておりません。
×復号化
暗号を戻すのは復号であってるんじゃない?
aという文字を5bit分ずらす方法がわかりません $a = a^^^^^;だとずれませんでした
暗号←→平文 復号←→暗号化
>>472 むかし、指導教官に【活性化】の反対語は【抑制化】だと主張されて
閉口したことを思い出した。
でもなぜそれでいけないのかを合理的に説明できなかった。
いまでも夢に見る。
すいませんビットシフトで文字をずらした場合、 ずらした文字から元の文字に直すことって出来ますか?
>>474 KEYやNULLの意味じゃない?
>>476 473に
>PHP のシフト処理は算術シフトです。両端からあふれたビットは捨てられます。
って書いてるよ
あふれて捨てられるビットをどこかに取っておく方法ってないですかね?
捨てられる前に保存すりゃ取っておけるね
CentOS5.3 (64bit) php 5.1.6 ファイルを読み込む時に、3行目から(1、2行目は無視)読み込みたいのですが こういった時は普通はどのように記述しますか? $contents = file('hoge.txt'); foreach($contents as $line){ if($i > 1) echo $line; $i++; } 一応上記の記述で動くのですが、 そもそもfile()で読み込む時に2行無視とかできれば $iがいらなくなりもっとスマートかなと思いました。 でもこんなの↓↓↓しか思いつきませんでした・・・ $contents2 = explode("\n",shell_exec('/bin/sed 1,2d hoge.txt')); foreach($contents2 as $line){ echo $line . "\n"; }
$fp = fopen("hoge.txt","r"); @fgets($fp); @fgets($fp); while( !feof($fp)){ echo fgets($fp); } スマートさは無いな。
@使うな
483 :
480 :2009/10/07(水) 12:49:43 ID:???
>>481 ありがとうございます。
あと思いついたのはfor使う方法です。
$contents = file('hoge.txt');
for($i=2 ; $i < count($contents) ; $i++){
echo $contents[$i];
}
プログラム経験が無いので定石みたいなものがわからないんですよね。
483 が好きかなぁ。 2 はマジックナンバーじゃなくて定数にして、 なんで 3 からはじめたいかの理由を書くけど。
いや結局全部読み込んでるから変わらない気がするけど
>>483 $file = file_get_contents($filename);
preg_match("/[.*\n]{2]/","",$file);
echo $file;
>>483 $file = file($filename);
unset($file[0],$file[1]);
implode("\n", $file);
echo $file;
489 :
480 :2009/10/07(水) 14:06:55 ID:???
みなさんありがとうございます。
ファイル名とか行数とかは定数にします。
>>486 さんや
>>487 さんの書き方は一般的なのでしょうか??
同じ事を実現するのに色々な方法があり、結局ケースバイケースなのかもしれませんが
私の
>>483 の書き方はイレギュラーな書き方でしょうか??
一般的ってどういうこと?
>>488 各要素に改行があるから改行で連結してるんですよ
492 :
480 :2009/10/07(水) 14:17:55 ID:???
>>490 プログラム歴1週間で、まだ自分の書き方が正しいのかどうかわかりません。
>>480 の場合、目的の事はできているのですが
このコードがあまりにもとんちんかんなコードだったら困ると思い、
普通はどう書くのか質問しました。
私の記述の仕方で問題無ければ良いのですが・・・
一般的かそうでないかとかじゃなくて 用途を満たしているか、セキュリティは大丈夫か、負荷は大丈夫か、などで判断したほうがいいかと
>>492 とりあえず
>>480 に関しては問題無い
あとはネットに転がっているサンプルソースをたくさん見ていればどういう書き方をするのが良いのかわかってくると思う
そして、
>>493 氏が言うことを頭にいれておけば平気
>>491 echo implode("", $file);
ってやんないと、結果出力しないうえに、改行が2個入るよ。
パラメータのnullではなくPHPのnullだから
えっ、どういうことですか? $form->addElement('password', 'cmpPasswd', 'パスワード:'); $form->addElement('password', 'cmpRepeat', 'パスワード(もう一度):'); $form->addRule(array('cmpPasswd', 'cmpRepeat'), 'パスワードが一致しません', 'compare', null, 'client'); //@ つまりコレは、cmpPasswdと'cmpRepeatを比較(compare)しているのだという事は分かるのですが、compareの$formatパラメータをnullの部分に入れるのではないのですか? 例えばmaxlength等はaddule()のstring $format部にパラメータを入れますよね? コレは自分ではパラメータを入れてると思ってたのですが違ったのでしょうか? もしコレがPHPのnullだとしたら更に分からなくなりました @の文のnullはどういうことを意味しているのですか?
マニュアル嫁
マニュアル読んで分からないので聞いているのですが・・・
$form->addRule('email', 'E-Mail is required', 'required', null, 'client');
のnullは
http://pear.php.net/manual/ja/package.html.html-quickform.intro-validation.php に載っている$formatパラメータ欄が何も書かれていないのでnullなのは分かりますし、
$form->addRule('email', 'サイズでかすぎ', 'maxfilesize', 1280,);
は$formatパラメータ欄にファイルの最大サイズを表す整数値をと書かれているので1280が入っているのは分かります
で、そのうえで上記のnullの意味が分からないのです
compareには$formatパラメータ欄にいくつかパラメータが入っているので
>>499 マニュアル君久しぶりね
出てこなくていいよ^^
答えわからないんでしょ^^
無理にレスしなくても誰も困らないよ^^
>>500 >string $format
> (オプション) 追加の検証データのために必要。
追加のオプションを指定しない事を明示的に「null」と書いてると思ってくれ。
オプションが無い(=null)とデフォルトの動作になるので、
マニュアルの「(デフォルト) 両方の要素が同じ値でなければなりません」の部分になる。
つまり2つの値が同じ値かどうかのチェック。
だからこの場合、「null」と書くのと「eq」と書くのが同じって事。
>>502 E-Mailの確認などでcompareを使う場合、曖昧なままだと使えないなぁと思いまして
例えばパラメータに載っている、”eq”や”neq”等が書かれていれば分かったのですが、nullが何を意味するのか分からないもので、コレを使っていいものなのかと・・・
色々調べたのですが、出てきませんで
>>501 俺もそう思った
俺はわからなくて何も書けなかったんだが、
>>499 みたいなのは答えわかってないんだと思う
そもそもマニュアルリンクしてるんだから、マニュアルは読んでるんだと普通は判断できるけれどもな
>>504 $formatの省略値は '' だな。
マニュアルを素直に読むと、デフォルト動作を指定するには、
''を渡すのが正解ということになる。
で、マニュアルにちゃんと説明されて無いんだから素直に''か'eq'か'=='
を使っとけ、という事になる。
例でnullを渡してるのは「ああ、その場合も動くんだな」くらいに思って
おくのが吉。
PHP発祥の痛いキャラ一覧 正規表現クン・・・・専用のdate関数使ったほうが楽なのにわざわざpreg_matchで自己満コードを書く人生を無駄に過ごしている人 マニュアルクン・・・回答者ぶりたいけど答えが分からないのでとりあえずマニュアル嫁としか言えない素人
ちゃんと答えれば
>>505 のように丁寧に感謝されるのに、半ば「マニュアル嫁」とか書くから叩かれるのにな
分からなければ何も書かなきゃいいのに
それか、「こういうことかもね」とか、「俺にはわからないから他の人に頼む」とか
>>506 何言ってんだ
Pearのマニュアル読む前にPHPのマニュアル読め
引数のデフォルト値なんて基本中の基本だろ
これがマニュアルの限界を超えたスーパーマニュアルを更に越えたスーパーマニュアル2をそして更に越えたスーパーマニュアル3だ!!!! | ヽ ゙、 、 \ \ヽ ヽl/ / // // / //イ //-‐'" \ヽ、 | ヽ 、、\ \ \ヽl l l/ // // ///‐ /‐彡-‐ \ヽ、 | \ \\、ヽ、\ヽ ヽ/// / /// ヽ \ \、 \ \\ ヽ'' ヽ、 | / /////ヽヽ \\\、、ヽ, ゙゙゙ ゙ ヽゝ、 / /ヽ|////ヽ || \、\\| / ノ/~' ヾ"' '|、ヽl |//-‐イ| || \、\| __ ヽ // / ゞ / ノ / -‐ | || \ ヽ \ ヽl // /,.. イ ┌ノ // / | | /フ ハ ヽ\ l /、ノ / -‐ / / / / | ___┌‐| | `、、ヽゝヽヾ、‐''ヽ-''"-‐'" /''" | /‐/ | | ミ | |ミ| \、 ̄‐ヽ/ '''" ,.-、 ,.' | | ,.‐" / /| |::::、、 | |│ ヽ |_,.- / ,-| / | |/ / /::::::/ /:: ヽミ::::::: ヽ l| ゝ、  ̄、"-‐'",,ノ /:::: l| |‐" /::::::/ /::: /\ ::::: \| | | ヽ、ヽ''"-‐ /:::: 、 |,.'' /::::/ /:::::
【PHP】くだらねえ回答はここで書きこみやがれ【初心者歓迎】3
PEAR使うとさ、 エラーレベル最強にしてると Noticeとかでまくるよね。 みんなどうやって対処してるの?
>>510 じゃぁPHPのマニュアルって書けよ
お前の不親切さがこうなってるんだろ、マニュアル厨
ぶっちゃけまずマニュアル次にググれば大抵活路は開けるんだが それが出来たら初心者じゃないよねー ってことで生暖かく回答してやれ
正規表現クンよりもそれに噛み付いてウダウダいい続けるアホのほうが個人的にはうざい 正規表現を使うまでもないならさらりと他のコード出せばいいだけなのに たいていケチつけるやつはコードも出さずに文句しか言わないからな マニュアルクンは答えになるようなURLを張ってマニュアル嫁ならいいけど ただマニュアル嫁はゴミ
URL張ったとしてもPHPマニュアルだという罠
結局このグダグダもいつものお前のせいじゃないのか?
他のコード出す奴がたまにいて 煽るだけの奴のほうが圧倒的に多い それがPHP(笑)スレクオリティー
PHPスレ荒らしにきてるのって 絶滅しかけのパーラーらしいよ
前スレより質問を引用 49 名前:nobodyさん[] 投稿日:2009/03/23(月) 10:24:31 ID:8ptTuCbS 2009-04-01 08:40:00 ↑の時間の30分後を取得する方法。 ↑に対して正規表現クンは↓の回答 $date= '2009-04-01 08:40:00'; preg_match("/(\d{4})\D(\d\d?)\D(\d\d?)\s+(\d\d?):(\d\d?):(\d\d?)/s", $date, $d); $d= localtime(60*30+mktime($d[4], $d[5], $d[6], $d[2], $d[3], $d[1])); printf("%d-%02d-%02d %02d:%02d:%02d", $d[5]+1900,$d[4]+1,$d[3],$d[2],$d[1],$d[0]); ↑の回答に対して罵倒してる人たちは↓の回答 echo date("Y-m-d H:i:s",(strtotime("2009-04-01 08:40:00") + 60*30)); や date_default_timezone_set("Asia/Tokyo"); $time = 60*30; $data = "2009-04-01 08:40:00"; $st = strtotime($data)+$time; echo date('Y-m-d H:i:s',$st);
>>523 strtotime('2009-04-01 08:40:00 + 30 min')
>>523 $date= '2009-04-01 08:40:00';
preg_match("/(\d{4})\D(\d\d?)\D(\d\d?)\s+(\d\d?):(\d\d?):(\d\d?)/s", $date, $d);
$d= localtime(60*30+mktime($d[4], $d[5], $d[6], $d[2], $d[3], $d[1]));
printf("%d-%02d-%02d %02d:%02d:%02d", $d[5]+1900,$d[4]+1,$d[3],$d[2],$d[1],$d[0]);
・・・コレはひどい・・・
PHP 6.0.0から非推奨の関数(ereg等)の一覧を見たいのですが マニュアル等どこかで見れる所ありませんか?
マニュアルにあるよ
528 :
nobodyさん :2009/10/08(木) 21:46:55 ID:B5gIBP6O
マニュアルクンこんばんは マニュアルのどこで見れるのか教えてくださいませんか? マニュアルにあるのが分かってるんですから勿論書けるはずですよね
マニュアル君は人間とは会話できません
531 :
526 :2009/10/08(木) 22:15:41 ID:???
528とは別人ですが流れが変なので別スレで聞くことにします
前スレ見てきた コードは出してもセンスのない無駄なコードという噛み付き方が悪い こういうこと書くからお前の方がセンスないみたいなガキの喧嘩が始まって面倒なことになる 正規表現使わなくても書けるよとだけツッコミを入れてコードをさらりと書けばそれで終了 そこらへんが分からないからPHPスレ住人は質が低い 正規表現クンだけを悪者にしたいようだが第三者から見ればどっちもどっち
時間の操作で正規表現が出てくる発想がすげぇ
正規表現クンをスレをまたいでまで思い出したように叩くのは当事者だからだろ? 某スレで二人池沼がIP出して言い合いしてたが、片方がたまに現れて叩いてるのと同じ現象。 池沼同士仲良くしろよ。周りに迷惑だけはかけんなよな。
>>532 じゃないけど、
>汚いコードを書く回答者は叩かれて当然
この発想が餓鬼なんだよwwwなんでわざわざ叩くわけ?
気に入らないなら放置するか「自分ならこうする」って言って他のコード書けばいいじゃないか。
でも、
>>523 の正規表現の解答は明らかに馬鹿にしてたり、悪意を持って解答してるだろ
>>523 みたいな正規表現の回答ってただのネタだろ?
61 名前:nobodyさん[sage] 投稿日:2009/03/23(月) 13:08:23 ID:??? 別に複雑に書いたつもりはないけど、処理の過程が明確で日時の場合月日だけとか 時分秒だけとか副次的に利用することがおれの場合は多いからこう書くクセがついてるだけ と本人は言っているわけだ。
引用文の解説よろ
言葉足らずって感じだな 最初に、副次的に利用する事を考慮してこういう書き方もある と前置きがされていれば叩かれないのに。
dateで書式も書けるんだから正規表現使うのは非効率だろwwwwwwwwwwwww
>処理の過程が明確で日時の場合月日だけとか時分秒だけとか副次的に えっと書式に'm月d日'って書けば月日だけとかできるのに
このスレは元々ID出してスレと分裂する前に一部の住民がID出さなくてもいいだろと反論したときにこのスレができた
叩いたり本人乙認定する阿呆が一番悪い 意見を言うだけに叩きの要素はいらないだろ ちゃんと自己主張するやつは他人と意見があわない可能性があることを自覚してるやつ そんなやつがわざわざ煽り合いに参加するんだろうか?
549 :
nobodyさん :2009/10/09(金) 16:37:55 ID:tKqousLR
変な空気の中しょぼい質問かもしれませんが example.txt example0 "on" example1 "on" example2 "off" example3 "on" example4 "on" という内容のファイルがあります。 それぞれを$example0=onというように左側のexample*を変数として右のon/offを 代入したいと思ってますが何か効率の良い方法はありますでしょうか? 現在は $hoge = file("./example.txt"); foreach($hoge as $hogehoge){ $hoge_val = explode(" ", $hogehoge); $hoge_val = str_replace("\"", "", $hoge_val); } で$hoge_val[0]に変数で$hoge_val[1]に代入の値という風に出来たのですが $hoge_val[0]に入っている値そのものを変数にする方法が思いつきません。 どのようにすれば変数に出来るのかヒントもらえないでしょうか?
>>549 >$example0=on
なんで値を""で囲まないの?
$txt = '$test = "てst";'; echo $txt; echo eval($txt;echo $text;);
皆凄いな
俺は
>>549 が何を言っているのかも分からない
555 :
553 :2009/10/09(金) 16:59:04 ID:???
>>549 こんなんでどうだろ?
$hoge = file("./example.txt");
foreach($hoge as $hogehoge){
$foo = explode(" ", $hogehoge);
$hoge_val[$foo[0]] = trim($foo[1],"\n\"");
}
extract($hoge_val);
var_dump($example0);
var_dump($example1);
var_dump($example2);
var_dump($example3);
var_dump($example4);
>>549 foreach内最後に
${$hoge_val[0]} = $hoge_val[1];
追加
557 :
553 :2009/10/09(金) 17:11:29 ID:???
>>556 あ、これでいいのか。
わかりにくい例を示してしまった、スレ汚しスマン。
558 :
549 :2009/10/09(金) 17:12:29 ID:tKqousLR
ちょ、みんな凄すぎ
こんな駆け出し初心者の質問に答えてくれてありがとうです。
>>550 使い回してた部分なのでそのまま"を消すものが入ってました。
"がなくても動いてたので気にしてなかったのですが、あまりよくないので消し説きます。
>>551-552 eval自体知りませんでした。
駆け出しなのでまだまだ知らない関数たくさんありますが勉強になりました。
>>553 >>555 extractも知りませんでした。
eval同様に非常に便利そうですので使っていきたいと思います。
>>556 こんな書き方あるんですね。
ぱっと見るとシェルっぽい書き方に見えなくもないですが凄く便利そうです。
みなさんこんなアホな質問に速攻で答えてくれてありがとうございました。
559 :
26 :2009/10/09(金) 17:25:06 ID:???
名乗るほどのモンじゃねえから礼はいいってことよ
正規表現系の関数っていろいろあるけど 全部preg_match使っておk?
>>561 それにHTTPリクエストをブログの数だけループして投げればいい
別にそれくらい自作すればいいと思うけど
PHPスクリプトを書くときに、 それをWindows上で動かすのと、Linux上で動かすのと、 何か違いはある?
ありますよ fopenみたいにOSによって仕様が同じでないものがありますよ
>>562 perlのFeed::Find;を使ってみようと思います。
ありがとうございました。
mysqlに連番のフィールドを入れています。 phpで指定した番号のレコードを取得し、各フィールドを配列に格納したいです。 どのように書けばいいのでしょうか?
>>566 mysql_fetch_assocで展開すれば連想配列になる
後はMySQLを自分で何とかしれ
this-> の意味がいまいち分かりません。 どうして宣言してもいないのに急に出てくるんですか? 初心者過ぎる質問で申し訳ありません。 どなたか教えてください
>>568 Javaの勉強をかじり程度でもすることをオススメする
PHPじゃオブジェクト指向というものを理解するのは難しい
>>568 ありがとうございます
>>570 バイト先で使っているので横道にそれる余裕がないのです
急がば回れかもしれませんが・・・。
this->
はクラス内で宣言された変数を同じクラス内で宣言された関数内で使用する際に頭につけるルール
のような認識で合ってますでしょうか?
>>571 No
(自身のインスタンスの)プロパティとメソッドにアクセスする時に使う変数
その程度の知識でPHPのアルバイトっていけるのか
なんとなく分かったような・・・不安ですが
ありがとうございました
>>576 プログラミングメインではないのでいけたのかと思います。
本来はプログラマー募集でもなかったですし
なるほど デザイナーがプログラムまでやらされるような残念な会社か・・・ 大変そうだがガンガレ
VISTAで、 PHPエディタ で、 F2押して出すマニュアルで、 マニュアル自体は起動するんだけど、 「無効なWEBの検索」 とかって出て、左側のフレームは print とかって出てるんだけど、 右側のフレームには、 そのprintの内容(関数の説明とか)が でてこなくて、対処、URLを再入力する、 とかって出てきてしまうのですが、 できてる人いますか?
>>579 公式のマニュアルだと文字化けするから
他から落とした方が良い
新しいのは文字化けなんてしねえよ
582 :
580 :2009/10/13(火) 10:22:54 ID:???
そこから落とせるchmファイルのどこが文字化け支店の?
キーワードが文字化け 日本語の検索が出来ない
あ、本当だ でも俺のは文字化けしないな と思ったらいつも俺はchmをリコンパイルしてたんだったわ
586 :
580 :2009/10/13(火) 10:45:27 ID:???
>>579 「php_manual_ja.chm」で検索するとリコンパイル方法が色々でてくる。
俺は誰かがリコンパイルしてくれた奴を過去に落としたが、今は無いみたいだ。
ということで、今リコンパイルしてみたが
KeyToolsでデコンパイルして、HTML Help Work Shopでリコンパイルすれば文字化け解消するよ
その際に、特にエディタで書換える必要も無かった。
リコンパイルとか まじでわからん
PHPではセッションファイルをデフォルトで/var/tmpとかに書きますよね。 ひとつのディレクトリにセッションファイルを書いていったとして、だいたいどのくらいの数まで実用的に動作しますか。 たとえばLinuxなら/var/tmp以下に1万個ぐらい作ってもへっちゃらとか、10万ぐらいで遅くなったとか、 そういう経験談があれば教えてください。 なおOSはLinuxで、ファイルシステムはext2かext3です。
それだけの情報じゃ何もアドバイスできない
ファイルシステムの話であれば、 ext3 ファイル数 で検索すればいいじゃない。
そんな悩むほどアクセスあるなんてうらやましすぎる
セッションはファイルじゃなく memcache とか使えばいいのに
phpで、自力でwarningを出す方法について教えてください。 てっきりwarn()とかいう関数が標準であるのかと思ったらありませんでした。
trigger_error?
>>593 もう何度目の質問だよこれw
過去スレで散々出てきたんだからちったあ探す努力しろやぼけ
>>594 まさにこれでした。ありがとうございます。
なんで自力でwarningを出したいの?
601 :
nobodyさん :2009/10/15(木) 11:27:15 ID:IJjjUaJi
今ローカル上のWinにVirtualBoxを起動させそこでCentOSを稼動させています。 そしてそのCentOS上でLighttpdとPostgreSQLとPHP5.3を動かしています。 NetBeans6.7.1ではSFTPを使いCentOS上に*.phpファイル保存時に自動的に書き込むようにしています。CentOS上のphp.iniではXdebugの設定をしたのでNetbeansを用いてPHPのコードを一行一行実行して行く事ができるようになりました。 ここまでは上手く行きました。NetBeansのメニューで「プロジェクトのデバッグ」を選択するとブラウザーが立ち上がり、ブレークポイントを付けた行で停止して1行ずつコードを実行して行けます。 しかし、NetBeansのメニューで「プロジェクトの実行」を選択するとブラウザーが立ち上がる所までは同じですが、その後それ以上何も進展しない状況になります。(ブラウザーは「読み込み中」と表示されたままです。) これって正常でしょうか?
>>601 スレ違い
ID出して書き込みやがれスレ池
クラスメソッド内から、現在のクラス名を参照する方法はありますか。 class Foo { function f1() { // ここで Foo という名前を取得したい } } Foo::f1()
その質問過去スレに2回ほど回答がでてるけど見た?
>>604 過去スレを「クラス名」で検索しましたが見つかりませんでした。
>>604 バンバンバンバンバンバンバンバンバン゙ン
バンバン /⌒ヽ バンバンバンバンバン
バンバン∩#^ω^)動けお
/_ミつ / ̄ ̄ ̄/__
\/___/
ドゴォォォォン!!
; ' ;
\,,(' ⌒`;;)
(;; (´・:;⌒)/
/⌒ヽ(;. (´⌒` ,;) ) ’
Σ(;^ω^)((´:,(’ ,; ;'),`
⊂ ⊂ / ̄ ̄ ̄/__
\/___/
過去スレ嫁厨 ID出すほうで質問したらちゃんと俺が答えてやったが ここは管轄外なのでスルーさせていただくよ
>>603 自己レスです。
継承しないならget_class()または__CLASS__でうまくいったのですが、継承があるとだめでした。
class Foo {
function f1() {
echo get_class(), "¥n";
echo __CLASS__, "¥n";
}
}
class Bar extends Foo {
}
Bar::f1(); // Foo Foo
継承したときのクラス名(この例ならBar)をとってこれないでしょうか。
同一人物認定厨まで現れたか さすが低レベルなスレだな
>>611 5.3からの新機能で可能ということですね(つまりそれ以前のバージョンでは不可能)。
ありがとうございました。
その辺のサイトに書かれてることを動画にしても効率が悪いだけ ていうか最初と最後に文字いれしてるんだから わざわざタイプで時間使わないで文字いれしろよ そうすりゃこんな意味のない動画を3分も見せ続けられなくてすむし CM1本分ぐらいに収まるだろ
自宅待機者ふぜいが えらそうに、、、
意見があればコメントしろっていったのはお前だろ あんな無駄なものを3分も見せられるほうの気持ちも考えろ
配列をクリアする関数はありますか。 $array = array(); はしたくないので foreach (array_keys($array) as $key) { unset($array[$key]); } としているんですが、 array_clear($array); みたいなのが標準であれば教えてください。 ぐぐったら $array = array() ばかりが出てくるんですけど、array_clear()みたいなのはないんでしょうか。
unset
>>618 array_splice($array, 0);
array() を代入したくない理由は?
>foreach (array_keys($array) as $key) { unset($array[$key]); } 何これ?連想配列? まぁただの配列にしても連想配列にしてもunsetやれば全部NULLになるでしょ $a = array(1, 2, 3, 4); unset($a); var_dump($a); //NULL $b['foo'] = 1; $b['bar'] = 2; unset($b); var_dump($b); //NULL
622 :
621 :2009/10/16(金) 10:55:18 ID:???
>>620 嗚呼・・・クリアってそういうことか
変数割り当てをクリアじゃなく配列の値をクリアするってことね
>>621 は無視してちょうだい
>>620 ありがとうございます。array_splice()で出来ました。
ただ、これって連想配列でも動作が保証されているのでしょうか。
連想配列ではない通常の配列でなら、array_splice()でいいと思いますが、連想配列でも動作が保証されているのか、マニュアルを読んでも分からなかったので、もしご存知なら教えてください。
初心者なアホな質問ですがアドバイスもらえると助かります。 kyomo-iitenki-1.2.3.exe というファイルがあって1.2.3がバージョンになります。 バージョンだけ取り出したいんですがまず $test_val = "kyomo-iitenki-1.2.3.exe"; $test_num = strrpos($test_val, "-"); $hogera = str_split($test_val, $test_num+1); $hogera = ereg_replace(".mid", "", $hogera[1]); こんな感じで1個ずつやってみたのですが、何かもっと効率よさそうな方法がありそうな気がします。 PHP始めたばかりなので最初から効率を求めるわけではないのですが、後学のためにこれをもっと 効率よくする書き方があれば教えてください。
625 :
624 :2009/10/16(金) 11:46:37 ID:???
すんません。 テストでmidiファイルとかやってたので最後の行が.midになってました。 正確には.exeの間違いです。
>>624 正規表現をうまく使えればもっとシンプルにできるよ
俺はあまり正規表現は得意じゃないんでもっと最適なものがあるとは思うけど
$test_val = "kyomo-iitenki-1.2.3.exe";
echo preg_replace("/[^0-9]+[^0-9]/", "\\1", $test_val);
628 :
624 :2009/10/16(金) 11:55:18 ID:???
>>626-627 正規表現ですか。
まだ本当に記号の羅列にしか見えないですね。
でも正規表現使えればあの汚いものがこんなにシンプルな1行になるわけですね。
ちょっと正規表現勉強してみます。
ありがとうございます。
$str = ファイル名 preg_match("![0-9][\._-0-9]*!",$str,$match); print_r($match);
>>629 穴だらけな上にエラーまで出すとは、なかなか才能があるな
"/\d+(?:[\._\-]\d+)*/"
>>632 バージョン以外の数字に一致
拡張子のドットまで含めてしまう
文字列で、"hoge\n" というのは 最後に改行が付くけど \n のような特殊な文字(エスケーッぷ?)の一覧を教えて。 あと、\nが CR+LFになるのかLFになるのかを プログラム中から知る手段も教えてほしい。
635 :
634 :2009/10/17(土) 13:43:17 ID:???
自己解決しました。
興味本位で、確認くん(
ttp://www.ugtop.com/spill.shtml )に使われている変数が気になり、
調べてみたのですが、「クライアント電話番号」と書かれている部分だけ分かりません。
どのように取得すれば良いかご存知の方がいらっしゃれば、ご教授いただけないでしょうか。
以下は、他の欄に使われていると思われる変数です。
--------------------------------------------------
情報を取得した時間:date("Y年\nm月\nd日\n A \nH時 i分\n s秒\n")
現在接続しているホスト名:$_SERVER['SERVER_NAME']
現在接続している場所(現IP):$_SERVER['REMOTE_ADDR']
現在接続している場所(元IP):$_SERVER['FORWARDED_FOR']
クライアント電話番号:不明
プロバイダー名:gethostbyaddr($_SERVER['REMOTE_ADDR'])
サポート言語:$_SERVER['HTTP_ACCEPT_LANGUAGE']
ポート番号:$_SERVER['REMOTE_PORT']
クライアントの場所:$_SERVER['HTTP_FORWARDED']
クライアントID:$_SERVER['REMOTE_USER']
ユーザ名:$_SERVER['REMOTE_IDENT']
クッキー:$_SERVER['HTTP_COOKIE']
使用ブラウザ:$_SERVER['HTTP_USER_AGENT']
どこのURLから来たか:$_SERVER['HTTP_REFERER']
proxyのバージョン等:$_SERVER['HTTP_VIA']
proxyの効果:$_SERVER['HTTP_PROXY_CONNECTION']
FORMの情報:$_SERVER['REQUEST_METHOD']
FORMのタイプ:$_FILES[...]['type'] ← 自信無し
FORMのバイト数:$_FILES[...]['size'] ← 自信無し
HTTP_X_LOCKING:$_SERVER['HTTP_X_LOCKING']
HTTP_FROM:$_SERVER['HTTP_FROM']
データ取得の手段:$_SERVER['REQUEST_METHOD']
エンコードの仕様:$_SERVER['HTTP_ACCEPT_ENCODING']
MIMEの仕様:$_SERVER['HTTP_ACCEPT']
--------------------------------------------------
つwhole
>>637 「php whole」などで検索してみたのですが、どういうことか分かりません…。
もう少し詳しく教えていただけないでしょうか。
>>638 貴様のIPからプロバイダ情報を調べてみろkz
これがヒントだksgおとといきやがれカス
わからないなら無理して答えるなよ(プッ
641 :
636 :2009/10/17(土) 23:47:19 ID:???
ああ、そういうことだったか 解決したありがとう
642 :
636 :2009/10/17(土) 23:50:33 ID:???
>>641 は偽者です。
まだ分かっていないので、分かる方がいたらよろしくお願いいたします。
ANSI Whois Gateway(
ttp://whois.ansi.co.jp/ )で自分のプロバイダ情報を調べてみたところ、
「phone」と言う項目がありました。
これは、
PCの場合、登録に関する連絡の担当者(もしくは技術的な連絡の担当者)の電話番号
携帯電話の場合、クライアントの電話番号(使用者の電話番号)
になると考えて良いのでしょうか。
ドメイン登録 電話でggr
エスパーなんです
639から640 641から642 レス早いだろ
650 :
647 :2009/10/18(日) 10:38:15 ID:???
「一部の携帯電話のみ」 だから、番号を通知する設定にするとリクエストに番号が載るキャリアがあるんじゃね? もしくはダイアルアップの場合のみ、とか。
リクエストに番号が載ったら怖いだろ
>>636 サブスクライバIDとか、UIDとか、端末識別暗号とかEZ番号とか、
呼び方は色々だけど、つまりはそういうことです。
654 :
636 :2009/10/18(日) 16:52:42 ID:???
>>645-653 つまり、「クライアント電話番号」というのは、携帯の電話番号というわけではなく、
「携帯端末ごとに決められているユニークな番号」という意味だったんですね。
ようやく理解することができました。
最後に、
>>653 さんの単語から検索した結果、色々な情報が出てきたので、まとめておきたいと思います。
--------------------------------------------------
・ドコモの場合
個体識別情報:<a>タグや<form>タグに「utn」という文字を入れると、$_SERVER[’HTTP_USER_AGENT’]の後ろに付加される
iモードID:GETやPOSTで引数に「guid=ON」を入れると、$_SERVER['HTTP_X_DCMGUID']から取得できる
・auの場合
個体識別情報(=EZ番号=サブスクライバID):auは固体識別子を毎回送信しているので、$_SERVER['HTTP_X_UP_SUBNO']から取得できる
・ソフトバンクの場合
個体識別情報:ソフトバンクの固体識別番号は、常にユーザーエージェントに含まれているので、$_SERVER[’HTTP_USER_AGENT’]から取得できる
個体識別情報:httpのページからhttpsへ遷移するようなケースであれば、$_SERVER['HTTP_X_JPHONE_UID']からも取得可能
・イーモバイルの場合
個体識別情報:HTTPリクエストヘッダの「x-em-uid」($_SERVER[’HTTP_X_EM_UID’]?)から取得できる
・ウィルコムの場合
現時点では取得不可能?
--------------------------------------------------
長い間、レスを使ってしまい申し訳ありません。とても勉強になりました。
答えてくださった方、本当にありがとうございます。
636=640解決できてよかったな
656 :
nobodyさん :2009/10/18(日) 17:49:47 ID:mL8oRkmg
PEAR::DBでプレースホルダ使用したSQL文をprepareしてるんですけど、 プレースホルダに設定する値が数値"0"のとき、 空文字に自動変換されてしまって困ってます。 解決策わかる型いらっしゃいませんか? 環境は DB:MySQL5.0.45 PHP:php5.2.8 PEAR:1.9.0 です。
657 :
nobodyさん :2009/10/18(日) 18:11:30 ID:mL8oRkmg
656です。 自己解決しました。 自動変換によるものではなく、 変換メソッドが悪さをしていたようです。
お世話になります。cgi設置に関する質問です。 ネットショップ立ち上げのために先日oscommerceをインストールしてみたのですが しょっぱなからちゃんと動作しないなどの不具合が。 oscommerceはデータベースサーバなどと連携している分、不具合やエラーが出やすいかなと 思い、perl言語のみのルミーズカートcgiに興味を持ちました。 以前、perl言語のクイズ作成cgiを設置して何のトラブルもなくずっと使えていたのでcgi単独だと 安定して使えるのかなというイメージがあります。 ずばりルミーズカートならoscommerceよりも安定して管理できるでしょうか? 多少機能が劣っていてもシンプルな構成でトラブルが少なく扱いやすい物が一番と考えております。 個々の環境にもよるとは思いますが一般論でお答えいただければ幸いです。
まずはスレタイをみようか
自己解決しました phpなんかよりperl使うべきですね。
Perlみたいな新時代についていけてない時代遅れのカス言語なんか誰もつかってねーよ
今時perlを覚えるよりphpを覚えたほうがコストが安い そして己が人に教える時のことも考えてもコストが安い
でも携帯ライブラリはperlの方がたくさんあるよね 軽量FWもたくさんでてるし時代遅れって事は無いと思う
一般人が使うWebアプリではPHPにトップシェアの座は譲ったけど まだまだPerlはUnixなんかのシステムにはよくつかわれてるんだぜ
板的にweb限定だろ
$_FILESとかに何もしてせずに送った時は何も入ってないと思うのですがPHPの場合はNULLという文字列が入ってますか? 条件分岐を $hogehoge == "" としててもうまく機能せず $hogehoge == "NULL" とするとうまくいくのでどうなのかな?と。 CとかVBは数年使ってたのでプログラム自体は素人ではないのですがPHPは使い始めて1週間です。
まずマニュアルの型の比較のところを読もう
その場合は==じゃなく===じゃないといかんのじゃね? とPHPを初めて1ヶ月の俺が適当に答えてみるテスト
exec("/usr/bin/php -f /var/www/hoge/hoge.php"); と呼び出しているphpに、呼び出し時に値を一緒に渡したいのですがどうすればいいでしょうか?
>>667 本当にただのNullの場合、緩い比較である==演算子を使っても文字列としては通らない。
よって$hogehoge == "NULL";で通るということはNULLという文字列が入っていると考えられる。
ためしに$hogehoge == "null;"と小文字にして確かめてみるとよい。
672 :
nobodyさん :2009/10/19(月) 12:50:51 ID:6KYWXDe7
PHPでevalは危ないから使わないほうがいいって聞いたのですが 何が危ないのでしょうか?
なんで言ったやつに聞かないのよ
>>671 var_dump(true == "NULL");
もう一個 var_dump(0 == "NULL");
>>673 言ったやつが正しいのか間違ってるのか分からないからここで聞いてんだろks
>>674-675 何がいいたいかわからん
ていうかvar_dumpをそんな使い方してる人ははじめてみたな
$a = null;
var_dump($a);
if ($a == "null") {
echo 1; //nullはStringではないので表示されない
}
>>677 var_dump(null == "null");
てか、型の違うものを比較するなよ empty()でチェックしたり、intval()とかで変換したりしろ
>>676 だから・・
言ったやつがどういう意図で言ったか根拠を本人に聞いてないとここで答えようがないだろつってんだよ
682 :
680 :2009/10/19(月) 14:26:31 ID:???
$hoge = "abc"; この$hogeの中身を1文字ずつずらしてbcdとしたいのですが1文字ずらすのはどうすればいいんでしょうか? 文字コード拾ってきて1個ずらすとかでしょうか?
例 $hoge = "abc"; foreach (str_split($hoge) as $eachVar ) { print ( chr ( ord( $eachVar ) + 1 ) ); }
>>686 $hoge = "abc";
foreach (str_split($hoge) as $eachVar ) {
print (++$eachVar);
}
>>687 これは知らなかったありがとう。
ただ、zの次がaaですぜ
こっちのほうが半短 $hoge = "abc"; $hoge = ++$hoge; echo $hoge // bcd;
$hoge = "abc"; $hoge = --$hoge; $hoge = $hoge + 1; echo $hoge // bcd;
試しもしないで書いてるのワロタw
やりたい事は 自分自身を消した後に指定アドレスにlocationするという事をしたいです。 ore.php include_once("hogehoge.php"); いろんな処理〜 exec("rm -rf ore.php"); header("Location: yahoo.co.jp"); このような事なのですがlocationする前に消しているせいか、locationしてくれません。(当たり前ですが) かと言ってlocationを先にするとファイルが消されません。 ファイルを消してなおかつlocationするにはどうすればいいのでしょうか? 馬鹿な私に知恵をお貸し下さい。
headerは文字通りヘッダ出してるだけだから後に書いても問題ないと思うけど。 ファイルが使用中だから消せないとか?分からんけど。 別な方法としてはGETやリファラでファイル名を渡して遷移先で消すとか。あるいは間に1ページ挟むとか。
>>695 なんでそういうことをしたいのか分からないので最適な方法はどれになるかわからんけど
消したいファイルのリストを生成しておき(exec使ってるらへんに)
次回アクセス時にリストにあった場合それらを消すというのはいかがだろう?
証拠隠滅したいんじゃないのは ID出さないスレで質問してるから後ろめたい悪意を背後から感じられる
>>695 自殺プログラムか
普通にunlinkではだめなんだっけ?
あと、Locationの書き方間違えてる
Location後に__FILE__をunlinkだろ
俺はフォルダ消すときはexecよく使う unlinkだと中身あると面倒だしな
/* fnc_capture.php */ <?php require_once("../MySmarty.class.php"); $o_smarty=new MySmarty(); $o_smarty->assign("data",array(1,2,3,4,5,6,7,8,9,10)); $o_smarty->display("fnc_capture.tpl"); ?> /* fnc_capture.tpl */ {capture name="exp"} {include file="fnc_section2.tpl"} {/capture} {if $smarty.capture.exp|strip:""!=""} // ココの "" != "" の意味が分かりません 結果)<br /> {$smarty.capture.exp} {/if} /* fnc_section2.tpl */ {section name="loopName" loop=$data start="2" step="2" max="3"} {$smarty.section.loopName.rownum}. {$data[loopName]} <br /> {/section} すみません、上の3つのファイルで、fnc_capture.tplの『"" != ""』の意味が分かりません strip修飾子で繰り返された空白・改行・タブを、1つの空白または与えられた文字列によって置き換えたものが空白ではない??? って感じで理解が出来ません 簡単な事だとは思うのですが、どなたか教えて下さい
>>703 {if ($smarty.capture.exp|strip:"")!=("")}
ということではないかと
705 :
nobodyさん :2009/10/22(木) 10:03:21 ID:h4MlR9Sn
軽量のフレームワークの名前とHello worldの出し方を教えろやks しらねえなら今から調べて来い 12時に飯食うからそれまでにとっととggってこいや 時間がねえからさっさとしろよksども
こっちも書いてるのか。 触るなよ。
PHPでExcel出力をする必要があり、PEARのライブラリspreadsheet_excel_writerを 使おうと思っているのですが、PEARでインスコ出来ません。 pear install --alldeps Spreadsheet_excel_writer というコマンドをターミナルから実行するのですが、しばらくすると No releases available for package "pear.php.net/Spreadsheet_excel_writer" と出て終わってしまいます。 何か違う方法でインストールするのでしょうか?
betaだからじゃね?
710 :
703 :2009/10/22(木) 15:55:36 ID:???
>>704 つまり、 ($smarty.capture.exp|strip:"") != ("")と言う事は、取得した配列から空白文字を取り除いたものが、
空文字でなければ{$smarty.capture.exp}を出力するという事でしょうか?
>>707 風邪でブッ倒れていました
体調悪いです・・・
711 :
708 :2009/10/22(木) 16:14:33 ID:???
pearで何かをインストールしようとすると必ず上記のエラーが出ます。 ping pear.php.net を行うと、pingが帰って来ないのでpear.php.netにアクセス出来ない感じです。 どうしたらいいんでしょうか・・・?
会社の鯖管がフィルタリングしてんじゃね?
713 :
708 :2009/10/22(木) 16:57:33 ID:???
うーん・・・ pear.php.netはping帰ってこないのに、 pecl.php.netはpingが帰ってくる・・・。 当然 pear installは出来ないけど、pecl installはOK。 困ったぞ・・・
ExcelWriterは普通にどこかモジュールのパス通ってるところに置いて php.ini にその設定追加してあげれば動くはず つーか、昔のExcelWriter/Reader 使っているサイト改修したときはそうした。
PHPエディタで、 フォントの大きさを14より 大きくするにはどうしたらいいの?
716 :
708 :2009/10/23(金) 08:58:03 ID:???
結局どうしてもpear.php.netに接続出来ないので、ローカルにgzを落として ローカルインストールして解決しました。 de.pear.php.netには接続出来るので、チャンネルのURLを変更しようとしても pear.php.netに一旦アクセスしないといけないので変更出来ず・・・。 ずっとこのままだとちと面倒だなぁ・・・。
PHPエディタは使うなっ!!!!!!!!!!!!!!!!!!! しっかりしたエディタをカスタマイズしろよ!!!!!!!!!!!!
718 :
nobodyさん :2009/10/23(金) 14:33:10 ID:TDVXUmCb
【OS名】2000 apache 2.2 【PHPのバージョン】php5.21 【質問内容】 PHPで画像を表示させ、「何秒か経過したら他の画像を表示させる」 プログラムが作れません。グーグル先生は俺の日本語が下手すぎて回答内容 も僕を導いてはくれませんでした。そもそもhtmlに結果のみを表示するPHPで 質問内容が出来るものなのか?と正直自分は思っています。 出来るのでしたらどなたかやり方を教えてください。 よろしくお願いいたします。
>>718 画面遷移ではなくフォトフレームみたいな奴?
>>716 78.129.214.25にpingは通る?
通るならとりあえずhostsに書いとけば
722 :
nobodyさん :2009/10/23(金) 15:19:18 ID:EL5fculY
PHPでHTMLを出力しているのですが、ページの上部に 空白ができてしまいます。 PHPファイルの文字コードをANSIに変えてやると問題ないのですが... 現在は、UTF-8を使用していますが、やはりANSIに切り替えるしかないでしょうか? アドバイスよろしくお願いします。
BOMでも入ってるのでは?
724 :
722 :2009/10/23(金) 15:20:44 ID:EL5fculY
すみません、事故解決しました。 UTF-8のBOMをとってやればOKでした
>>719 そうなります。広告のポップやフォトフレームみたいに
「自動で画像が変える」為のプログラムがわかりません。
一度きりの表示はわかるんですが。
>>720 この問題はJavaScriptスレで聞けば良いということなのでしょうか?
>>725 JSでやったほうが楽だけど
PHPでやるならランダムで画像を出力するページをインラインフレームで表示してrefleshで定期的に更新させるとか
>>725 >この問題はJavaScriptスレで聞けば良いということなのでしょうか?
うん。
アクセスカウンタみたいなものを作っています。 使い方としては、カウンタ本体のスクリプトファイルがあり、それを他ファイルからincludeして使うような形です。 何らかのエラーが出た場合、適当なエラーメッセージを吐いて終了(include元のページに制御を戻す)したいのですが、exitで終了してしまうと、その後、ページの内容が出力されません。 どうしたら良いのでしょうか。 ファイルの末尾にgotoする、というもの考えたのですが、もっとスマートが方法があれば教えてください。
729 :
728 :2009/10/23(金) 20:32:27 ID:???
なんとreturn文でこの機能が実現できるんですね、知りませんでしたorz
6分の間に何があったんだ
謎である。
goto厨きめえ
733 :
nobodyさん :2009/10/23(金) 22:01:50 ID:EonHv/nO
悪いことは言わないからgoto使うのはやめとけ
734 :
728 :2009/10/23(金) 22:19:00 ID:???
引き続いての質問なのですが、 他ファイルからカウンタ本体のスクリプトをincludeして使うようなカウンタだと説明したのですが、 この場合、変数や関数の名前が被ってしまう場合の対策というのは何か無いのでしょうか。
名前空間というものがある
736 :
nobodyさん :2009/10/23(金) 23:00:02 ID:4v117FRK
質問があります。 DBに入っている画像データのバイナリから、 ファイルを介さず直接サムネールを生成する方法はないでしょうか。 画像そのものを出力したり、ファイルやURLからサムネールを 生成する方法はあちらこちらに書いてあるのですが、 バイナリを直接GDに食わせる方法の記述を見つけられません。 Perlでは簡単にできるのに、PHPではできないということなのでしょうか。
>>736 Content-Typeヘッダを、JpegならJpegの、GIFならGIFのものを与えて投げてあげればおk
PHPのクラスって、宣言されてないインスタンス変数にも代入できるようだけど、 これだとタイプミスしたときに見つけにくいよね。 class Foo { } $obj = new Foo(); $obj->x = 111; $obj->y = 222; var_export($obj); #=> Foo::__set_state(array('x' => 111, 'y' => 222,)) 宣言してないインスタンス変数に代入しようとしたらエラーになるよう、設定できませんか?
__setメソッドというのがあるよ
PHPの関数っていくつあるの? どこかのサイトで数えてた気がするけど、見つからないので教えてください。
ワロタ
>>745 それだとビルド時のオプションによっては出てこない関数がある。
だったと思う。
ま、知る必要のないことだな
PHP4200KO パスワードに使おう。
動的にソースを入れ替えるわけでもあるまいし・・・ それなら継承とかを学んだ方がいいぞ
元ネタから10レスも離れてないのに、継承まで飛びますかw
>>745 をそんなにいじめるなよw
気取りたいことくらい誰だってあるだろ
>>745 マジksだなwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
それだとオプションなしでのlinuxとエクステンションdllを読み込んでないでのwinで比べてもハッキリと違うだろがwwwwwwwwwwwww
その方法だとlinuxでないと使えない関数はwinでは取れねえだろwwwwwwwwwwwwwww
顔真っ赤でIDも真っ赤になって幸せだなwうぇwっうぇうぇwwwwwwwwww
745涙目www
よっぽど悔しかったんだな 草の数が物語ってる
冷静を装って756で現れる>>745先生w
ユーザーが すべてのクッキーを受け付けない って設定にしてたら、 セッションクッキーも はじかれるの?
当然受け付けてくれない。 ブラウザからは、クッキーのそれぞれの意味は判別不可能。
したら、 セッションクッキーを発行したとして、 それが、必ず受け入れられている、 って勝手に自分で前提を組んでしまって、 その前提でアプリを設計するのは まずい、ってことだよね。
セッション張れないならログインできない、とか いう症状になるんだろうね。 心配ならチェックすればいいと思う。 なにかエラー出たら「クッキーonにしてね」って 表示するだけのサイトも多いけど。
その処理をめんどがって書かないでいると、 「IDとパスワードをいれているのになぜかログインできない」 ってクレームになるわけね。
そのためのsession.use_trans_sidじゃないの?
>>760 情弱乙
それマスゴミが言ってたそのまんまじゃん
お前の頭の程度だな、その絵は。
PHPを使ってブログでも作ってみようと思ってるけど、 アクセスやコメント書き込みが集中したときのための対策は何か必要? 大勢が閲覧したときに処理が重くならないようにするためには、サーバを2台にしたりするのかな。 それに、2人の人がまったく同時に書き込もうとしたらどうなるんだろ。 そもそも、どのくらい集中したら重くなるの? 1分間に100人とか? 詳しい人、どうぞ教えてください。
PHPで、 CLI版(コマンドライン版)で、 MS-DOSプロンプト上で動かすとき、 キーボードからの 入力を受け付けて、 文字列とか数値とかの 入力をキーボードから受け付けて、 変数で受け取るにはどうしたらいいの?
いつものようにWEBでやるんだったら、 フォームで <input type="text" name="aaa"> とかってやって、 $bbb = $_POST['aaa']; とかってやればいいんだけど、 これをMS-DOS上で CLI版でやるのはどうしたらいいの?
引数じゃない キーボードから入力して それを取得したい
>>770 <?php echo fgets(STDIN) ?>
<?php $line = trim(fgets(STDIN)); // STDIN から 1 行読み込む print $line; ?> なんかこれを実行すると すげー改行されるんだけど、なんで?
>>774 なんかエラーになる
readlineは定義されてないって
#include <stdio.h> int main(void) { int counter=0; while(1){ int c = getchar(); if(c=='\n'){ counter++; } system("clear"); printf("counter:%d\n", counter); } return 0; } ※windowsならsystem("cls"); ようはこれをやりたかった だけなんだけど。
うちの環境(windows xp / php5.2.10)では
DOS窓で
>>775 を実行しても無駄な改行などはでてこないな
<?PHP $c=0; while(1){ $c = fgets(STDIN); if($c=='\n'){ $c++; } system("cls"); print "counter:" . $c ."\n"; } ?> だめだぁ〜 これだとなぜかうごかない〜 たすけてえろいひと〜
if文のチェックをはずしても カウンターがカウントアップ されないんです
<?PHP $c=0; while(1){ $a = fgets(STDIN); $c++; system("cls"); print "counter:" . $c ."\n"; } ?> これでできた だが一歩前進、といったところだ なぜなら、カウントアップは するようになったが、 clsが効いていない
PHPでDOSでCLSって もしかして、できないの? command.comのオプションとして 実行する、ってのが ググったらでてきたが、 ソースをこぴぺして試してみたが、 消えなかったよ
それと、ググッたら、別のページでは、 PHPではCLSはできない (CとC++ではできる) ので、代わりにニューラインを30行 出力すればよい って書いてあるが、そうなの?
<?PHP $c=0; while(1){ $a = fgets(STDIN); $c++; for($b=0;$b<40;$b++){ print "\n"; } print "counter:" . $c ."\n"; } ?> たしかに、これで、希望の動作に 近い物はできた。 だが、しかし、何かが違う。 やはりCLSのほうがいい。 CLSはどうやったら使えるんだ?
最近沸いてこないと思ったらまたお前か
<?PHP $c=0; while(1){ $a = fgets(STDIN); $c++; for($b=0;$b<40;$b++){ print "\n"; } print "counter:" . $c ; for($b=0;$b<24;$b++){ print "\n"; } } ?> これでかなり近いものができた しかし画面のちらつきがある CLSとまったく同等のものは できないのか? ていうか、なんでできないの?
NGワードは何にすればいいですか?
DOSの意味を知らないせいだな。 コマンドプロンプトはcommand.comじゃないのにな。
男は黙ってESC[2J
ここって板全体が過疎なの?
>>792 そう。
PHPプログラマーって
犯罪者が多いから、
隔離板として作られた。
794 :
708 :2009/11/05(木) 00:26:10 ID:???
88のCLS 3の遅さに泣いた
規制中は平和だったが、解除されたとたんこれか。
web関係のことをひととおり身につけようとすると HTMLとCSSとJavaScriptとPHPとCGIとFlashとJavaとSQLと…… どんだけ覚えさすねん!! おまいらどうやって覚えた?
そりゃ正攻法で
もはやCGIはPerlと同義語か?
CGIはPerlに限らないから違うでしょ。
CGIはインターフェイスだから「CGIはPerlに限らない」はおかしい。 PerlはCGIではない。 とか言うと「ホームページ」論争みたいな事になる。 きょうび、CGIと言われたらまずPerlの事だな。 そう思わないと話が通じない場合が多いし。
>>800 逆じゃね?
Perlと言われたらまずCGIの事じゃない?
Web関係で重要な技術は HTML>CSS>PHP>SQL>Javascript>Java>Flash かな。 今の新規プロジェクトでCGI使う物はかなり少ないし、 Flashはプログラマの仕事ってよりデザイナーの仕事って感じだし、 Javaはぜひ覚えておいた方がいい言語だけど、Webプログラムに特化したら意外と使わせてもらえないし、 Javascriptはググれば大抵どこかに欲しい物が落ちてるし、 SQLはWeb系で使えなかったら素人扱いにしかならないし、 PHPは出来るべきだし、 HTMLとCSSが出来ない人間にWebプログラマなんて出来ない。 後、Linuxも必要だよ
>>796 仕事をするなら全部覚える必要はないよ
広く浅い知識より得意分野を作ったほうが仕事は多くなります
また、規制来てるな・・・ WEBプログラマならhttpが優先度高いだろう。 あとflex(adobeの方、字句解析じゃなくて)が要求される仕事が最近増えてきたよ。 >CGI使う物はかなり少ない 通常はmod_xxxってことか?w
ちょっと規模が大きくなってアプリケーションサーバって事になるとJavaって場合が多い。
その頃YahooではPHPでsymfonyを使ってるようでした
Yahoo Bookmarksだな。
>>800 CGIに用いる言語はPerlに限らないって意味でしょ
ホームページ論争って何だ?
>>810 「ホームページ」は自分がブラウザ開いた時に表示されるページだ。なんでもホームページ言うな!
今更そんな古い話持ち出すな、ホムペで通じるだろ老害!
みたいな話。
どのへんが無知?
名前からも分かるとおり、CGIはあくまでもインターフェイスであり、特定のプラットフォームに依存せずに、 ウェブサーバなどから外部プログラムを呼び出す仕組みのことを指す。 そのため、この仕組みを用いて起動されるプログラム本体のことをCGIと呼称するのは誤りである。また、 1990年代後半のCGIを使ったプログラムはPerlが大部分であったため、「CGIとはPerlまたはそれに類する 特定の言語のことである」という認識も広く存在するが、こちらも誤りである。
「CGIはPerlに限らない」や 「CGIに用いる言語はPerlに限らない」じゃ意味わからん。 「CGIを使ったプログラムはPerlに限らない」と書け。 というくだらん揚げ足取り?
間違った認識を正すのは揚げ足取りとは言わない。
筋肉痛が痛いっつったら ハァっていちいち言うタイプだろ
多少省略しても成り立つのが日本語のいいところょ。
ホームページ論争みたいな事になってるしw
>>798-800 CGIはインターフェイスだから「CGIはPerlに限らない」はおかしい。
ではなく
CGIはインターフェイスだから「もはやCGIはPerlと同義語か?」はおかしい。
でしょ。
「きょうび、CGIと言われたらまずPerlの事だな。」もおかしいにょ。
ホームページって各ウェブサイトのトップページのことだよ
もうどこまでが本気でどこからがネタなのかwww
>>822 君の使ってるブラウザにもあるだろ、ホームページの設定。
>>825 ごめん、英語での意味の話。
僕ちんイギリスに住んでたのよ。
「CGIを設置する」って言い方が定着してるから、しょうがないんだろうな。
CGIはPerlだけじゃないよ、って解説してるページも多いし。
CGIのちゃんとした意味なんか知らなくても、応募フォームとか、会員管理するサイトとか作るのに支障はない。
けど、せっかく"prog"って付く板にいるんだから、RFC3875に目を通してみてはどうだろう?
The Common Gateway Interface (CGI) Version 1.1(日本語訳)
http://www.studyinghttp.net/rfc_ja/rfc3875
PHPを書くのにどういうテキストエディタがいいでしょうか?
komodo
こもどwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
今までSQLite3使っていたのですが、MySQLに変えようと思っております で、php.iniにてDSN宣言をしようと思うのですが、今までは pdo.dsn.test="sqlite:c:\〜\Apache2_2\htdocs\samples\hoge.db"としていました MySQLの場合は、 pdo.dsn.test="mysql:host=localhost;dbname=friend;charset=sjis"の他にどのように書けばいいのでしょうか? SQLiteでいう、c:\〜\Apache2_2\htdocs\samples\hoge.dbの部分が分かりません
ファイルの指定なんていらんよ
>>834 では、例えば
>>833 の例で言うと、以上のpdo.dsn.testの設定で終わりで、
$user = 'aaa';
$pass = '111';
とすると、 $dbh = new PDO('test', $user, $pass); でいいのでしょうか?
$dsn = 'mysql:host=localhost;dbname=friend'; として、
$dbh = new PDO($dsn, $user, $pass); とする方法は分かっているのですが、少しでも記入を減らす為にphp.iniでDSN宣言をしたいと思いまして
SQLite使ってて、その宣言方が身についているもので
それでいいんじゃない?
>>836 申し訳ございません
それとは改行よりも上の部分の方でしょうか、それとも改行よりも下の部分の方でしょうか?
何度もごめんなさい
上のほうです
move_upload_fileのエラー処理でファイルがアップロードされているかどうかの判断を['size']でやってる人が 周りに何人かいるんだけど今はそれで大丈夫なの? 俺は今まで['erroe']の番号で0ならOKで3なら不完全で4ならアップされてないよ〜みたいな判断してて かつerrorが0の場合にファイルサイズが0以上ならって感じで見てるんだけど、もしかして順番間違ってる?
errorで見たほうがいいんでないの 実質的には変わらんかもしれないけど
学習中のものです。 PEAR::DBじゃなくてPDOを使うのが主流なんですか? PDO2もあるとどこかで読みましたし…。
学習中なら違いを学習してください
アンケート取ったわけじゃないからわからんが 今時はpear/peclに依存しないのが主流じゃね?
学習中なら主流なんて気にするな。 作ろうとするものに、どんな道具を使えばいいのかを考えとけ。
846 :
842 :2009/11/09(月) 23:03:10 ID:???
>>843 参考書に違いが載っています。
a)MySQL関数を使う方法、b)PEAR::DBモジュールを使う方法、c)PDOを使う方法
の3つの説明があり、それぞれの欠点は下のとおりでした。
a)MySQLでしか使えない
b)抽象化してセキュリティも配慮しているのでお勧めだが動作が遅め
c)ネイティブ実装で速度は申し分ないがサポートするRDBMSが少ない
PDOが使いやすそうですが、ウェブサーバを変えたときに対応してなかったら
コードの書き直しが必要になるので、迷っているところです。
>>844 PECLというのは初めて目にしましたが、Cで書かれていてPEARより高速なんですね。
でもPEARもPECLも避けたほうがいいということなら、選択肢から外そうと思います。
>>845 そうですね。
主流の方法を勉強しておいたほうが後々有利だと考えてしまいました。
>でもPEARもPECLも避けたほうがいいということなら、選択肢から外そうと思います。 いやPEARとPECLは使った方がいいよ
848 :
844 :2009/11/09(月) 23:10:17 ID:???
>>846 PDOはpeclだよ
避けた方が良いとかはないよ
ただ今はフレームワークが流行で、フレームワークはpear/peclに依存してないのが多い。
学習中なら全部やっとけ、覚えるのに時間かからんから。
>>847 そうなんですか…。
確かにPEARとかはインターネットで調べても情報がいろいろ出てくるので
よく使われてるんだなぁという印象を受けてます。
>>848 PDOってPHP5.1.0以降は標準で入ってるんですね。
サポートするRDMBSが少ないということですが、今のところMySQLとSQLiteしか
使ってないので、問題ないかなと思い始めました。
やっぱり全部やっておくのが一番ですよね。
まずどれか一つを使ってみてから、他の方法もそれぞれ使えるようにしていこうと思います。
ありがとうございました!
swfのFileReferenceでアップロード中にキャンセルすると、 $_FILES[xxx]['error']が0で$_FILES[xxx]['size']はアップロード済みのサイズになる。 これ、豆知識な。
突然なに?
いつものキチガイだろ
10レスくらいは、遡ってみろよと思う。
10レスくらいでキチガイとか言っちゃったあげく、真っ赤になって言い訳か。
どうやら本当にキチガイのようだ
自分以外がみんな「キチガイ」に見える人だったか、ご愁傷様。
>>850 まじかよ
俺も
>>840 みたいにerrorで判別してたからかな。
ちょうどswf扱ってたから、これ知らなかったら試験ではまったかもしれん。
まじかよw
本気と書いてマジと読むw
ちいたん
>>862 pearと言われたらそれを素直に信じるのかい?
>>862 CakePHP・smarty・zend framework の3強
次点で、codeigniter
今後どうなるかはわからないが、勉強会などの人数で判断するとCakePHPが一番盛り上がってる
>>865 smartysmartysmartysmartysmartysmartysmartysmartysmartysmartysmartysmartysmartysmarty
え?
>>865-866 smartyじゃなくてsymfonyだったw
ごめんね、最近smartyの仕事ばっかでむかついてたからだと思う
ちいたんとか名前的に提案できないよ(´・ω・`)
ちいたんはドキュメントがないから素人におすすめできない
870 :
708 :2009/11/12(木) 17:55:39 ID:???
PEAR::DBもPDOも使わずに、adodb使ってるオレは少数派かw
PHPでブログ作成に挑戦してます。 サイドバーを表示する位置(右か左か)は、その位置によってHTMLを変えるんですよね? それともCSSを工夫するだけでどっちにも表示できるんですか?
float使えばCSSでも可能じゃないかな
>>874 floatを持ってる本で調べたら
「ブログのマルチカラムデザインを作成する歳によく利用される手段です」と書かれていて
使い方の説明ページを見つけることができました!
ありがとうございました。
「;:丶、:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:| ト、;:;:;:丶、:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:| {::ト、:;:;:;:;:;:` '' ー―――;:;: '| l::l . 丶、:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:| ',:i r- 、、` ' ―――一'' " .| || ヾ三) ,ィ三ミヲ | Malo とは lj ゙' ― '′ .| | , --:.:、:.. .:.:.:.:..:.:... | 何じゃ | fr‐t-、ヽ. .:.:. '",二ニ、、| l 丶‐三' ノ :ヾイ、弋::ノ| ', ゙'ー-‐' イ: :..丶三-‐'"| ', /.: . | ', ,ィ/ : .:'^ヽ、.. | ',.:/.:.,{、: .: ,ノ 丶::. | ヽ .i:, ヽ、__, イ _`゙.| ,.ゝ、ト=、ェェェェ=テアヽ| _r/ /:.`i ヽヾェェシ/ | _,,. -‐ '' " ´l. { {:.:.:.:', `.':==:'." | 一 '' "´ ',ヽ丶:.:.:ヽ、 ⌒ ,| ヽ丶丶、:.:.ゝ、 ___,. イ | `丶、 ``"二ユ、_,.____|
ggrks
-rw-r--r-- 1 root root 0 10月 10 00:00 test のファイルの文字を追加したく下記を作成しました。 <?php exec("echo 'test' >> /tmp/test"); ?> これでは権限が足りずに追記できないためsudoで apache ALL=(ALL) NOPASSWD: ALL を設定しましたがダメでした。 このファイルにPHPから追記する方法というのは無いのでしょうか? 初歩的だと思うのですが解決策あればヒントもらえないでしょうか。
俺が歯磨き終わるまで待っててくれるのなら
881 :
879 :2009/11/14(土) 00:00:27 ID:???
>>880 歯磨きが数時間かからないのであれば待ちます
歯を磨きながら寝てしまったか やっぱオナヌーしよ、と気分が変わったか どっちかだな
PEAR::AuthでcryptTypeにMD5を指定すると データベースに入っているMD5のパスワードと照合できるとのことですが、 認証のためにフォームに入力して送信するパスワードは 平文で流れるんですか? 自分でJavaScriptでMD5化してから送信したほうがいいということでしょうか? ご教示いただければ幸いです。 よろしくお願いします。
884 :
nobodyさん :2009/11/14(土) 02:49:47 ID:IZ6ITEcO
SSLじゃないなら平文
phpがするってことは権限はapacheになるんだよね? -rw-r--r--にapacheが追記って可能なのか?
>>884 ありがとうございます。
ハッシュ化せずに送信するのは一般的なのでしょうか?
SSLが安全だと思って導入方法を調べてもよくわからなかったので
SSLを使わない方法を検討しているところです。
>>886 生パスワードでもハッシュでも、送信した情報を途中で
キャプチャされる事を考えたら、安全性はどっちも同じ。
ハッシュ値で比較するのは、主にデータベースの中身
が漏れた時の対策。
生パスワードで管理すると、情報が漏れたらログイン
し放題だけど、ハッシュで比較するなら危険性は低い。
その意味で言うと、ハッシュ値を送信して比較するのは、
生パスワード同士で比較してるのと一緒。
>>887 どうもありがとうございます。
むしろ生パスワードを送信したほうがいい
っていうことになるんでしょうか?
せめべBasic認証ぐらいやれ
>>889 アドバイスありがとうございます。
調べてみましたが、Basic認証でもパスワードは平文で送られるんじゃないでしょうか。
Digest認証というのも調べましたが、どちらもダイアログボックスが出てきてしまうようですね。
Facebookやmixiのログインページのように、ダイアログボックスが出ない方法がいいなと思ってます。
現在、MD5化したパスワードをデータベースに保存し、ブラウザから送信するときも
MD5にして送るようにしていますが、送信データもDBもMD5だと良くないということが
>>887 さんのご説明でわかりました。
結局どうしたら良いのでしょうか。
グローバル変数なんですか、どっから呼び出してるのかわかりません 1つ1つ探して行くしかないのでしょうか・・・? 大変じゃないですか?
>>891 ・大変じゃないようなソースを書くようにする
・IDEを使う
・grepする
方法は知らんがmessagesに書いてくれるものがなかったっけ? それ使えば出来るんじゃないかと適当にレスをつけてみる
>>895 知らないくせに煽ってんじゃねえぞksg
>>896 知らないくせに煽ってんじゃねえぞksg
>>897 同じ言葉を真似てる人ってリアルで気が弱いから言い返す力がない人によく見られる光景
>>898 主語が「同じ言葉を真似てる人」だから文末の「光景」は不自然
日本語もまともに使えない人ってリアルで学歴が低いから言い返す力がない人によく見られる光景?w
>>898 お前には他人の行動を咎めるだけの文章力がないんだよksg
error_logでいいじゃん
Defaults requiretty とか?
apacheにroot権限あげるかsudoするしかないんじゃないかな もしくは-rw-r--r--を-rw-rw-rw-とかにして書き込めるようにするとか。 一番いいのはrootで動く別のものに渡してやるとかじゃないかね。 こっちはもともとroot権限ないと作れないけどどれもあんまりお勧めできんな。
PHP5.3.0にはlibmysql.dllはついてないの?ないんだけど
そのくらい自分で入れろよ
ありました どうも失礼
動かして問題があればエラー出るじゃん
>>908 構文チェックはphp -lでできる。
あとはerror_log等を見る。
デバッグという事なら、PDTなどのIDEを使い、ZendDebugger/xdebugなどで
リモートデバッグが行える。
またOCNとチンピラが沸いてたのか
>>910 すみません、php -l って、マイナスと小文字のエルですか?
どのように使うのでしょうか?
ググってみたのですが、また、マニュアルで検索してみたのですが、出てきませんでした
>>913 ありがとうございます
>>914 ダブルクォーテーションを使って検索するのですね・・・
知りませんでした
そのまま検索したら、PHP自体のことしか出てこなくて・・・
ありがとうございます
プリペアドステートメントを使うだけでSQLインジェクション対策はばっちりなのでしょうか? これだけでいいなら誰も被害に遭わないとですよね
917 :
916 :2009/11/16(月) 16:16:48 ID:???
不要な「と」が入ってしまった、どこかの方言みたい
>>916 に便乗して聞きたいけど、
レコード数の少ないテーブルからSELECTで抽出するようなときも
プリペアドステートメントとかで対策する必要があるの?
危険なのは
UPDATE、INSERT、REPLACEとかでデータベースを書き換えるときや
認証でパスワードを扱うときぐらいかなって思ったんだけど。
えっ・・・?
>>918 「select * from hoge ; delete 〜」のようにセミコロンで区切られて
複数クエリ実行されたらどうするの?
>>921 例えが悪かったな、すまん。
wikiのSQLインジェクションに書いてある例を使わせて貰うと
SELECT * FROM users WHERE name = '(入力値)';
というSQLがあったときに、入力値に "' OR 't' = 't" と入れると
SELECT * FROM users WHERE name = '' OR 't' = 't';
↑
こうなるとある。この場合は全件選択されるだけだが
ここで入力値を "' OR 't' = 't' ; delete from TABLE名; --"
とすると、delete文が実行されてしまう。
やっぱ皆さん、フレームワークは使っているのでしょうか? PHP、PEAR、Smartyと学習してきましたが、フレームワークだけは何をやればいいのか分からなくて・・・ そもそも、どういうところで使用するのですか?
Webアプリでですが
925 :
918 :2009/11/16(月) 20:49:30 ID:???
>>920 >>922 つまり、SQL文にユーザの入力値が含まれてるような場合が危険ってことだよね?
入力値より前の部分がどんなSQL文になってるか、ユーザに知られちゃうことってあるの?
それとも当てずっぽうで攻撃する人がいるってこと?
はぁ・・・?
まぁあてずっぽうでもそれっぽいの入れてればそのうちあたるかもな それっぽいのをブルートフォースであたれば寝て起きたらいくつかわかってるかもしれんな SQL文の命令自体はもうきまってるわけだし。
>>922 PDOでプレースホルダを使ってるけど、
$q = $db->prepare("SELECT * FROM users WHERE name=:username);
$q->bindparam(":username", $_POST['username']);
$q->execute();
こんなんじゃダメ??
$q->bindparam(":username", mysql_real_escape_string($_POST['username']));
のようにエスケープ関数を使わなきゃダメなのかな?
何のためにPDO使ってんの?
個人で使うならmysql_real_escape_stringで十分
ウェブサイトからメタタグを取得して、
"。" ごとに配列に入れたいのですがうまくいきません。
"、" で試したらうまくいったのですが、どうしてでしょうか。
$tags = get_meta_tags('
http://sample.com ');
$des = $tags['description'];
$arry = explode('。', $des);
メタタグ内に。がないんじゃない?
ページャーのクラスを自作してみましたが、 クラスは何年も前にC++でちょっと使った経験しかないので 扱い方が正しいのか不安です。 $p = new pager(引数いろいろ); echo $p->linkhtml(), こうすると他ページへのリンクが出て、そのリンクをクリックすると 「?page=10」のようなクエリ文字付きで同じスクリプトに飛びます。 そうすると、リンクをクリックする度に $p = new pager(...); で何度も インスタンス化が繰り返されることになりますが、問題ないでしょうか? また、C++ではオブジェクトが不要になったら自分で破棄していた 記憶がありますが、PHPではガベージコレクターが自動的に 破棄してくれるのでしょうか。
>>936 "。" は、あるんですが、できないんです。
>>937 スクリプトが終わると勝手にデストラクタが呼ばれるよ
940 :
935 :2009/11/17(火) 11:55:07 ID:???
解決しました。 テキストエディタでphpのソースファイルを開いてみたら、 エンコードがなんとかかんとかって言われて なぜか、"。"の部分が "B" になってました。 "B" を "。" に直したら解決しました。
>>940 「。」 0x8142(sjis)
「B」 0x42
理由わかってないとまた同じ問題起こしちゃうかもよ。
>>939 やっぱりそうなんですか。
リンクを押して飛ぶときにスクリプトが終了してオブジェクトが破棄されて
リンク先で新たにオブジェクトが作成される
と考えれば、問題ないんでしょうか‥。
そうです
飛ぶ時にスクリプトが終了?
>>943 ありがとうございます。
安心しました。
>>944 クライアント−サーバ間でやり取りが終わった時ですかね。
失礼しました。
CakePHPに興味があるのですが、bakeって何ですか? 本屋でざっと読んだくらいでは理解が出来ませんでした
bakeっていうのはバカっていう意味だよ bake=cakePHP初心者=cakePHPを覚える者=cakePHPも使えないバカ
cakeをbakeすんじゃね?
逆だろ bakeをcakeにするんだろ 他の人が(スクリプトが勝手に)土台を作ってくれると思えばよい あとは生クリーム塗ってデコレーションは自分でしてねと
>>946 じゃないけど、cakephpって今や必須?
どういうものかもわかってないんだけど。
いまテキストエディタでベタ打ちしてるんだけど、cakephpだと何か楽になるの?
今までに作ったwebアプリをcakephpに対応させる(?)ことは可能なのかな。
フレームワークだよ
「フレームワーク」調べてみた。
> フレームワークは一言で表すと、「アプリケーションの土台」と言えます。データベースへの接続、
> 認証機構の実装、データの登録・編集・削除ページの作成など、どんなWebアプリケーションにも
> 必須の機能があります。これらの開発を毎回1から行うことは非常に効率が悪いことです。
> フレームワークはこれらの機能を一つにまとめ、その組み合わせ方も提供します。言わば、コードの
> 規格書とも言えるでしょう。
ttp://www.phppro.jp/article/framework/framework.php DBへの接続や認証の実装よりも、「コードの規格書」を新たに覚えるほうが面倒なんだけどなぁ。
個人で自分用のものを開発してるだけだったらフレームワークとか使わなくてもいいかな。
好きにしなよ
好きにします>< たぶん近いうちに本を読んでみる。
>>937 クラスって使い方がわかんねぇや。
どういうときに使うんだ?
素人や見習い相手にカッコつけたいときに
クラスのコードだけ配布するのはやめてほしい 俺はExampleがほしいんだよ
配列にhtmlタグを追加していきたいんですけど $url=$_GET['url']; $tug = "<img src=\"".$url."\" width=\"300\" height=\"300\">"; $tug_array=array(); array_unshift($tug_array,$tug); どこが悪いんですかね?それともarray_unshift($tug_array,$tug);なんて不可なんでしょうか?
>>958 どこも悪くないよ
そのあとにvar_dump($tug_array);って書いてみるといいよ
あと、特に意図がないならarray_unshiftなんて使わなくても配列の追加は
$tug_array[] = $tug;
とか
$tug_array[] = "<img src=\"".$url."\" width=\"300\" height=\"300\">";
なんかでできるよ
どうでもいいかもしれないけど、タグのスペルが・・・(ry
>>959 おお・・・なんと親切な。ありがとうございます。
>>960 素直にtagで良かったのか・・・恥
え・・・わざとじゃ・・・なかった・・・だと・・・!!
>>961 >素直にtagで良かったのか
俺ちょっと意味分からん
設置ぐらいしかでき無い素人なんだけどここで聞いていいのかな? 借りてたサーバーが閉鎖するから他のサーバーに移転作業中で 設置して何回かのエラーの後、前の通り動かすことはできたんだけど PHPから生成されるファイルの所有者が「www」になって インターネット上から直接ファイルにアクセスすると丸見えなんだけど、これをどうにか自分の権限にすることできない? 前のサーバーではどこ変更することなく自分のIDになってた。 変える部分はここら辺かなとはおもう /*-- メインファイル作成 --*/ function make_file1($line, $num) { $file = LOGDIR . $num . ".dat"; $fp = fopen($file, "w"); set_file_buffer($fp, 0); flock($fp, LOCK_EX); fputs($fp, $line); fclose($fp); chmod($file, 0666); }
同時に生成されるこっちのファイルはちゃんと自分のIDになってる /*-- カウントファイル作成 --*/ function make_file2($num) { $file = LOGDIR . $num . "c.dat"; $line = "0<><>"; $fp = fopen($file, "w"); set_file_buffer($fp, 0); flock($fp, LOCK_EX); fputs($fp, $line); fclose($fp); # chmod($file, 0666); } PHPはレッツPHPのI-BOARDの改造版つかってます。 よろしくおねがいします。
明らかに違う点があるじゃないか
ここ? $line = "0<><>"; カウントファイルのchmodはエラーが出たので自分でコメントアウトした
そうか
そうさ
970 :
nobodyさん :2009/11/19(木) 14:45:12 ID:q1nxRQc4
PHPって複数の変数に同時に代入できますか? $hoge と $hoge1 に 4989 という数値を入れたい時に $hoge = "4989"; $hoge1 = "4989"; としないといけないのですが複数を一気に入れることが出来れば教えてください。
>>970 $hoge = $hoge1 = "4989";
>>971 そういうやり方でよかったんですね。
ありがとうございます。
他に書き方が・・・?
C++とかでも同じように記述するよねぇ
別に
>>973 馬鹿にするわけでも何でもないんだが
$a = $b = "1"以外に同時に代入する方法あれば知りたいな
978 :
nobodyさん :2009/11/19(木) 16:24:29 ID:nc7ESJS7
$a & $b = 1;
$_FILES['aaa']['error'] が空かどうかを判定するのってどうするんでしょうか?
is_null
list($a, $b)=array_pad(null, 4989, 2);//w
>>979 isset
array_pad(array(), 2, 4989)だな、ネタだからどうでもいいけど。
error_log("1234", 3, "/var/log/1234"); で実行すると権限がないと怒られます。 sudoで権限の設定はしたのでsudoでやれば出来ると思いますが、 これをsudoでする場合はどう記述すればいいのでしょうか?
またおまえか
syslogのほうが便利
987 :
984 :2009/11/20(金) 11:47:31 ID:???
すまん php分離してsudoからphp別ファイルで叩いて回避した syslogも考えて見ます。 ありがとうございます。
そろそろ次スレ立てないとな・・・
俺立てられないからこんな感じで誰か新スレ立ててくだされ
【PHP】ID出さんでも質問OKなスレ【初心者可】3
ID出さなくても質問OKなスレです
初心者もいるので、そういう方には親切に答えてあげましょう
荒らしやあまりにも言葉使いの悪い人間は無視の方向で
PHP以外にもPEAR等のライブラリ、Smarty等のテンプレート、フレームワーク、PHPがらみのSQL等も可としますが、出来るだけ専門のスレで質問された方がいいと思います
また、出来るだけOS、PHPやApache等のバージョンも書いた方がいいと思います
◆前スレ
【PHP】ID出さんでも質問OKなスレ【初心者歓迎】2
http://pc11.2ch.net/test/read.cgi/php/1252590753/ その他、諸情報は
>>2-10 辺りにて
自分で解決できなくて質問しにくるのはみんな初心者だと思うんだが・・・
idスレに統合でいいと思うんだが・・・
あっちは毎日暇人気違いが暴れとるぞw
統合はすべきでないと俺は思うけどね どっちも見ていてちょっと気質が違うから
ここは元々IDを出さないで質問してくる奴らのために分離されたスレだから
新しいバグ発見とかでも初心者扱いかよw
経験者ほど知識の共有を大事にするもんだ
一応1000取っておくか
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。