【PHP】下らねぇ質問はここに書き込みやがれ 34
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/12/08(金) 04:22:54ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 33
http://pc8.2ch.net/test/read.cgi/php/1164209222/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ http://pc8.2ch.net/php/subback.html
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで http://pc8.2ch.net/db/subback.html
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
しかし初心者が目的も定めずに速度を気にしたところでほとんど意味は無いぞ
0074軟式PHP
2006/12/08(金) 21:15:28ID:???0075nobodyさん
2006/12/08(金) 21:19:41ID:???じゃあ、君はヘタレ決定。
ttp://www.php.net/manual/ja/language.references.return.php
007673
2006/12/08(金) 21:19:49ID:???だったらパスワードの安全性を確保できるような仕様にすることが優先だな。
大抵の人 (9割以上) が 4桁の数字をパスワードにしているから、
ブルートフォースアタックで簡単にやぶれるぞ。
必ずアルファベットを使わないと駄目とか、数字なら8桁以上とか、制約をつけて安全性を高めた方がいいね。
0077nobodyさん
2006/12/08(金) 21:25:45ID:???それでたまに普段使ってるパスワードが使えないサイトがあったりして困るんだよな。
勝手にセキュアと思い込んだルールをユーザに押し付けつけるなよと。
0078nobodyさん
2006/12/08(金) 21:25:59ID:???0079nobodyさん
2006/12/08(金) 21:32:52ID:???> それでたまに普段使ってるパスワードが使えないサイトがあったりして困るんだよな。
> 勝手にセキュアと思い込んだルールをユーザに押し付けつけるなよと。
パスワードを使いまわしするという行為自体がセキュアでないことをお分かりですか?
パスワードの入力欄に入力した文字が ****** に変換されないことが原因でクラックされる例なんてそんなにないでしょ。
0080nobodyさん
2006/12/08(金) 21:37:19ID:???だから?全サイト1つずつパスワードを変えて100以上ものパスワードを暗記してられるとでも?
覚え切れなくてメモ残す羽目になったらもっとセキュアじゃないだろう。
008179
2006/12/08(金) 21:41:56ID:???メモを残すことがセキュアじゃないか。
漏れはパスワードを手帳にメモするときは、独自のルールで暗号化している。
Fkkh8D なら 最初の3文字はアルファベット数字を2回進め、最後の3文字はアルファベットと数字を3回戻す、みたいにね。
メモを安全に管理すれば、メモを残しておいても問題ないだろう。
ISPのパスワードなどの重要なのは、独自のルールで暗号化したものを、さらに家の金庫にいれて保管してるよ。
パスワードを使いまわししていたら、どこか1箇所から漏洩しただけで、全てのサービスがクラックされる可能性があるわけだが。
その管理の何処がセキュアなんだ。
もし、独自ルールでの暗号化が面倒ならば、サイト毎に違うパスワードにしてメモして、
メモしたパスワード + In@2 (暗記するパスワード) みたいにすれば問題なし。
0082軟式PHP
2006/12/08(金) 21:43:32ID:???仕様とかそういう以前に俺はtype=passwordにする。
ただ、そんだけ。
>>78
ケータイでpasswordにしてたら古い機種はキツイよなw
何打ってるか分からんやつがあるw
0083nobodyさん
2006/12/08(金) 21:44:04ID:???http://www.livedoor.com/blog/だとできません。
これはPHPでクエリ文字でページを制御しているのでしょうか?
0085nobodyさん
2006/12/08(金) 21:47:19ID:???そんな独自のルールじゃ、攻撃者がメモをたまたま見つけてコンピュータで暗号解読を試みたら、短時間で見破られる可能性あるんじゃ・・・
008681
2006/12/08(金) 21:52:03ID:???あ、説明が不十分だった・・・。
独自のルールに変換した文字列に 4桁ぐらいの共通パスワードをいれたものが実際のパスワードになってる。
ただ単に4桁の共通パスワードを加えただけでも、ランダムな英数字にしているから、
62^4 = 14776336 通りを試さなければならない。
そして、もし、サイト運営者が悪用しようとしても、メモを奪わないと他のサイトのパスワードを知ることができない。
0087nobodyさん
2006/12/08(金) 21:56:32ID:???マクドナルドの件から始まった幼稚なセキュリティの話は
どうにか我慢してたけど、おまえの発言はさすがにばかば
かしすぎるぞ。
>>86
おまえも自慢げに説明するな。読んでるほうが恥ずかしく
なる。
0088軟式PHP
2006/12/08(金) 21:57:13ID:???ライオン像を斜めに傾けると本棚が開いて出てくる金庫にしまうぜ。
0090nobodyさん
2006/12/08(金) 21:59:17ID:???0091nobodyさん
2006/12/08(金) 22:01:24ID:???それも全て<input type=text>のため。
見えて入力しやすいフォームのためなら、ユーザーは僅かながらの労力を惜しんではならんのだ。
0093nobodyさん
2006/12/08(金) 22:04:01ID:???0094nobodyさん
2006/12/08(金) 22:04:58ID:???いちゅまでつじゅくんでちゅか?
ここはあくまでもPHPのしゅれでしゅよ?
0095nobodyさん
2006/12/08(金) 22:18:10ID:???これでID入力1つ、パスワード入力5つあれば問題ない。
009997
2006/12/08(金) 22:51:12ID:???0100nobodyさん
2006/12/08(金) 22:52:01ID:???何処かが作ったCMSのスクリプトを覗いたらメニューの文字からリンク先まで
全部セッションに突っ込んであったりしたんで・・・
0101nobodyさん
2006/12/08(金) 22:54:33ID:???そもそもダイアログって何の話?
ファイルアップロード?
あそこはPHPじゃ制御できない。
JavaScriptでも無理。
ActiveXならできる。
0105nobodyさん
2006/12/08(金) 23:23:12ID:???0107nobodyさん
2006/12/08(金) 23:32:52ID:???「56664,123,1,32,0,96,moji」
のように一行で書かれていているものを
「,」で区切ってそれぞれ変数に格納するには
どうしたらいいでしょうか
0108nobodyさん
2006/12/08(金) 23:33:58ID:???0109nobodyさん
2006/12/08(金) 23:34:38ID:???0110認定回答者
2006/12/09(土) 00:51:07ID:ohlkT/vm斬鉄剣のようにきれ。しかし、文字の中に「,」が付いていた場合、間違えた場所を切るぞ
0112nobodyさん
2006/12/09(土) 01:29:57ID:???配列に上記の3つの値が入っているとします。
ここで指定の値(例えば「ううう」)を削除して出力するには
どうしたらいいのでしょうか?
0114112
2006/12/09(土) 01:37:12ID:???いえ、「ううう」を削除して$arrayには「あああ」と「いいい」が入っている
状態にしたいのです。
unsetも試してみたのですが、違うみたいで・・。
0115nobodyさん
2006/12/09(土) 01:45:15ID:???>全部セッションに突っ込んで
それが超ウンコな実装方法だという自覚があって、
それでも使うというのなら、無理に止めはしない。
しかしアクセス数が少ないうちはそれでもいいが・・・
0117112
2006/12/09(土) 01:56:28ID:???$array=array("あああ","いいい","ううう");
$del_val="ううう"; //削除する値
unset($array['$del_val']);
こんな感じです
0118nobodyさん
2006/12/09(土) 01:59:44ID:???入力フォームは現れるのですが、入力してログインボタンを押すと真っ白な画面になってしまいます。
ソースは以下の通りです・・。
0119118
2006/12/09(土) 02:00:18ID:???function drawLogin($username, $status, $objAuth) {
if (isset($_SERVER)) {
$server = $_SERVER;
}else {
$server = $GLOBALS['HTTP_SERVER_VARS'];
}
echo '<form method="post" action="' . $server['PHP_SELF'] . '">' . "\n";
echo '<label for="username">ユーザー名:</label>';
echo '<input type="text" name="username">' . "\n";
echo '<label for="password">パスワード:</label>';
echo '<input type="password" name="password">' . "\n";
echo '<input type="submit" value="ログイン">' . "\n";
echo '</form>' . "\n";
}
$params = array(
'dsn'=>"mysql://root:admin@localhost/db_bbs",
'table'=>"auth",
'usernamecol'=>"username",
'passwordcol'=>"password",
'cryptType'=>"md5",
);
$objAuth = new Auth("DB", $params,"drawLogin");
$objAuth->start();
if($objAuth->getAuth()) {
echo "ようこそ!" . $objAuth->username . "さん<br>";
}
0120nobodyさん
2006/12/09(土) 02:01:12ID:???そもそも '〜' 内では変数を参照できないから、
それ$array['ううう']の参照になってない、って突っ込みもあるけど、
$idx = array_search($del_val, $array);
if($idx !== FALSE) unset($array[$idx]);
って感じかな。
0121nobodyさん
2006/12/09(土) 02:02:33ID:k1+g2CldphpMyAdminを導入したのですが、基本的な操作方法がわかりません。
ググって色々なサイトを見たのですがいまひとつ理解ができないです。
どなたか参考になるサイトなどあれば教えていただけないでしょうか。
0122nobodyさん
2006/12/09(土) 02:07:09ID:???かつ 参照渡ししたいと考えています。
change()
{
$args_num = func_num_args();
$args = func_get_args();
for( $i=0; $i < count($args_num); $i++ ){
$args[$i] = "修正後";
}
}
と関数を作って、
使用する際に
change(&$var);
としても $var が参照渡しされず、「修正後」になりません。
https://www.stackasterisk.jp/tech/php/searchAction.do;jsessionid=aa3Tn-HfMu3c?cid=11
ここを参照すると、
関数定義時に&をつける、使用する際に引数に&をつける、
どちらでもOKと書いてありますが、どこが問題かどなたかご教授くださいませ。
0123121
2006/12/09(土) 02:17:25ID:k1+g2Cldなので、なんとか設定をすることができましたm(__)m
0126124
2006/12/09(土) 02:30:36ID:???ttp://ml.php.gr.jp/pipermail/php-users/2002-Decem
ttp://labs.unoh.net/2006/07/php_3.htmlber/012279.html
ttp://je-pu-pu.jp/blog/archives/2006/03/php_4.html
しかしいずれも無回答もしくは「無理」で結論されている模様。
0127nobodyさん
2006/12/09(土) 03:40:48ID:pb/pWspHSQL Serverのtext型のデータの出し入れの方法がわかりません。
VBとかのサンプルは見かけるのですが、PHPでのやり方をおしえてください
0128nobodyさん
2006/12/09(土) 06:57:35ID:???何がしたいのかよくわからないが、
http://www.php.net/manual/ja/ref.mssql.php
ここ眺めてたら答え出るんじゃないかな
0129nobodyさん
2006/12/09(土) 09:33:05ID:???何がどうわからないのか書いたほうがいいと思うよ。
数値や日付は普通に取れるってことなのかな?
mssqlはSJISで保存されるので、mb_convert_variablesとかしないといけないけど。
ついでにODBCの方も紹介しとこか。
http://www.php.net/manual/ja/ref.uodbc.php
PEAR::MDB2とかADOdbとか使った方がいいかもだけど。
0130nobodyさん
2006/12/09(土) 10:04:30ID:YIF875cZみんあはどうしているの?
0131nobodyさん
2006/12/09(土) 10:05:00ID:???0132nobodyさん
2006/12/09(土) 10:16:20ID:???サーバ用のあるでしょ。
まぁ他人にスペース貸したりしてるわけじゃないし、
最低限のセキュリティー対策してれば、
外部から感染することは少ない。
>>131
Linuxならウィルスにかからないとか思ってるわけじゃないだろうな?
0134130
2006/12/09(土) 11:01:53ID:???僕のためにみんなけんかをしないでください
0138nobodyさん
2006/12/09(土) 12:26:13ID:FhkAh91m掲示板の管理画面を作ろうとしています。
1ページ20件ずつ表示する掲示板で
20件を超えると<a>リンクで2ページ目が出現する仕組みです。
管理者がログインしている状態でこの掲示板を開くと
各書き込みに対し編集ボタンが表示されるようにしたいのですが
2ページ目に<a>リンクで飛ぶと、当然POSTでパスワードを
受け渡すことができず、こまってしまいました。
こういうのってどうやって実装するものなのでしょうか。
もしスレ違いでしたら誘導よろしくお願いします
0139nobodyさん
2006/12/09(土) 12:34:39ID:???認証したらセッションを開始して管理者であることを
示すキーかなんかを放り込んでおけばいいのでは?
各画面ではセッション変数を読み出し、管理者なら編集用の
リンクを張るなどする。
0141nobodyさん
2006/12/09(土) 12:43:19ID:???>当然POSTでパスワードを受け渡す
当然そういう危ないことは止めていただきたい。
>>139の言うとおり、セッションで管理者ログインフラグとか立てる。
0142nobodyさん
2006/12/09(土) 12:43:53ID:???レスありがとうございます
セッション管理について無知でした
調べてみたら、まさにこれだ!って感じです。
かゆいところに手が届きました
感謝です
0144nobodyさん
2006/12/09(土) 12:49:46ID:???SJISの文字列AとEUC-JPの文字列BをブラウザへGET送信した際、
B側を echo すると
表示させるphp側で
<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
と指定しているにもかかわらず、文字列BのみがSJISで表示されます。
(このため文字化けします、ブラウザの文字コードを再度EUC-JPに指定してやれば、
文字化けが解けます)
文字列AをEUC-JPにしたら、文字化けせずに正常にEUC-JPで表示されます。
おそらく、GETで受け取る際に文字コードを判定、
その後、その文字コードで表示、みたいなことを
PHPのmbstring側が勝手にやってるような感じですが、
php.ini を弄る以外で何か解決方法はないでしょうか?
ちなみに mb_http_out("EUC-JP") をしても変わりませんでした。
お願いします。
0145nobodyさん
2006/12/09(土) 12:52:22ID:???とりあえずmb_*関係の設定をすべてさらすこと。
次に表示するソースの文字コードを確認。
こっちはエスパーじゃないんだから。
0146nobodyさん
2006/12/09(土) 13:04:57ID:???Directive Local Value Master Value
mbstring.detect_order auto auto
mbstring.encoding_translation On On
mbstring.func_overload 0 0
mbstring.http_input auto auto
mbstring.http_output SJIS SJIS
mbstring.internal_encoding EUC-JP EUC-JP
mbstring.language Japanese Japanese
mbstring.substitute_character no value no value
となっています。
ソースの文字コードはEUC-JPです。
この問題以外は文字化けは発生してません。
文字化けが発生するのも文字列Bのみです。
宜しくお願いします
0147nobodyさん
2006/12/09(土) 13:16:10ID:???0150146
2006/12/09(土) 13:21:47ID:???それではよろしくお願いいたします。
0153146
2006/12/09(土) 13:40:26ID:???>文字列AをEUC-JPにしたら、文字化けせずに正常にEUC-JPで表示されます。
という部分の理由は分かるでしょうか?
また、mb_http_out("EUC-JP") をしても駄目なのはなぜでしょうか。
0154nobodyさん
2006/12/09(土) 13:42:32ID:???でコンテンツが見つからなかったときに
エラーを吐かせず$string_contentsに別の数値を入れるにはどうすればいいですか
0156146
2006/12/09(土) 13:44:08ID:9A0i8Wu20157146
2006/12/09(土) 13:59:24ID:gM+cEjaMたいへん恐縮ですがはやく教えていただければと思います。
こちらも暇ではないので。
0158nobodyさん
2006/12/09(土) 14:02:42ID:???0159nobodyさん
2006/12/09(土) 14:07:38ID:???ローカルルールも意味無くあるわけじゃないんだよ。
文字列をEUCに変換して出力するならそのままEUCで出力される。
何もしなければお舞さんが設定したとおりSJISに変換してEUCの
HTMLに出力する。
これがAとBの違いだろ。
0160146
2006/12/09(土) 14:09:51ID:gM+cEjaM0161146
2006/12/09(土) 14:25:55ID:9A0i8Wu2> 何もしなければお舞さんが設定したとおりSJISに変換してEUCの
> HTMLに出力する。
> これがAとBの違いだろ。
文字コード自体は文字列BもEUCなのです、
SJISになってるわけではないです、あくまでブラウザ出力の
文字列B部分がSJISになっているだけであって。
だから
>(このため文字化けします、ブラウザの文字コードを再度EUC-JPに指定してやれば、
文字化けが解けます)
となります。
0162nobodyさん
2006/12/09(土) 14:28:55ID:???159も根本的に勘違いしてるし
0165146
2006/12/09(土) 14:35:30ID:gM+cEjaM0166nobodyさん
2006/12/09(土) 14:42:07ID:???送信されてきた文字列がSJISかEUC-JPかはどうやって
判断したの?
mb_detect_encodingで調べてみた?
0167nobodyさん
2006/12/09(土) 14:44:52ID:???なんか2人146がいるし、めんどくさいから相手にすんな。
0168nobodyさん
2006/12/09(土) 14:54:54ID:???ID:9A0i8Wu2が本物であると予想して相手してみる。
とりあえず再現するコードを書いて(特にform部分と、文字コード関連の操作)。
そうすれば、内容が明確になるだろうし、回答も得られるはず(>>146の設定内容は了解した)。
少なくとも、文字列Aと文字列Bというのが、どういう操作の対象なのかがわからん。
同時に送信しているのか、別の送信の仕方をしているのか。ブラウザの通常の使用で再現されるものなのか。
まーとにかく、再現するコードを書いてくれ。
言葉だけで説明されると、曖昧さが出てくる。
>>154
$string_contents = @ file_get_contents("ファイル名") or $string_contents = デフォルト値;
0170146
2006/12/09(土) 15:29:44ID:9A0i8Wu2はい、mb_detect_encoding で調べてます。
>>168
$vara = "シフト";
$vara = mb_convert_encoding($vara, "SJIS", mb_detect_encoding($vara));
$vara = urlencode($vara);
$varb = "イーユーシー";
$varb = mb_convert_encoding($varb, "EUC", mb_detect_encoding($varb));
$varb = urlencode($varb);
header("Location: index.php?vara=".$vara."&varb=".$varb);
して、
index.php(文字コードEUC、HTML出力EUC) 側で
echo mb_detect_encoding($_GET['varb']);
echo $_GET['varb'];
です。
EUC と表示され、$varb 自体は文字化けします。
0171nobodyさん
2006/12/09(土) 15:40:14ID:???そのindex.phpで、
mb_http_output("EUC-JP");
header("Content-type: text/html; charset=EUC-JP");
<meta http-equiv="content-type" content="text/html; charset=EUC-JP" />
echo $_GET['varb'];
を全部やっても化ける?
0172146
2006/12/09(土) 15:45:08ID:9A0i8Wu2化けますね・・・
0173nobodyさん
2006/12/09(土) 16:06:09ID:???どのようにすればよいのでしょうか?
0174173
2006/12/09(土) 16:08:40ID:???$strがA〜Z、a〜z、1〜9と-_の組み合わせでできているとTRUEを返したいのです。
($str = 'abc123'; =TRUE)
($str = 'abc1$3'; =FALSE)
■ このスレッドは過去ログ倉庫に格納されています