【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
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
しかし初心者が目的も定めずに速度を気にしたところでほとんど意味は無いぞ
0720nobodyさん
2006/12/16(土) 15:09:26ID:???危ないやり方だな。
フェイルセーフを考慮するなら、「まずはエスケープする」べし。
お前の考え方は「まずはエスケープしない」になっている。
0721nobodyさん
2006/12/16(土) 15:20:39ID:???0722nobodyさん
2006/12/16(土) 16:12:02ID:???題名、URL、記事をHTML形式で出力したいんですが、どうすればいいですか?
0723nobodyさん
2006/12/16(土) 16:49:47ID:???0725nobodyさん
2006/12/16(土) 16:57:32ID:???0727nobodyさん
2006/12/16(土) 17:51:14ID:???まずフェイルセーフの概念をよく理解しろ。用語の意味くらい自分でググれ。
で、その概念をシステム制作に当てはめて考えろ。
そしたら>>713のやり方がいかに危なっかしいかが分かる。
重要なのは「優先順位」だ。どんな処理を優先させるのか。
安全対策に万が一「抜け・ミス」があったときにでも危険を防ぐにはどうしたらいいのか。
よく考えろ。考えても分からなければ、危険なので難しいことはやろうとするな。
0728nobodyさん
2006/12/16(土) 17:54:20ID:???っていうかお前さ、>>720をよく読めよチンカス。
せっかく重要な答えをズバリ書いてやってんのにそれを無視して、
「<と>と'と"を置換するだけじゃ危険なのですか?」などと的外れな質問を繰り返しやがって。
何をエスケープするかじゃねぇんだよ。どのように、どの順番でエスケープするかが大事なんだよ。
0730563
2006/12/16(土) 18:03:51ID:???ありがと〜
逆順はできたのですが、ちょっと意図したものと違いました。
CSVから整形して出力してるのですが、これを、例えば5番目の配列を基準に逆順にソートして出力させたいのです。
rsortだと、そういった指定ができなくて。
<table>
<?php
$Data=file('db.csv');
for($i=0;$i<sizeof($Data);$i++){
$line=explode(",", $Data[$i]);
?>
<tr><td><?=$line[0]?></td><td><?=$line[3]?></td></tr>
<?php
}
?>
</table>
言葉足らずで申し訳ありませんでした。
0731nobodyさん
2006/12/16(土) 18:09:01ID:???普通はリレーション使うと思うのですが、
phpからの操作が非常に面倒になりませんか?
リレーション使わずに
一旦あるフィールド値を取得してから
そのフィールド値で別テーブルを検索して値を取得、
とかやってる人っていますか?
今までリレーションの存在を知らずに(涙)
この方法でやってたのですが、
リレーションを使うのもかなりだるく(慣れていないだけの可能性もありますが)、
過去の手段もかなりだるくなってきました・・・
他に良い方法がありましたらきぼんぬです。
0732nobodyさん
2006/12/16(土) 19:29:26ID:vIgGXUoj配列Bの[0]の要素を表示するということをしたいのですが・・
$common_word = array_intersect($array_A,$array_B);
$array_count = count($common_word);
if($array_count >= 5)
{
}
いまのところ、このようになっておりますが、どのようにしたら良いのか
分からなくなりまして。。。よろしければ、ご教授願いたいのですが。
0734713
2006/12/16(土) 19:47:29ID:???言いたいことは大体わかるよ。
でも具体的に言ってもらわないとわからない。
<と>と'と"を置換するだけで問題ないでしょ?
>>728みたいな、どうでもいい薀蓄みたいなこと言う人はレスしないでください。
0735nobodyさん
2006/12/16(土) 21:11:07ID:a8ebIslZ『扱えない拡張子です,<br />PHPの設定をチェックしてください。』
と表示されます。
PHP.iniでは
extension=php_mysql.dll
と設定して再起動も完了しました。
ですが、同じエラーのままです。
何か他に考えられることがありますでしょうか?
0736732
2006/12/16(土) 21:23:54ID:vIgGXUojわざわざ人に聞くようなレベルの話ではありませんでした。
0738nobodyさん
2006/12/16(土) 21:30:39ID:???結論から言うと危険
「マルチバイト XSS」 でぐぐってみ
あとはHTTPヘッダーで文字コード宣言を必ずすること
これがXSS対策の基本
0739696
2006/12/16(土) 21:44:32ID:HXTFaSG2ピクセル単位ですか・・・
俺もそうかと思ったんですが、
だとすると1インチあたりのピクセル数の指定が
どこかにあると思うんです。
PDF って印刷物指向ですよね。
0740735
2006/12/16(土) 21:54:02ID:a8ebIslZえ?どういうことですか?
0741nobodyさん
2006/12/16(土) 22:12:27ID:???php.iniの設定だろうね
俺はここでちゃんとできたよ
http://www.srvmap.com/windows/php5.html
0743nobodyさん
2006/12/17(日) 00:24:20ID:???Apache2.2
PHP5.2
MySQL5.0.27
文字化けで困っています。
MySQLはSJISに設定しています。
コマンドプロンプトからMYSQLを使用すると正常出力
phpMyAdminを使用すると正常出力
PHPをブラウザで使用すると文字化け(mysql_client_encodingで調べるとlatin1)
→2バイト文字が?と表示されます。
解決策をご存知の方助けて下さい。
0744nobodyさん
2006/12/17(日) 00:41:20ID:???できる。
そもそも、基本的なHTML(CHTML・XHTML)などは3キャリア側のサーバーで
自動変換してくれるから問題ないと思いますよ。
ただし、HDML(古いAU端末とTuka端末)のform処理などは対応できていないので注意!
うちは、HTMLを各ノード単位で分割してコンバーター(HTML・CHTML・XHTML・HDNL変換)を通して
表示するようなフレームワークを作って使ってます。
0745nobodyさん
2006/12/17(日) 00:44:02ID:ilUpD26lset name sift-jis
みたいにすればいいんじゃね?
0746nobodyさん
2006/12/17(日) 03:44:42ID:irlLnY560747nobodyさん
2006/12/17(日) 03:47:19ID:???お前、どうしようもねぇバカでクズだな。
何様のつもりだ。
せっかくもらったアドバイスを無視した挙句に、逆に批判かよ。
お前マジで氏んだほうがいいよ。
0749nobodyさん
2006/12/17(日) 07:56:55ID:fDowNRkw「きょうから使えるphpサンプル500」っていう本で php.ini の設定しています。
そのなかで、mbstring.script_encoding=EUC-JP という設定を変更するように
書いてあったんですが、ファイルのソースを見たら mbstring.script_encoding が
ありません。
これは追加で書き足していいものでしょうか?
また、デフォルトで ; でコメントアウトされてるmbstringパラメータは全部コメントアウト解除
すべきですか?
あと、phpではないんですが、httpd.confの設定で、
AddDefaultCharset none という項目を編集するように書いてあるんですが、
この項目もhttpd.conf にありません。やはり追加書き足しすべきでしょうか?
phpのバージョンはphp-5.2.0 OSはwinXP Apache2.2です
0750nobodyさん
2006/12/17(日) 08:09:42ID:???まずはデフォルトで起動してみて以後自分の設定に変えていけば
あなたの設定したい項目は文字コードにかかわる部分なので
設定しないと起動しないような項目ではない
FA : 書き足す必要は無い
0751nobodyさん
2006/12/17(日) 08:19:09ID:fDowNRkwすばやい回答ありがとうございます
そうですか、とりあえず、書き足さないで出来るところからやろうと思います。
いま、環境変数を返すphpを作って(サンプルにしたがって)見たんですが、
ブラウザに表示しないでファイルをダウンロードしてしまいます。
これはなぜですか
かなりショボイ質問だと思いますが、、php.iniの設定がおかしいんでしょうか
0752nobodyさん
2006/12/17(日) 08:57:15ID:???Apache の設定の方に
AddType application/x-httpd-php .php
これを書き加える
0753nobodyさん
2006/12/17(日) 09:11:25ID:???0754nobodyさん
2006/12/17(日) 09:43:07ID:fDowNRkwうおっ 動きました!
httpd.confをみたら、AddType application/x-httpd-php .phpが
AddType application/x-hpppd-php .php
になってました
サンキューです助かりました! よかったー
今年中にアンケート管理と掲示板とメールフォームまで出来るようになろう
ありがとー
0755nobodyさん
2006/12/17(日) 11:20:29ID:cjUGVVxQ出したいのですが。
$title = mb_ereg('/"タイトル:"([^"]*)"年度/',$str_contents , $match_title);
$str_title = $match_title[0];
print($str_title);
このようにしているのですが、うまくとりだせません。
どのようにすべきか、教えていただけないでしょうか。。。
0757nobodyさん
2006/12/17(日) 11:47:52ID:???mb_regex_encoding('sjis'/*必要だったら変更して*/);
$title = 'タイトル:string年度';
mb_ereg('タイトル:([^"]+)年度', $title, $matches);
print_r($matches);
できれば、文字コードをはっきりさせてpreg_match()と16進エスケープを
使ったほうがいいと思うけど。
0760nobodyさん
2006/12/17(日) 13:21:27ID:ssFbcwFM流れとしては、
入力 → 確認画面 → 修正or登録
な感じです。
入力項目の中にはドロップダウン形式のものや、チェックボックス形式のものがあります。
確認画面から修正画面に戻るときに入力された値を表示させるためにはどうすればいいでしょうか?
自分で考えた方法はフォームを
例:血液型
<select name="blood_type" size="1" tabindex="0">
<option value=1 '.$_POST['blood1'].'>A</option>
<option value=2 '.$_POST['blood2'].'>B</option>
<option value=3 '.$_POST['blood3'].'>AB</option>
<option value=4 '.$_POST['blood4'].'>O</option>
</select>
のようにして、確認画面からhiddenでひっぱって来るものです。
これだとかなり手間がかかって無駄が多いような気がします。
他にもっと賢い方法があるようでしたら教えてくれませんか?
0761755
2006/12/17(日) 13:24:37ID:iRROmMBS解決しました。どうもありがとうございます。
0763nobodyさん
2006/12/17(日) 13:50:17ID:???0764nobodyさん
2006/12/17(日) 13:52:21ID:ssFbcwFMそうです。
0766nobodyさん
2006/12/17(日) 14:00:11ID:irlLnY56北半球ではね。
こういう北半球中心視点は良くないと思う。
0768nobodyさん
2006/12/17(日) 14:41:40ID:ssFbcwFMjavascript使ったら簡単にできました。
サンクス子
0770nobodyさん
2006/12/17(日) 14:48:11ID:ssFbcwFM<input type="submit" onclick="javascript:history.back();" value="修正">
0771nobodyさん
2006/12/17(日) 15:38:59ID:???メインファイルからロジックをincludeしたら、
テンプレートつかわなくてもデザインがスッキリすると思うのですが、
どうでしょうか?
0772nobodyさん
2006/12/17(日) 15:42:37ID:???0773nobodyさん
2006/12/17(日) 15:44:37ID:???0774nobodyさん
2006/12/17(日) 15:59:14ID:8qXdAMYDwww.xxx.com/aaa.php?id=1&next=1
nextの1で処理を行っているのですが
リロードでも有効になってしまいます。
これを回避する方法などありますでしょうか。
submitからなら対策できるのですが、埋め込んだURLからは
どうしたら回避できるかわからず詰まっています。
0777nobodyさん
2006/12/17(日) 16:49:09ID:ttycNJ+pどのように書けばいいのでしょうか?
↓こんな感じなんですけど
$text = 12;
$hantei = file_exists($text.'.txt');//ここでエラーでます
0780nobodyさん
2006/12/17(日) 17:35:56ID:???それよりまず何てエラーが出てるのかくらい書こうよ
0782nobodyさん
2006/12/17(日) 17:57:37ID:ttycNJ+p0784nobodyさん
2006/12/17(日) 18:27:41ID:???ttp://posting.is.land.to/
0785nobodyさん
2006/12/17(日) 18:49:28ID:???"<a=""yahoo.co.jo"" title=""トップ,ヤフー"">"となってしまうのですが、これをPHPで読み込むときに、外の"を外して、””を”に変換するにはどうしたらいいでしょうか?
それと勝手に””が就かないようにするにはどうしたらよいかアドバイス頂けないでしょうか?
0786nobodyさん
2006/12/17(日) 18:59:05ID:???php.iniの設定をたしかめろ。入門者向け教本にたいてい書いてある設定外の項目いじっただろ?
0788nobodyさん
2006/12/17(日) 20:19:48ID:???0789nobodyさん
2006/12/17(日) 20:31:33ID:a5bdt7ulかわりにセッションを使うほうがいいですか?
セッションの場合、クッキーとURL埋め合わせがありますけど、
firefox等のブラウザの設定でセッションを受け入れない場合、
クッキーもURLも無効となってしまうのでしょうか?
あと、セッションはサーバにゴミがたまりますよね?
そのゴミは勝手に削除してくれますか?たとえばクッキーに時間制限があるような感じで。
どなたかお願いいたします。
0790735
2006/12/17(日) 20:48:39ID:EKx6N1fNググったところでは、mysql/mysqliエクステンションが組み込まれていないとのこと。
php_mysql.dll、php_mysqli.dllがあり、extension=php_mbstring.dllもコメントアウトしています。
その他何か原因があるようなのですが、思いつきもしません。
0791nobodyさん
2006/12/17(日) 20:52:22ID:???0792735
2006/12/17(日) 20:55:58ID:EKx6N1fNはい、Windowsです。
WindowsXP SP2
Apache 2.0.58
PHP 5.0.4
MySQL 3.23.58
2台PCがあり、片方は設定して動くのですが、
ノートパソコンの方がエラーが出る状態です。
0793nobodyさん
2006/12/17(日) 21:00:31ID:???phpinfoでMysqlの欄とか表示されてるかい?
dllファイルちゃんとあるよね?
0794735
2006/12/17(日) 21:01:18ID:EKx6N1fNつまり、php_mysqlを読み込んでいないということですよね・・・^^;
php_mysql.dllの位置がデフォルトのままなのですが、どこへコピーすれば良いのでしょうか?
0796785
2006/12/17(日) 21:05:23ID:???そうです。CSV保存の時に勝手に””がついてしまうのです。
保存の都度””を置換・削除すればいいのですが、結構な量がある上に、頻繁にデータを書き換えるので、いちいちするのは非常に面倒なのです。
>>788
有り難うございます。ただ、置き換えと削除の両方をしたいのです。
"<a〜 の部分は "を削除したいし、""は"に置き換えたい
皆さん、,や"があるCSVファイルを読み出すときはどうされてるのでしょう?
0797735
2006/12/17(日) 21:08:24ID:EKx6N1fNextensionのディレクトリパスを指定していなかったです。
Apacheを再起動しましたが、エラーは解決されずのままです・・・。
phpinfoでMysqlの欄を見たのですが、まだ表示されません。
0799nobodyさん
2006/12/17(日) 21:19:17ID:???0801nobodyさん
2006/12/17(日) 21:22:23ID:???ttp://jp.php.net/manual/ja/install.windows.extensions.php
0802735
2006/12/17(日) 21:23:56ID:EKx6N1fNあ・・・、全然違っていました・・・
php.iniの場所を変えるのじゃなくって、
パスを変更することは可能なのでしょうか?
0803nobodyさん
2006/12/17(日) 21:28:18ID:fhT0kY1aインストールしたソフトの実行出力の結果を取得したくてsystem関数を使ったのですが、
1とか2とかの数字しか返ってきません。具体的には、
<?php
$rtn = system("/usr/local/bin/lame", $retval);
echo "retval=$retval";
echo '<br>';
echo "rtn=$rtn";
?>
実行結果
retval=1
rtn=
となります。rtnには結果すら返ってきてません。
しかし、lsなどのシステムコマンドだときちんと結果が返ってきます。
ちなみにpassthru関数でも同じでした。
どうすれば結果を取得できるのでしょうか?
PHP 4.4.4 with Suhosin-Patch 0.9.5 (cgi-fcgi)
0804nobodyさん
2006/12/17(日) 21:32:01ID:???http://jp.php.net/manual/ja/install.windows.apache2.php
PHPIniDir
0805nobodyさん
2006/12/17(日) 21:38:08ID:???http://jp.php.net/manual/ja/function.popen.php
0806735
2006/12/17(日) 21:39:20ID:EKx6N1fN有難うございます、解決しました。
最初に設定できて余裕をもっていたのが間違いですね、
こんな初歩的なとこから間違えるとは・・・
お答えいただいた皆様、有難うございました
0807nobodyさん
2006/12/17(日) 21:58:04ID:???$result = mysql_query("SELECT * FROM account WHERE name = '$name'");
この場合は、name=$nameであればTRUEを返すということなのでしょうか。
name=$nameのとき、そのnameがある行を取得したいのですが、どのようにすれば良いのでしょうか?
0808nobodyさん
2006/12/17(日) 22:05:26ID:???ttp://us2.php.net/mysql_query
0809nobodyさん
2006/12/17(日) 22:07:20ID:???TRUE/FALSEを返すとかではなくて、リソースを返すのだ。マニュアルを見よ。
行を連想配列に格納するには mysql_fetch_arry。
0810nobodyさん
2006/12/17(日) 22:18:23ID:fhT0kY1aありがとうございました。
早速以下のように書いてみたのですが、何も出てきませんでした。
なぜかコンソール画面には出力されてきましたが…
<?php
$handle = popen("/usr/local/bin/lame", 'r');
if ($handle){
while (!feof($handle)){
$line = fgets($handle);
echo $line;
}
pclose($handle);
}
?>
0811nobodyさん
2006/12/17(日) 22:27:26ID:???echo $str1."<br />\n";
echo $str2."<br />\n";
}
$str1 = "ホゲホゲ";
$str2 = "あいうえお";
test($str1,$str2);
このように、functionに2つの関数を送るのはできないのでしょうか?
0812nobodyさん
2006/12/17(日) 22:29:07ID:???mysql_select_db($db);
mysql_query($sql);
を使うのは不可能でしょうか?
mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in
とエラーがでます;;
0816nobodyさん
2006/12/17(日) 23:01:56ID:1O1pcw5Yつまり $var["id"] = $_GET["id"] = $_POST["id"] = $_COOKIE["id"] ということ。
どのようにすれば効率良くできるのでしょうか?
0817nobodyさん
2006/12/17(日) 23:05:10ID:???0818nobodyさん
2006/12/17(日) 23:06:24ID:fhT0kY1a引数に --helpを渡したら出ました!
まさかエラー出力だとは…
ありがとうございました。
0819nobodyさん
2006/12/17(日) 23:08:32ID:???$hogehoge1 = $_POST['hogehoge1'];
$hogehoge2 = $_POST['hogehoge2'];
$hogehoge3 = $_POST['hogehoge3'];
$hogehoge4 = $_POST['hogehoge4'];
$hogehoge5 = $_POST['hogehoge5'];
これを、一括して$hogehoge[1]〜$hogehoge[7]
に格納する方法などはないのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています