【PHP】下らねぇ質問はここに書き込みやがれpart10
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/09/25(日) 02:03:45ID:nLUfPXhDここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
【PHP】くだらねぇ質問はここに書き込みやがれpart8
http://pc8.2ch.net/test/read.cgi/php/1123431535/
【PHP】くだらねぇ質問はここに書き込みやがれpart9
http://pc8.2ch.net/test/read.cgi/php/1125716012/
0134nobodyさん
2005/09/28(水) 10:15:01ID:???0137nobodyさん
2005/09/28(水) 10:43:06ID:???では、mysql_closeについて
「 持続的でないリンクはスクリプトの実行終了時に自動的に閉じられるの で、この関数は通常の場合必要ありません。」
と説明されています。
この関数が必要とされる「通常」でない場合とは、どのような場合でしょうか。
ヒントや手がかりでもお教えいただけましたら幸いです。
よろしくお願いします。
0138nobodyさん
2005/09/28(水) 10:57:23ID:???たとえば、DBから情報を取得してから、そのあとに長い処理が続く場合とか。
ほら、気持ち的に切っといたほうがいいだろ。
難しい話はしても分からんと思う。
0139nobodyさん
2005/09/28(水) 11:32:02ID:dxIsb4Ke1枚ずつというのは手間がかかるのでまとめて処理する方法があれば
教えてください。
0140nobodyさん
2005/09/28(水) 12:08:28ID:oH6eqvtcMail_mimePartを使いメールのエンコードをやってみました。
使ってみると、setTxtBodyで指定したメール本文が反映されずbodyの
値が入っていませんでした。
どなたかMail_mimePart::encode()の使い方、または参考になりそうなページを
ご存知の方いませんか?
0141nobodyさん
2005/09/28(水) 12:22:48ID:b9i0UmwQ自分はHoge.classなんですが。
0142nobodyさん
2005/09/28(水) 12:30:00ID:???エディタが拡張子で色分けとか判別する場合、.classだとJavaのソースとごっちゃになるから漏れは.class.phpにしてるけど。
まあフレームワークとか配布されてるコードでは.class.phpが一番よく見かける罠。
0143nobodyさん
2005/09/28(水) 12:33:39ID:???テキストとしてソース垂れ流しちゃう危険性もあるから、.phpで終わらせるのが普通。
*.inc.php
*.class.php
*.conf.php
とかかな。
0144nobodyさん
2005/09/28(水) 13:22:27ID:???0147nobodyさん
2005/09/28(水) 13:54:56ID:oiijkcifサーバーに負荷をかけなくてすむのでしょうか?
1、
echo"こん";
echo"にちわ";
2、
echo"こん".
"にちわ";
3、
$html .="こん";
$html .="にちわ";
echo $html;
4、
echo <<<EOD
こん
にちわ
EOD;
0148nobodyさん
2005/09/28(水) 14:11:10ID:???こんにちは
<?php
0149nobodyさん
2005/09/28(水) 14:57:24ID:oiijkcifありがとうございます
そちらの方向で行きます
0151150
2005/09/28(水) 17:13:12ID:???普通じゃんね。
あほだな俺。
スルーしてください(鬱
0152nobodyさん
2005/09/28(水) 18:19:45ID:????>
あほ
<?php
処理
?>
あほ
<?php
処理
?>
あほ
<?php
処理
?>
あほ
<?php
みたいな。
0153nobodyさん
2005/09/28(水) 19:16:22ID:???<?
echo"<input name='test' type='hidden' value='テスト'>";
?>
でも、echoなので書き出され、表示されます。
何か良い方法、書き方はありませんでしょうか?
0154nobodyさん
2005/09/28(水) 19:19:13ID:???0157nobodyさん
2005/09/28(水) 20:01:23ID:qeEepy5X変数に格納したいのですがどうすればいいでしょうか?
0158nobodyさん
2005/09/28(水) 20:25:26ID:???0159nobodyさん
2005/09/28(水) 20:56:33ID:???これだけ書いとけばヒントになるかな?
---included.php---
<?php
$string = 'テラワロス';
?>
--show.php--
<?php
include 'included.php';
echo $string; // “テラワロス”が出力される
?>
0160nobodyさん
2005/09/28(水) 21:35:42ID:???マッチしたらスクリプトを終了。しなかったらURLにリダイレクト。
というような機能のスクリプトを書いたのですが、「211.102.103.65」の
最後の二桁の数字(65)が変動するので変わるたびに新しくリストに
登録しなければいけません・・・
後ろ二桁の「65」がマッチしていなくても「211.102.103」の部分がマッチすれば
TRUEを返すようにしたいのですが、どのようにすればいいのでしょうか?
よろしくお願いします。
ソースは次にかきます↓
0161nobodyさん
2005/09/28(水) 21:36:30ID:???//許可IPリスト
$ip_list = array("211.102.103.65",
"216.102.103.65",
"208.102.103.65",
"201.102.103.65");
$url = "http://hoge.org"; //リダイレクトするURLを変数に代入
$get_ip = $_SERVER['REMOTE_ADDR']; //取得したIPアドレスを変数に代入
//IPアドレスのチェック
foreach ( $ip_list as $value ) {
if (ereg ($get_ip, $value) ) {
exit;
}
else {
header ( "Location: $url" );
}
}
?>
0162nobodyさん
2005/09/28(水) 21:39:04ID:???0163157
2005/09/28(水) 21:53:48ID:???phpファイルにはスクリプト以外にhtmlソースも混ざっていて、
それの出力結果を変数に入れるということです。
0166nobodyさん
2005/09/28(水) 22:50:38ID:???IPv6は扱えないけど
0167nobodyさん
2005/09/29(木) 01:35:01ID:???0168nobodyさん
2005/09/29(木) 02:38:30ID:???0169nobodyさん
2005/09/29(木) 03:39:41ID:???ob_start();
include('includefile.php');
$data = ob_get_contents();
ob_end_clean();
0170157
2005/09/29(木) 06:03:27ID:FSfI9Iafありがとうございました。
0171nobodyさん
2005/09/29(木) 10:06:58ID:M2gqALef無限ループしないのは何故ですか?
上の例では foo で発生したエラーに対してエラーハンドラ関数が適用"されない"のに対し、
下の例では var で発生したエラーに対してエラーハンドラ関数が適用"されます"。
ぶっちゃけこういう仕様のほうがプログラミングが楽ちんなんですけど
なんか仕組み的に納得いかないもので。
------------------------------------
function foo(){
$x = 1 / 0;
}
set_error_handler('foo');
$a = 1 / 0;
restore_error_handler();
------------------------------------
------------------------------------
function foo(){
echo 'ERROR';
}
function var(){
$x = 1 / 0;
}
set_error_handler('foo');
var();
restore_error_handler();
------------------------------------
0172nobodyさん
2005/09/29(木) 11:56:56ID:7Ojuf/BR性器表現できないなら、explodeで前3つ保存すれば?性器表現を勉強するんだな。ユーザーエージェントとホストで弾けばいいんジャマイカ?
0174nobodyさん
2005/09/29(木) 17:25:57ID:???php.iniまわりの話なんですが
0175nobodyさん
2005/09/29(木) 17:35:25ID:???GDライブラリを使って画像出力をしてます。
沢山の図形や線を様々な色を使って描画するのですが、
一定数以上の図形を出力すると、
図形そのものは表示されるのですが図形の色が途中から全て同じになります。
phpの初期設定周りが原因なのでしょうか。解決出来ず困っています。
0176nobodyさん
2005/09/29(木) 17:52:56ID:???0177nobodyさん
2005/09/29(木) 18:07:21ID:???それも疑ったんですが、結構積んでるのでその心配はないかと。
CGIとして動かしてるので、
apacheとか別の所で引っかかってるんでしょうか...。
0178nobodyさん
2005/09/29(木) 18:35:39ID:???メモリ積んでてもphp.iniで制限してたら意味なし
memory_limit = 500M
とかやっとけ
0179nobodyさん
2005/09/29(木) 18:48:29ID:???くだらない質問じゃないから、も少し詳しい状況と
実際に使ってる環境とスクリプトソースをMLに投げたら?
ここでもいいけど追試してくれる母数が大きいところで調べた方がいいと思う。
0180nobodyさん
2005/09/29(木) 18:48:39ID:6Acw6xK3$val_tmp2 = 'ポストする文字列
項目1(タブ)項目2
111(タブ)222';
$val_tmp2 = urlencode($val_tmp2);
$val_length = strlen( $val_tmp2 );
$val_tmp1 ='POST /recive.cgi HTTP/1.0
Content-Type: text/csv
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Host: hoge.hage.com
content-length:' . $val_length';
$val_out = $val_tmp1 . "\n\n" . $val_tmp2;
$val_sock = fsockopen( 'host_name', 80, $val_error_no, $val_error_msg, 120 );
if( $val_sock == false ){
print "bom1<BR>\n";
exit( 1 );
}
$val_ret = fwrite( $val_sock, $val_out );
fclose( $val_sock );
としたのですが、どうしてもval_tmp2の値が受け側で取得できません(それ以外はOKでした)
どのようにしたら取得できるでしょうか?
0182nobodyさん
2005/09/29(木) 19:01:00ID:???> $val_out = $val_tmp1 . "\n\n" . $val_tmp2;
ここの\n\nでHTTPヘッダが終了してるんじゃないの?
0183nobodyさん
2005/09/29(木) 19:05:31ID:???PHPで受け取るならname=value&name1=value1の形式で
Content-type: application/x-www-urlencoded
がないと$_POSTには入らない
で$_POSTになければ$HTTP_RAW_POST_DATAを見てみたらあるかも
0184nobodyさん
2005/09/29(木) 19:54:27ID:???だった
0185180
2005/09/29(木) 19:58:12ID:???ありがとうございます。
しかしダメでした…
調べたところ、STDINには入っているので、最悪そちらを使えばいいかなとも思っています。
しかし正常に動かないのは癪なので、もしわかる方がいたら教えてください。
0186nobodyさん
2005/09/29(木) 20:14:21ID:???reciev.cgiはPHPなのか
PHPならContent-typeがapplication/x-www-form-urlencodedかmultipart/formdata以外のときは$HTTP_RAW_POST_DATAにPOSTデータが入る。
application/x-www-form-urlencodedかmultipart/formdataのときはその仕様に合ったデータじゃないとダメ
Perlなら何も考えずSTDINから読み込めばいい
0187180
2005/09/29(木) 21:10:24ID:???失礼しました、中身はphpです。
で、cgiとして動かしたところ、HTTP_RAW_POST_DATAがどうしてもとれませんでした。
cgiでは無く、phpとして動かすとなんの問題も無く取れたのですが…。
もしかしたらサーバの設定とかそういう話なのかな、と思ったのですが、
ちょっと今のところわからないので、とりあえず保留にしました。
しかしどうにかデータの取得自体は出来たので、なんとかなりそうです。
ありがとうございました!
0188nobodyさん
2005/09/29(木) 22:33:47ID:???sample.phpに
switch ($_GET['id']) {
case "1" : $sql="WHERE id=1";break;
case "2" : $sql="WHERE id=2";break;
case "3" : $sql="WHERE id=3";break;
default : $sql="";
と記述してあるとします。
この時、ブラウザからhttp://〜/sample.php?id=2と入力すると、
idが2のデータが出力されますよね。
上記の例の様に3件程度ならcase文でも構わないのですが、
仮に300件とかある場合、case文で300行書くのは非効率の様に思えます。
ここのidの部分を動的に変更する事は出来るのでしょうか?
例えば
if($_GET['id']){ $sql="WHERE shop_id=$_GET['id']";}
みたいな感じで、受け取ったidをWHEREで使う様なやり方です。
ちなみにこのまま命令文は、エラーがあるらしく何も表示されませんでした・・・。
PHP Version 4.3.10、MySQL 4.0.20という環境です。
どうか宜しくお願いします。
0190nobodyさん
2005/09/29(木) 23:01:56ID:????id= の後ろにセミコロン入れられると、悪い人の任意のSQLをさしこまれちゃうよ。
UPDATEとかDELETEとか。
こうしな
$sql = "WHERE shop_id=" . (int)(@ $_GET['id']);
まあゼロをどう扱うかは自分で調節して。
0191188
2005/09/29(木) 23:02:17ID:???早速のお答え、どうもありがとうございます。
ちゃんとidが動的に切り替わり、表示される様になりました。
・・・ですが、「とっても危険」という言葉が非常に気になっています・・・。
何がどういう点で危険なのか教えて頂けないでしょうか?
また、危険にならない代替案ってあるんでしょうか?
質問ばかりでスイマセン・・・。
0193nobodyさん
2005/09/29(木) 23:51:19ID:???$_GETには任意の文字列を入れることが出来るから、「;」で区切って
次のSQL文を自由に入れられてしまう。そうなったら編集も削除も思いのまま。
だからSQL文に渡す場合は何かしらのフィルタリングを自分ですることになる。
(今回の場合は数字以外の文字列があったら消すとかエラーで弾くとか)
この辺は自分で勉強しないと身に付かない。勉強が嫌なら下手に触らない事。
0194nobodyさん
2005/09/29(木) 23:59:10ID:???掲示板や、メールフォームですぐに送信させずに
入力画面→確認画面→送信完了画面という3ページの構成だったとします
で、確認画面でやり直しをしたい時、ブラウザの戻るもしくはhistory.back関数で
戻ったときに、フォームに入力した内容を保持させるためにはどうすればいいんでしょうか?
0196nobodyさん
2005/09/30(金) 00:07:15ID:???なるほど。
こちら側でキャッシュさせるようにすれば、少しは確実になるってことになるってことですかね。
session や、hiddenか何かでやるかと思ってました。
ありがとうございました(・∀・)
0197nobodyさん
2005/09/30(金) 01:04:12ID:???SQLインジェクション でググると色々出てくるので、質問よりそっち見たほうが早い
・・・確か価格.comの件ってこれだったよな?あの件以来価格.comに登録してあった
アドレスにspamが来るんだが・・・
>>196
どうしてもやりたいなら「前の画面に戻る」リンクを作り、そこで戻させるように
するしかない。それでもブラウザの戻るで戻られたら意味がないけど。
そういやFirefoxだとブラウザの戻るで戻っても残ってたな・・・
0198nobodyさん
2005/09/30(金) 01:37:08ID:???俺もspam来てる。
そりゃ、0day-attackとかなら許せるけど、SQLインジェクションとか・・もう馬鹿かと・・・。
きっと他にも大量に穴があったんだろうなぁ。
0199nobodyさん
2005/09/30(金) 02:17:32ID:???逆だと思うぞ。
確実にやりたいなら、クライアントの挙動に期待などせずに(つまりキャッシュなぞ”させない”)
サーバ側で言うとおりセッション何ぞで管理するこった。
0200nobodyさん
2005/09/30(金) 07:36:44ID:???とにかくGET POST COOKIEは入力値をチェックしてから使え
if (strstr($_GET['id'], ";")) { echo "氏ねバカアホ"; exit; }
elseif (!is_numeric($_GET['id'])) { echo "いたずらはいやずら"; exit; }
0201nobodyさん
2005/09/30(金) 08:33:55ID:FAEPRLcc0202nobodyさん
2005/09/30(金) 09:11:32ID:???0203nobodyさん
2005/09/30(金) 10:40:52ID:???お前とりあえずPHPの参考書をせめて2〜3冊は読んでみろよ。
基礎の基礎を知らずにやってても上達しない。
セキュリティ対策云々とかの前に、idに変数を代入するというような
プログラミングにおける超基本的な思考が出来てない。
この調子じゃ配列なんか絶望的だな。
0205名無したん(;´Д`)ハァハァ
2005/09/30(金) 13:37:42ID:kjDGUNft[a-zA-Z0-9_] と等価という認識で問題ありませんか?
0206nobodyさん
2005/09/30(金) 13:43:35ID:???0207nobodyさん
2005/09/30(金) 13:46:02ID:???0208nobodyさん
2005/09/30(金) 13:47:11ID:???0209nobodyさん
2005/09/30(金) 13:49:21ID:???0210188
2005/09/30(金) 14:48:49ID:???>>197
>>200
>>203
大勢の方からのアドバイス、本当に感謝しております。
一度基本から、じっくりと勉強し直してみる事にします。
さっそく今日辺り、
「基礎PHP」か「はじめてのPHP言語プログラミング入門」でも
買ってこようかと思います。
親身なご指導、本当にありがとうございました。
0211nobodyさん
2005/09/30(金) 15:03:14ID:???どうでもいいけど、最近ネット上でもリアルでも「少なからず」と「少なくとも」の意味をごっちゃに使ってる香具師を少なからず見かけるな。
「少なからず」は少なくはないって意味なんだが。
まあ言葉の意味なんて時代と共にうつりかわっていくのかね。
スレ違いな話でスマソ
0212軟式PHP
2005/09/30(金) 15:54:03ID:???0213nobodyさん
2005/09/30(金) 15:54:16ID:???0214nobodyさん
2005/09/30(金) 16:00:18ID:0T6o3fdx自分でチェックするしかありませんか?
0215軟式PHP
2005/09/30(金) 16:02:04ID:???時代遅れってこともないけど、環境によっては仕方ないんじゃないのかな。
データベースが使える環境なら、絶対使ったほうが開発は楽。
シリアライズを使って作るのもありじゃないかなぁと思うけど
ログが多くなってきた場合のアンシリアライズの速度や、
過去ログ管理が面倒さが気になるけどやったことないので分からない。
0216nobodyさん
2005/09/30(金) 16:06:56ID:???おまいさんには↓の本がオススメだ。PHPに限らずプログラムを理解しやすい。
ttp://www.amazon.co.jp/exec/obidos/ASIN/4798006696/
ただし今は注文できないみたい。絶版か??
0218nobodyさん
2005/09/30(金) 16:28:17ID:???ttps://www.honya-town.co.jp/servlet/jp.co.honya_town.p3.HSsearchServlet?ipg=1&iqm=2&isc=999999&ici=ZB01&ibo=&itm=0&ib1=1&ib2=2&ib3=4&ib4=8&ipu=&iop=0&iau=&ioa=0&isy=&ism=&iey=&iem=&ifr=&ifm=0&iol=20&ipr=0&ibt=0&iis=4798006696&x=46&y=20
絶版ではないらしい。品切れ扱い。
0219nobodyさん
2005/09/30(金) 17:04:56ID:???>少なからずあるといえばあるが、可能性は限りなく少ない
これを211の言うように置き換えると、
少なくはないがあるといえばある
あれ、何処が問題なんだ?
やばい俺日本人じゃないのかも。
0221nobodyさん
2005/09/30(金) 20:12:51ID:???<?php
$date = "<li>aaaaaaaa</li><li>bbbbbbbb</li><li>cccccccc</li>";
if(eregi("/<li>.*?<\/li>/",$date,$ary)){
print "$ary[0]";
}
?>
0223nobodyさん
2005/09/30(金) 20:31:23ID:???http://php.s3.to/man/function.eregi.html
マニュアル
「/」イラネ
で.*?じゃなくて(.*)?
最低エラーメッセージくらい書きたまい。
0225nobodyさん
2005/09/30(金) 20:41:59ID:???ありがとうございます。エラーは解決できました。
でも、【<li>aaaaaaaa</li>】だけとりたいんです、
最短マッチができません。
0227nobodyさん
2005/09/30(金) 21:26:13ID:???正規表現が苦手ならsubstr辺りで処理すればいい。
正規表現を勉強したくてやっているのなら丸投げするな。
0228nobodyさん
2005/09/30(金) 22:09:27ID:???<?php
$number = array ("1","2","3","4","5","6","7","8","9");
$alpha = array ("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o",
"p","q","r","s","t","u","v","w","x","y","z");
shuffle ($number);
shuffle ($alpha);
echo ("<br />");
foreach ($number as $value_number){
echo ($value_number);
}
echo ("<br />"."<br />");
foreach ($alpha as $value_alpha){
echo ($value_alpha);
}
?>
0229nobodyさん
2005/09/30(金) 22:22:02ID:???何がやりたいのかイマイチ分からんが・・・
<?php
echo '<br /'>',
str_shuffle('123456789'),
'<br /'>', '<br /'>',
str_shuffle('abcdefghijklmnopqrstuvwxyz');
?>
0230nobodyさん
2005/09/30(金) 22:44:23ID:???ありがとうございます。
str_shuffle関数は下記のようにまずシャッフルして、それから出力といった使い方はできないんですね(´・ω・`)
<?php
$alpha = "abcdefghijklmnopqrstuvwxyz";
str_shuffle($alpha);
echo ($alpha);
?>
0231nobodyさん
2005/09/30(金) 23:02:58ID:???■ このスレッドは過去ログ倉庫に格納されています