【PHP】下らねぇ質問はここに書き込みやがれpart16
1 :
nobodyさん :
2006/02/05(日) 22:35:34 ID:sf8bx52D
2 :
nobodyさん :2006/02/05(日) 22:37:11 ID:sf8bx52D
やった!初めて1000とった!!!!!
4 :
前スレ993 :2006/02/05(日) 22:48:34 ID:???
>>995 申し訳ない。
OSはXPです。
設定ですが・・・
拡張子は「.php」で実行プログラムは「c:\php\php-cgi.exe」です。
他にこれといって設定をいじっているわけではないのです。
ためしにAN HTTPDの設定を「c:\php\php.exe」で<?php phpinfo(); ?>を実行してみたら、
テキストを返してきました。こちらを実行する分には問題ないみたいです。
あと、04WebServerで「php-cgi %FilePath% %Query%」でやってみましたが、
同じように実行できませんでした。
php.iniあたりがかかわってくるのでしょうか。
コマンドラインで実行できるだけあって不思議で仕方ありません。
>>3 俺の1000をとりやがって!
お詫びにおっぱいうp汁
>>4 AN-HTTPDやPHPのバージョンとか、その辺。
7 :
前スレ993 :2006/02/05(日) 22:57:14 ID:???
>>6 PHP:5.1.2
AN-HTTPD:1.42n
です。
気になったんでもう一度php.ini覗いてみます。
>>7 php.iniを覗くよりももう一度入れなおした方が楽じゃないかな。
AN HTTPDはPHPの実験に入れたの?
それとも前々からAN HTTPDは使っててPHP入れたらできなかったって事?
暇があればApacheで試してみてみ。
今の段階だとPHPの設定かAN HTTPDの設定か分からんけどApacheでも試せばより厳密に特定できる。
何かググって見たりマニュアル見たりしたけどいまいちピンと来ないんですけど、 PHPだけの問題じゃないんだけどサーバ間通信って一体何なのでしょうか? FORMとは違うものなのでしょうか?
10 :
前スレ993 :2006/02/05(日) 23:27:46 ID:???
php.ini覗いてみたら、「doc_root」がそのまま(Apacheのドキュメントルート)になってました。
AN HTTPDのドキュメントルートにしたら正常に動作しました。
たかが「doc_root」の設定でも、重要なんだな。
いい勉強になりました。
つまらない質問に答えてくれてdクス
>>995 >>6 >>8
11 :
シャットダウン2世@初心者 :2006/02/06(月) 00:04:49 ID:XTfmVf59
ALL ABOUTというサイトのデータベースのページ
ttp://allabout.co.jp/career/database/ を見ながらwin2000+apache2.0.55+PHP5.1.1+Mysql5.0.18で 接続テストしてるんですが、「test」というデータベースに接続しようとすると、
Warning: mysql_connect() [function.mysql-connect]:
Can't connect to MySQL server on 'localhost' (10061)
in C:\Program Files\Apache Group\Apache2\htdocs\mytest1.php on line 4
can not connect db
という文が出て接続できません。
ソースはホームページそのままコピペで
<?
//DBへ接続開始 サーバー名--localhost ユーザー名--root パスワード--root
$dbHandle = mysql_connect("localhost","root","a");
//DBの接続に失敗した場合はエラー表示をおこない処理中断
if ($dbHandle == False) { print ("can not connect db\n"); exit; }
//db名 test
$db = "test";
(中略 HTML文を出力する文句が書いてあります)
//結果レコードをメモリから開放
mysql_free_result($rs);
//DBへの接続を切断
mysql_close($dbHandle); ?>
ですが、パスは「a」にしてたのでこれに変えてみたけどダメです。
何がおかしいのでしょうか。 ちなみに、apacheの
「あなたもくろみ通りに余裕でこのページが見えているでしょうか?」
は出てます。phpinfo()も見ることが出来ます。
mysqlでデータベース「test」も作ってあります。
問答無用で403へ飛ばしたいんです。 header("HTTP/1.1 403 Forbidden") とやったところ、確かに403とヘッダーに出力されたのですが、 鯖が規定する403へ飛んでくれません。 どうすれば規定の403ページへ飛んでくれますか?
>>11 MySQLのユーザ名とパスワードの組み合わせが間違ってるとしか思えないが…
phpでCのようなマクロをさせたいのですが、どのようにしたらよいでしょうか? Cでのソースは #define foge(a) (((a)) ? (TRUE) : (FALSE)) int k = foge (-1); という感じです。 (((a)) ? (TRUE) : (FALSE)) については三項演算子がPHPでも扱えるので実装できるのですが、 foge(a)の部分が使えると助かります。
>>15 素直に関数にしちゃえばいいかと。
Cと違ってdefineにプリプロセッサによる効率改善の効果があるわけでもなし。
>>16 やっぱりそうですよね。
スーパーグローバル変数の変数があればそれを返し、
何も無ければ""と空を返すというのを作りたかったのですが、関数にしました。
function ischeck ($a){return ((isset($_REQUEST[$a]))?$_REQUEST[$a]:"");
$test = ischeck ('test');
function ischeck ($a) {global $$a;((isset($_REQUEST[$a]))?$$a=$_REQUEST[$a]:"");} $test = ischeck ('test'); 随分と行儀の悪いコーディングをしてしまった…
まるでbrainf*ckだな、碇よ
20 :
9 :2006/02/06(月) 01:22:28 ID:???
すいません。お願いします('A`) サーバ間通信をするには何か特別な関数とか必要なのですか? イメージはなんとなく掴めて来たのですが実装方法がなんとも・・・
>>13 >鯖が規定する403へ飛んでくれません。
4xxで飛ぶ?headerでHTTPのレスポンスを出しているのなら
エラーのコンテンツを提供するのは、そのスクリプト自身ではないのか。
Apacheが出してる403のコンテンツと同じものを出したいのなら
ApacheのErrorDocumentとPHPスクリプトのエラー出力内容を同じにする。
>>20 その「サーバ間通信」とやらにTCP/IPを使うのならば
基本的にはsocket関数を使う。
24 :
20 :2006/02/06(月) 01:54:47 ID:???
>>22 はい、HTTPでの通信を、って感じです。
SOCKETって確かLinux上のPHPとかならコンパイルのときにコンフィギュアで指定しないと
使えないんですよね?
>>23 いや、行ったことないです。
--enable-socketsだね。 PHP書籍スレでよく似た流れを見たから同じ人なのかな?と思ってね。 >ソケット関数を使ったツールを作りたいんだけど、いまいち使い方がわからん >参考になる本とかある?青マンモスに詳しく載ってる? って質問に、「RFC読むかC/C++のソケットプログラミング本を読むのがいいよ」みたいな回答を
26 :
20 :2006/02/06(月) 02:08:56 ID:???
>>25 そうでしたか。
すんません、俺まだまだそんなレベルじゃないっす('A`)
AサーバからBサーバに何かパラメータを渡したい時はやっぱりフォームとは違う
処理とか関数が必要なんですよね?それこそSOCKETとか。
俺も明日本探しに行ってきます。
>>24 --enable-socketsの指定は必要だね。
多くの環境で有効にされてるような気はするけど。
>>26 そのくらいの用途ならわざわざソケット関数使わなくてもいいよ。
(fsockopen使ったりもするけど)
PEAR::HTTP_Clientとか使ってはどうかな?
29 :
24 :2006/02/06(月) 02:18:19 ID:???
リロード…orz
Bサーバーに値を渡すだけなら単にBサーバーに用意したPHPのページを
GETで呼び出すだけでもいいんじゃないの?
どんなデータをどんなタイミングで渡そうとしてるか知らないけど。
allow_url_fopenを有効にしてfile("
http://Bサーバー/受信ページ?データ ");でよさげ。
30 :
20 :2006/02/06(月) 02:31:36 ID:???
>>24 >>25 >>26 ありがとうございます!!
何を渡して何を貰うのか等は理解しているのですが、
今一「どうやってデータを渡せば良いのか」が解って
いませんでした。
何か実装方法はいろいろありそうですね・・・
皆さんの意見を参考にしていろいろいじって見ます!
31 :
20 :2006/02/06(月) 02:32:23 ID:???
32 :
27=29 :2006/02/06(月) 02:34:10 ID:???
ごめんよ。俺が慌てて名前間違ったな
そこ使えないからもうリンク張らなくていいよ
エクスプローラからドラッグアンドドロップでファイルをアップロードできるようにしたいのですが、 ActiveXを組み合わせる以外に方法はありませんか?
>>35 ドラッグ&ドロップを認識できるのってActiveX以外にあるの?
テキストファイルの最後の行だけ必要で、 それを読み込む効率的な方法はどうでしょうか。
PHPでフォームを飛ばしたときisset($_POST['hoge']){} って感じで処理を区別してるのですが エンターキーを無効して上のように処理する方法はないでしょうか? JSの方になるのでしょうか?スレ違いならすいません。
テキストファイルの分量にもよるけど、バカみたいに巨大なログファイルが相手だと 結局 $line = `tail -1 $filename`; が1番速くて省メモリだった。という経験はある。
>>38 うん。htmlの書き方と簡単なJavascripで補完する形になるよ。
>>39 なるほど…
普通に上から読んでいくか、そういう方法かということなんでしょうかね。
43 :
前スレ931 :2006/02/06(月) 11:39:05 ID:???
44 :
43 :2006/02/06(月) 11:39:53 ID:???
下らない質問で悪いんだけど、 そのアイコンってどう使うの? 何処に設定するの? 教えてちょ。
エクスプローラのフォルダオプション - ファイルタイプの設定でアイコン変更するのだろう。
すみません、もしかしたら板違いですらあるかもしれないですが。。 フリーメールってありますよね、@melu.jpとかの。 ああいうフリーメール発行サイトの運営をしようと思ったらどういう 知識が必要ですか? かなり恥ずかしい質問ですが。。 レンタルサーバ(さくら)とかでも出来るものでしょうか?
無料なら問題なさそう。 さくらサーバーでメルアドを作るの?それは無理じゃないかなぁ。 自宅鯖でやるならまだしも。 というか、板違い。 何処の板が適正か俺には判断できないが。
>>47 サーバを管理できるだけの技術と権限が必要。
共有サーバでは権限が制限されるので、ほぼ無理。
メアドを無限に発行してくれるサービスであればできなくもないけど、
不特定多数による利用は規約で認められていないと思う。
専用サーバを借りるか、自鯖を建てるのが妥当かと。
詳しくはサーバ板で訊いた方がいいと思われ。
>>47 PHPで出来たWebメール機能も持ったフリーメール管理ツールがあるので
PHPの話に持っていけなくもないが、基本的にはスレ違い・板違い。
収容したドメインに対してメールアカウント追加のI/Fを
提供してるところも少ない(でも少ないけどあるよ)ので、
結局はサーバの管理権限を確保することが必要。
53 :
47 :2006/02/06(月) 17:31:22 ID:???
皆さんありがとうございました そうですかー、自宅サーバがあったほうがいいんですね… プログラムの練習のためにも必要だろうし でも今使ってるパソより練習サーバ用に買うマシンの方が 性能よくなりそうなんですよね、今使ってるの古いからw なんか、いい方法探してみます ありがとうございました!
>>42 むかーし、某所でCで最高速のtailコマンドを実装するコンテストみたいのがあったけど、
fseekで後ろから1024バイト単位など適当なサイズで読み込みかけてって、
中身に改行コードが見つかればそこから末尾の行を抽出する、みたいな手法があったよ。
まともなtailコマンドだと1行の長さも抽出する行数も不定なんでチューニングに
かなり神経使うロジックを組んでたけど、大体似たような長さの行ばかりで
しかも抽出対象が1行だけなら簡単なロジックで高速に抜き出せると思う。
メールだけのホスティングサーバとかって結構安くあるんじゃない? 自分で鯖を一から実装したいってのなら別だけど。
56 :
nobodyさん :2006/02/06(月) 17:44:20 ID:/04IpGBt
ファイルを検索するfindfirstみたいな関数ありますか?
>>55 契約者が用意されたコンパネなどを使って手動でアカウントを
管理するのはあるけど、巷のフリーメールのように第三者が
勝手に追加削除できるようなものは極少ない。
フリーメールにありがちなSPAMの温床になるから。
契約者が用意されたコンパネを叩く中間的なスクリプトを
書いて第三者に提供すればいいのだけどね。
別のphpファイルの中の関数を呼ぶ方法を教えてください
59 :
nobodyさん :2006/02/06(月) 18:19:54 ID:nFVQbOKx
include
>>58 その別ファイルとやらを require_once すれば準備は出来てる。
これでワカランならマニュアル見ろ。全然マニュアル見ないで質問してるだろオマエ。
>>58 include
include_once
require
require_once
違いはマニュアル嫁
include("aaa.php"); とすると、エラーつうかわー人具がでるんですよね
ふ〜ん
>>62 どうせ、そのaaa.phpが間違ってんだろ。
エスパー光臨キボンって言いたいのか?
いや合ってるわ。 つか、include("aaa.php");は徹ようになったんですが include("aaa.php?mode=aa");とかするとまた同じエラーがでるんですよねこれ なんか、そのファイルが無いいたいなエラーなんですけどね
66 :
nobodyさん :2006/02/06(月) 19:17:06 ID:yVSQC/2I
<?php header("Content-Type: text/html; charset=utf-8"); header("Content-Style-Type: text/css; charset=utf-8"); header("Content-Script-Type: text/javascript; charset=utf-8"); ?> [06-Feb-2006 19:07:14] PHP Warning: Cannot modify header information - headers already sent by (output started at /home/user/www/index.php:1) in /home/user/www/http-header.inc on line 4 このようなエラーが出てしまいます。 どうすれば良いでしょうか?
67 :
nobodyさん :2006/02/06(月) 19:24:26 ID:BYKAG910
>
>>65 例えばccc.phpでaaa.phpを読み込んでるなら、aaa.phpへの引数を
aaa.php?mode=aaとするのではなく、ccc.php?mode=aaとするのはどうだろうか?
>>66 ソースの<? ?>の外に、無駄にスペースとか改行とか入ってない?
>>65 includeとかではファイルをそのまま読み込むだけで実行はしないので、?〜のパラメータは無意味な上に
それくっついたファイル名として扱われるので、当然そんなファイルは存在しないことになる。
だからマニュアル読めって。 全然マニュアル見ないで質問してるだろオマエ
>>65 おいおい、そんな事やったらエラー出て当たり前だろうが。マニュアル嫁よ('A`)
74 :
nobodyさん :2006/02/06(月) 19:42:51 ID:yVSQC/2I
>>68 すみません、間違えました。
<?php
if (isset($_SERVER["HTTP_ACCEPT"])) {
$HA = explode(",", $_SERVER["HTTP_ACCEPT"]);
if (in_array("application/xhtml+xml", $HA)) {
header("Content-Type: application/xhtml+xml; charset=utf-8");
} else {
header("Content-Type: text/html; charset=utf-8");
}
} else {
header("Content-Type: text/html; charset=utf-8");
}
header("Content-Style-Type: text/css; charset=utf-8");
header("Content-Script-Type: text/javascript; charset=utf-8");
?>
これで、5・12・13行で
>>66 のようなエラーが出ます。
しかも text/htmlが送られてくるし…
BOMって知ってる?
>>74 2行目よりさらに前で自動的にtext/htmlが送られてしまってるんだろ
>>75 うちの近くにあるCDとかゲームとか色々売ってるトコロか。
一回質問したら名前欄に数字入れてくれなきゃ どれが質問者か分からない俺逆エスパー
つかエラー(じゃなくてワーニング)が出た要因は >headers already sent であると指摘しているのだが
前すれ
>>997 返事遅れてすまないが、アイコンサンクス。
公式デザインよりぜんぜんいいな。早速変えました
マニュアル嫁しかいわないやつは本スレに引きこもってればいいと思う。 マニュアルもロクに読めないやつらが質問するのがくだ質だろ。
まぁ、殆どの質問は「マニュアル嫁」で解決するからねぇ。
>>82 マニュアル嫁って言ってるのを横目に、フォロー入れてやればいいんじゃね?
85 :
68 :2006/02/07(火) 00:10:07 ID:???
>>74 コードが変わってもアドバイスは同じ。
いきなりそのファイルにアクセスして
そのエラー表示なら
余計な空白、改行などが入っているのだろうと思われる。
関西弁変換プログラムをつくろうと摸索中です。 <? function kansai($text){ $text=str_replace("ありがとうございました","おおきに",$text); } ?> 上記の内容のosaka.incというファイルを作成し 外部ファイルからosaka.incをrequire_once print(kansai($text)) とやると 中に入っていたはずの文字列が全て消えてしまいます。 どこがおかしいのでしょうか?使う関数が間違っているのでしょうか?
87 :
nobodyさん :2006/02/07(火) 01:17:12 ID:vK7c16Ac
88 :
A子 :2006/02/07(火) 02:06:08 ID:Ru+YG/77
タイトルに甘えて下らない質問させて頂きます。 xamppを導入したら、今まで動いていたソースが動かなくなりました。 具体的な不具合は、掲示板の投稿ボタンを押しても登録されませんし、 表示の更新も行われません。 おそらくクライアントよりサーバーへデータが送信されていないと思われます。 原因と推測される設定ファイルなどをお教えして頂ければ嬉しく思います。 質問に不備がありましたら再度投稿させて頂きます。 よろしくお願いします。
89 :
A子 :2006/02/07(火) 02:09:29 ID:Ru+YG/77
追記: データベースへの接続は成功しています。 コンソールよりテーブルに対してはデータを追加できます。
正常に動作した前の環境と、XAMPPで設定ファイルを見比べろ。 前の環境とやらがレン鯖とかで設定ファイルが見れないなら、phpinfoでも可。 この先はエスパーに任せた
>>88 register_globals = On
92 :
A子 :2006/02/07(火) 02:40:27 ID:Ru+YG/77
>91さん Onと設定されています。
>>86 function kansai(&$text)か、return $textじゃないの?
文字列の中に指定文字がいくつあるかを返す関数を教えてください
substr_count
>>96 激しく有難う御座います。
まさしくそれを求めていました。
フォームで入力したデータを配列の代わりにしたいと思っています。 趣味[ ](変数はhobby)というテキストボックスに[野球,漫画,旅行]と入れたとします。 結果表示のプログラムで $kekka=array($hobby); print"$kekka[0]"; と記載したら、「野球」が出ると思ったのですが、そのまま「野球,漫画,旅行」とでます。 どうすれば配列として$hobbyのデータを扱う事が出来るのでしょうか?
99 :
nobodyさん :2006/02/07(火) 16:31:59 ID:W5Ufji/6
FreeBSD5.3,Apache1.3なのですが、 あるサブドメイン配下の「*.php」はPHP4とみなし、 あるサブドメイン配下の「*.php」はPHP5とみなすようにって、 できますか? できるとしたら、どうすればよいのでしょうか? よろしくお願いいたします
>>99 それぞれのドメインを別のサーバーに割り振るようにDNSを設定しちゃって、
別々のマシンで動かしちゃうとかはダメ?
103 :
99 :2006/02/07(火) 17:06:24 ID:???
>>102 ・・・・・・・あ・・・そうか・・・ありがとうございます
104 :
99 :2006/02/07(火) 17:14:43 ID:???
ふときづいたのですが、 php4とphp5がみにいくphp.iniを別個に用意することはできないでしょうか?
>>104 PHP5ならhttpd.confにPHPIniDirで指定できる。
>>104 PHPのコンパイル時にかっちり指定してもいいし、
CGI版なら普通な設定ならば、違うものを読みにいくでしょ?
SQLiteで聞けと言われました ここでいいのか判らないけど、質問します 現在ロリポップでmovable type(SQLite)を運営していますが さくらのプレミアムプランへの移行を考えています この場合、例えば設定を書き換えた上で ダウンロードしたファイルをそのまま丸ごとアップして パーミッションさえ設定すればデータは復旧できるのでしょうか? それとも、インストールから一通りの手順を踏む必要があるのでしょうか
108 :
nobodyさん :2006/02/07(火) 18:44:11 ID:z2Ed5501
ぐぐっても出てこないのですが、mail関数で送信する 簡単なメール送信フォームを作成したのですが、メール送信後に 511 Headers specify no receipients. というエラーメッセージが出ます。 mb_language("ja"); mb_internal_encoding("sjis"); も指定してます。どうしたら出ないように出来るのでしょうか?
>>109 108がダウソ板ってのはちょっと違う希ガス
>>107 DB板つうよりも、ブログ板のMTスレだな。
>>110 そのメール内容は送信相手にちゃんと届いてますか?
そのエラー訳したら
「ヘッダーは受取人を全く指定しません」
ってなったけど。あとreceipientsではなくrecipientsだと思う
114 :
nobodyさん :2006/02/07(火) 21:25:39 ID:QxUNaPeI
preg_replaceで test/&test2/&test3/& という文字列から&の直前のスラッシュのみをすべて取り除きたいのですが 正規表現に詳しい方がいたらやり方を教えてください。
115 :
nobodyさん :2006/02/07(火) 21:25:43 ID:xKyeolaW
既出かもしれませんが、お分かりの方がいたら教えて下さい。 methodがPOSTになっているフォームの内容をPHPで送信したいんですが、どうやれば良いんでしょうか? 例えば、ユーザIDとパスワードを求めて来るページに、PHPで自動的にログインしたいんです。 そのあと、戻って来たページ(html)を読み込みたいんです。 fopen()でURLを指定する事も出来ませんよね。 よろしくお願いします。
>>114 &の直前のスラッシュって条件なら、
正規表現使わなくても
$text = test/&test2/&test3/&;
$text = str_replace("/&", "/", $text);
でできないかな。
的外れならスマン
$text = "test/&test2/&test3/&"; だった
>>114 preg_replace('/\/\&/', '&', "test/&test2/&test3/&");
119 :
118 :2006/02/07(火) 21:35:58 ID:???
Array ( [0] => あああ [1] => いいい [2] => [3] => ううう [4] => えええ ) から、空の要素を削除して Array ( [0] => あああ [1] => いいい [2] => ううう [3] => えええ ) にするにはどうすればよいのでしょうか。
array_map
122 :
nobodyさん :2006/02/07(火) 21:50:12 ID:QxUNaPeI
>>116 おお!!ビンゴです!!
わたしが難しく考えすぎていたみたいです。
どうもありがとうございました。本当に助かりました。
>>120 $new = preg_grep("/./", $old);
124 :
120 :2006/02/07(火) 22:08:36 ID:???
>>123 できました。ありがとうございます。
正規表現で.(全ての文字)にマッチするのだけを返すんですね。メモメモ。
>>115 PEARのHTTP_Requestが楽。
またはsocket通信。
127 :
nobodyさん :2006/02/07(火) 23:29:30 ID:xKyeolaW
>>126 なるほど、参考になりました。
どうもありがとうございました。
よくパスワードの関係で、表示された画像に写る文字列を入力すると言うのがありますが、 あれってGDでも出来るんですか? 普通の文字ならまだしも、無駄にふにゃふにゃしてますよね。 何かフォントでもあるんでしょうか。
ふにゃふにゃってかわいいなお前(*´Д`)
>>128 GDでできなくはないけど結構面倒くさいと思う。
元のフォント自体があんな風になってるわけじゃなく、フォントから生成した画像に対して
ピクセル単位にデータの位置をずらしていく、いわゆる画像フィルタ処理のライブラリを
用意しておいて、それを通して加工した画像を表示させてる感じ。
PHP+GDでもピクセル単位での読み出しと出力はできるので頑張れば同じような
画像加工も可能だとは思うけど、一発でそういう変換ができるわけじゃない。
自分で頑張って座標変換の計算をするような演算式を書く必要あり。
ま、画像の加工と言っても基本的には座標位置の変換だけなので、
画像変換処理の中では比較的楽な部類ではあると思うけどね。
(左右ずらしだけじゃなく回転や歪みが入ってくると計算が面倒になってくるけど)
そんな面倒な事せずにImageMagic使ったら?
132 :
nobodyさん :2006/02/08(水) 02:18:08 ID:xBsMO0LF
>>128 そういうのを作ってくれるCGIがあったはずなので
それ探して使えば?
133 :
nobodyさん :2006/02/08(水) 02:30:02 ID:xmigkNJp
134 :
nobodyさん :2006/02/08(水) 02:40:34 ID:T0ghpS/6
ヤホートピックスの仕様が変わったらしく、エラーになったので直しているのだけれど、以下だと文字化けしてしまう所が出ます。
どうしたらいいのかなぁ。
<?php
include("jcode-LE.php");
if ($fp = @fopen("
http://www.yahoo.co.jp ", "r")) {
while (!feof($fp)) $data .= mb_convert_encoding(fgets($fp, 1024), "SJIS", "EUC-JP");
fclose($fp);
}
$match_all = preg_match_all("%<a href=\"
http://rd.yahoo.co.jp/toppage/topics/ (.+?)\">(.+?)</a>%is", $data, $item);
echo "Yahoo!ニュース <a href=\"
http://www.yahoo.co.jp/r/fc1\ " target=\"_blank\">トピックス</a>\n";
echo "<ul>\n";
for ($i=0; $i< $match_all; $i++) {
$url = "
http://dailynews.yahoo.co.jp/fc/ ". $item[1][$i];
$title = $item[2][$i];
$title = strip_tags($title);
echo "<li><a href=\"". htmlspecialchars($url) ."\" target=\"_blank\">". htmlspecialchars($title) ."</a></li>\n";
}
echo "</ul>\n";
echo "Yahoo!ニュース <a href=\"
http://www.yahoo.co.jp/r/fc2\ " target=\"_blank\">一覧</a>\n";
?>
テキトーにテメーで考えろよ。
>>128 php|architectまたはPHPプログラマーズマガジンの2003年2月号で
「Building a Turing Test with PHP and the GD Library
(PHPとGDライブラリでチューリングテストを試みる)」
http://www.asial.co.jp/magazine/backnumber/200302/ という記事がある。自分で作るなら参考にすると良い。
やってるのは描画位置ずらしと違う色の線を重ねるパターンだけだけど。
他に回転や複数フォントの組み合わせもやると、更に高度になるけど
スクリプトローダー相手にはそこまでしなくても、まあ大丈夫。
あと探せばライブラリは何個かあるよ。
jcode使ってる奴っているんだ。。
>>115 >ユーザIDとパスワードを求めて来るページに、PHPで自動的にログインしたいんです。
sessionとかcookieとか使ってみたらどうよ。
141 :
シャットダウン2世@初心者 :2006/02/08(水) 09:50:48 ID:HTXUrlQx
>>12-
>>14 レスサンクスです。SQL5を再インストールしたら(汗)
PHPで書いた文でWebページにテーブルが表示されるようになりました。
いろんなバージョンをいじくってたら、ポートが3307になってたり
したけど、今はSQL5ひとつだけのポートは3306になっている模様。
3つほどさらに質問があるんですが、
1、PHPの設定はSJISにしてるんですが、とってきたレコードが文字化けします。
2、PHPのプログラムで接続、クローズしてもW2kのサービスで反映されてません。
ブラウザでは「connect DB」とか「close DB」とか
ちゃんと表示されているのに。
3、「insert into …」で新しい行を書き込んだら、
ブラウザでは「書き込みました」と出るのに、Mysqlで見てみるとレコードが
入ってません。
オレのPCには魔物が天狗がひそんでいるんでしょうか。
>>140 そこでsessionやcookieきたのにワラタwwwwww
>>126 がいってる通りPEARのHTTP_Requestを使うのが一番楽い。
コードで記述すると以下みたいな感じになる。
$req = new HTTP_Request("URI");
//POSTを定義
$req->setMethod(HTTP_REQUEST_METHOD_POST);
//実際に渡すPOSTデータをセット
$req->addPostData("foo", "var");
//リクエスト
$req->sendRequest();
//ヘッダー取得
$header = $req->getResponseHeader();
//レスポンスコード取得
$code = $req->getResponseCode();
//リクエスト後のHTMLを取得
$body = $req->getResponseBody();
詳しくは以下参照
ttp://pear.php.net/manual/ja/package.http.http-request.php そういやHTTP_RequestのsetProxyメソッドを使用した際に
timeout処理の部分にバグがあったから手直しした事があるな。
>>141 まず1に関して
何をSJISにしてるんだ?
内部コード?出力コード?
まぁどっちにしろ、MySQL側の文字コードとPHP側の文字コードがあっていないからそういう事態が発生する。
2に間して
MySQLの終了が出来ないと言ってるのか?
もしそうならば勘違いしている。
PHP側がMySQLを起動終了させるわけではなく、アクセスのオープン、クローズをしているわけだ。
3に関してはコードを見ないとなんとも言えないな。
php4で動いていたスクリプトを5の環境でも使用する場合、 特に変更する必要がある点などあるのでしょうか? 4で動いていれば基本的に5でも問題なく動作するのでしょうか?
>>146 多くの場合はそのまま動くけど一部仕様変更あり
149 :
nobodyさん :2006/02/08(水) 15:55:23 ID:zajb1emB
PEAR 自身のアップグレードをしたくて pear upgrade pear したら、 requires package 'PEAR' >= 1.3.3 とメッセージが出てアップグレードできません。 確かにインストールされてる PEARは1.3.1 です。 アーカイブをダウンロードしてきて、 手動で pear/PEAR ディレクトリを書き換えてしまっていいのでしょうか?
150 :
nobodyさん :2006/02/08(水) 18:07:45 ID:??? BE:277448055-
php.iniではなくphpスクリプトの方で ポストされるファイルのサイズを制限したいんですが どうしたらいいですか?
>>150 upload_max_filesizeは.htaccessでも設定できるよ
>>150 <?
$max_size = 1024 * 100;
$kb = $max_size / 1024;
if($_FILES["hoge"]["size"] > $max_size){
exit("アップロードされたファイルは最大ファイルサイズ(".$kb."KB)を超えています。");
}
?>
153 :
nobodyさん :2006/02/08(水) 18:23:28 ID:0zkvAuO5
くだらなくてすみません。 phpのコードに出てくる「 => 」の意味は何ですか? 貰ってきたコードに出てきました。 数字=>"ファイル名"みたいになってます。
>>153 配列の時に使う。
key => value
キーと値という意味。
>>150-151 ini_set関数でも設定は変えられるわな。
場合によっては、upload_max_filesizeだけでなく、post_max_sizeも変える必要もあるかと。
>>152 これって、実際にPOSTされた後でしか実行できないよね?
157 :
149 :2006/02/08(水) 18:36:25 ID:zajb1emB
だれかおしえて
158 :
nobodyさん :2006/02/08(水) 18:37:04 ID:0zkvAuO5
>154,155 うひょー。どうもです。 =>を使えば、順番にかかわらず配列の中身をコントロールできますね。 すげー。わかりやすいし。 ありがとうございました。
159 :
nobodyさん :2006/02/08(水) 18:42:44 ID:??? BE:133175243-
>>151-152 >>156 どうもありがとうございます。
>>151 あ、.htaccessでもできるんですか。
それは知りませんでした。
てっきりphp.iniでしかできないのかと思ってました。
>>152 その方法でやってみたんですが、
>>156 のとおり
アップロードされた後にチェックする感じになってしまいましたorz
>>156 phpスクリプトの中からも変えられるんですね。
できるだけphpスクリプトの中だけやりたいので
それで行こうと思います。
160 :
nobodyさん :2006/02/08(水) 18:43:25 ID:o/oLkGrK
CGI/perlで質問ですが $cnt1〜$cnt100まで、今のところ100個の変数にそれぞれ数値が格納されています。 コレを「一番大きいもの」を見つけるにはどうやったらいいのでしょうか? 正規表現でこういうのとかあるんですか? それとも比較して1つ1つ気の遠くなるような作業をするんですか。。。orz どうやればいいのか分からないので、アドバイス下さい。
>>160 PHPだったら、整形してmax()で一発なのに
残念だったねぇ(w
163 :
150 :2006/02/08(水) 19:23:57 ID:??? BE:199762463-
すみません。
>>156 の方法でやってみたんですが
なんかうまくいきませんでした。
で、なんでだろうとググったりしてみたら
>>156 の方法が有効なのはPHP 4.2.3 までらしいです。
それ以降のバージョンでは
upload_max_filesizeとpost_max_sizeが
PHP_INI_PERDIRという分類になってて
.htaccessとかphp.iniからしか変更できないっぽいです。
なのでphpスクリプトから制限するのは諦めて
.htaccesで制限する方向でやってみようと思います。
>>156 あれ?upload_max_filesizeってPHP_INI_SYSTEM|PHP_INI_PERDIRじゃなかったっけ?
ああ。4.2.3まではPHP_INI_ALLだったのか
>>162 push(@cnt, ${"cnt$_"}) foreach(1..100);
$max = (sort(@cnt))[-1];
だからPerlでもあんまりかわらんと思う
激分かりにくいけどな
168 :
156 :2006/02/08(水) 20:00:58 ID:???
>>163 うぉ、すまんかった。
パラメータによって有効無効があるのは知っていたけど、いちいち確認してなかった…
htaccessからでも、<FilesMatch>ディレクティブか<FilesMatch>ディレクティブを使えば、
ファイルごとに設定を変更できるよ。
$max = (sort(map{${"cnt$_"}}(1..100)))[-1]; ここまでやんなきゃ大したことないって。ふつーふつー
170 :
150 :2006/02/08(水) 21:43:36 ID:??? BE:699168097-
>>168 ありがとうございます。
一応うまくいきました。
でもちょっと気になることがあるんですが、
upload_max_filesize を10Kにして、さらに
<input type="hidden" name="MAX_FILE_SIZE" value=100000000000>
というタグを入れてブラウザに知らせるマックスファイルサイズを大きくした上で
100Mbyteのファイルをアップロードしようとすると、
upload_max_filesize が10Kなのにもかかわらず
ブラウザはずいぶんと長い時間送信し続けるようになります。
そして最終的にアップロード失敗や成功の画面ではなく
投稿フォームの初期の画面に戻ります。
スクリプトは実行されていないみたいで
テンポラリファイルのサイズを調べることができません。
これってブラウザが勝手に送りつけてるだけで
サーバー側は upload_max_filesize 以上受け取っていないと考えて良いんでしょうか?
読みにくい文章ですみません(・・;
>>170 Apache自体は全部受信してて、それをPHPコアがフォーム分解してテンポラリを作る際に、
サイズが大きすぎたら処理を中断してエラーフラグを設定して、スクリプトの実行を開始、
って感じだと思う。
サーバー負荷を下げるのが目的ならname="MAX_FILE_SIZE"で指定してやんないといけないし、
それを無視するブラウザを弾きたいということであればApache側でPOSTの制限をするなどの
設定をしてやる必要があると思う。
172 :
156 :2006/02/08(水) 22:08:28 ID:???
>>170 んー、PHPマニュアルには、
『MAX_FILE_SIZEはブラウザへの勧告に過ぎません。この最大値を 出し抜くのは簡単なことなので信頼してはいけません。
しかし、 PHP側の最大サイズの設定を欺くことはできません。 しかしそれでもMAX_FILE_SIZEを指定すべきです。
なぜなら、 巨大なファイルを転送しようとして、
実はそれが大きすぎて転送できないということを長時間待ったあとで知らされるのを防げるからです。 』
とあるので、
MAX_FILE_SIZE(HTML) < POSTしようとするファイルサイズ < upload_max_filesize(PHP) の場合は、
(MAX_FILE_SIZEを欺くことは簡単にせよ)ブラウザ側で警告が出る。
upload_max_filesize(PHP) < POSTしようとするファイルサイズ < MAX_FILE_SIZE(HTML) の場合は、
ブラウザ側で警告は出ずに、サーバ側から"大きすぎて転送できないということを長時間待ったあとで知らされる"。
ということだろうから、その挙動は合っていると思う。
エラーコード、$_FILES['userfile']['error'] をechoしてみれば分かるんじゃ?
SJISとereg系って文字化け起きやすいように思うのですが、そうなのでしょうか? ini_setで関係のありそうな場所を設定してるのですが、気を付けた方がいい所はありますか? 漠然とした内容ですいませんが、第一引数に「ー」や「]」などを入れると文字化けして、ini_setや他の関係ありそうな関数を使っても必ずどっちかが文字化けしたりで途方に暮れてます…
>>173 SJISを、どうしても使いたければ最終的な出力だけにしとけぇ
はじめまして。お世話になります。 現在ある掲示板を、携帯絵文字対応にしようと思っております。 既存の掲示板では携帯から絵文字を投稿すると <img src="img/i/F8C7.gif" width="12" height="12" border="0"> と変換されているのですが、これを携帯から見た時に ? と変換したいのです。 このような変換を行う場合はどのようにしたらよろしいでしょうか? よろしくお願いいたします。
176 :
175 :2006/02/08(水) 23:41:43 ID:???
?= です。文字化けしてしまいました・・。
>>173 SJISで正規表現をまともに動かすのはかなり難しいよ。
178 :
nobodyさん :2006/02/09(木) 00:06:23 ID:MhSFpTrN
携帯から使いやすいように2chの窓口を作りたい、といっても何すれば良いかよくわかんないので とりあえず書き込み画面作ろうと思うんですが
http://c-others.2ch.net/test/-/php/1139146534/w ←こんな感じで書き込めるようにするにはどうしたらよいでしょうか
hiddenの値とかは何とかなると思いますが、ソケットプログラミングが全くわかんないので、できたら実際に書き込みできるスクリプトを見せていただきたいのですが・・・
よろしくお願いします。
>>178 すでに「p2」というPHP製の非常に優れたGATEWAYプログラムが存在してますので、
まずはそちらの中身を解析してみて、それ以上のものを作って公開してくださいね。
181 :
179 :2006/02/09(木) 00:21:24 ID:???
>>180 の罵倒の意味が判らない
>>178 で参考になるスクリプトが見たいといってるから、
存在するオープンソースで一番目的に近いものを紹介して
なんで、「死ね」とか言われなきゃならんのだ・・・凹むぞ
解らんのなら相当お前性格悪いな
ここって上級者向けスレッド?
わかんないんだから性格じゃなくて頭が悪いんだろ わかっててやってるなら性格悪いけど
185 :
150 :2006/02/09(木) 01:26:45 ID:??? BE:443916858-
>>171-172 ありがとうございます。
そして遅レスですみません。
>>171 Apache側の設定のこと完全に忘れてましたw
それでApache方面でググった今の自分にぴったりな(?)文章を見つけました。
http://multix.jp/html/memo/030521.html#00010201 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
LimitRequestBody
クライアントから送信されてくる POSTや PUTデータを受け入れる
最大値を指定します。初期値は 0(無制限)で、バイト単位で
2147483647(2GB)までを指定できます。これを使えば CGIで
ファイルアップローダを運用するような場合、CGIプロセスが
起動する前に巨大すぎるデータの受け入れを容易く拒否することができます
(CGIプロセスに渡ってからではほとんどの場合、手遅れ)。
それ以外でもバッファオーバーフローやサーバクラッシュ目的での
DoS攻撃を回避するのに有効ですから、サーバ管理者は必ず再設定しておくべきです。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
>>172 upload_max_filesize以上post_max_size未満のサイズなら
$_FILES['userfile']['error']でちゃんとエラーを拾えるんですが
post_max_sizeを超えてしまうと拾えなくなってしまいます。
というか何もPOSTされなかったかのような反応になります。
しかも送信してる間にハードディスクがガリガリいってるぽいので
どうも
>>171 のとおりPOSTされたデータをApache側で
全部受け取ってるのかもしれません。
うーんでもApache側で一旦受け取るんだったら
upload_max_filesizeとupload_max_filesizeの意味無いような気がするし。。。
もうわけわかめ。
186 :
nobodyさん :2006/02/09(木) 01:37:15 ID:??? BE:44392122-
あ、ハードディスクガリガリは勘違いだったかもしれません。 それにphpのテンポラリディレクトリは ウェブディレクトリの外側なので LimitRequestBodyで設定できませんでした。
188 :
150 :2006/02/09(木) 02:16:30 ID:??? BE:443916858-
>post_max_sizeを超えてしまうと拾えなくなってしまいます。 >というか何もPOSTされなかったかのような反応になります。 良く調べたらこれはMAX_FILE_SIZEに引っかかっただけでしたorz MAX_FILE_SIZEを100000000000000000000にして やってみたらエラーを拾えるようになりました。 いろいろやってみた結果、 結局サーバー側は upload_max_filesize 以上受け取っていない ということかもしれません。 ご迷惑をおかけてすみませんでした。
189 :
nobodyさん :2006/02/09(木) 03:32:12 ID:cjjnlVGS BE:397297-#
phpでperlでいうuse strict;みたいなことは出来るんでしょうか?
ログをE_ALLで取るとか?
>>189 error_reportingの設定でE_NOTICEを入れてやれば似たようなもんなんじゃないの?
192 :
nobodyさん :2006/02/09(木) 03:57:56 ID:cjjnlVGS BE:158055-#
ラジャーです。
193 :
173 :2006/02/09(木) 06:57:36 ID:???
use strictが効いてE_NOTICEが効かない例 (my) $hoge = 1; (my) $hige = 2; // hogeにhigeを加える $hage = $hoge + $hige; //hogeをhageに間違える print $hoge;
テキストエリアに改行を入れた場合、<br>が入るように str_replace("\n", "<br>", stripslashes($textarea)) としているのですが、テキストエリアにタグを入れた場合、改行が入っていると <br>が入ってしまいます(当然ですが) 例) <table> <tr> <td>テキスト </td> </tr> </table> これを改行無しに記述すれば問題はないのですが、ホームページ作成ソフトなどから 直接タグをコピペする時もあります。 どうすれば整形済みのタグを入れても<br>だらけにならないように出来るのでしょうか? 説明が下手ですが、何かアドバイスをいただければと思います。
>>196 <br>に変換しなければいいんじゃないの
198 :
196 :2006/02/09(木) 09:29:55 ID:???
>>197 それが、普通のテキスト文字の場合は改行した時、<br>に変換が必要なんです。
ブログの記事書き込み部分のようなイメージです。
ブログ(MTなど)でも記事フォームにタグを入れている場合は、改行せずに
入れているような気がしないでもないですが、もし何か良い方法があれば、ご教授願います。
>>198 HTMLでの記事書き込みとテキストでの記事書き込みとをモード切替してるとこはある。
同一のものとして扱うのであれば、タグの開始と終了<hoge></hoge>を判別して、
その間だけ<br>変換やめるとか。
同じ名前のタグをネストされた時の対処が必要だしちょっと面倒かもしれんが…
XMLパーサとか使ってみるのもテではないでしょうか?
該当箇所にhtmlspecialchars通すってのはだめか?
201 :
196 :2006/02/09(木) 10:12:05 ID:???
>>199-200 なるほど。やっぱり、入力フォームを分けるという対処しかありませんよね。。
1つのテキストエリア上で出来たら、便利だと思っていたのですが、
入力する側が手間になるといけませんので、断念します。
アドバイスありがとうございました。
202 :
149 :2006/02/09(木) 10:17:13 ID:g3a/RWdO
ネタでも何でもなくマジなんだけど、誰か教えてもらえませんか?
a.phpの中でb.phpの自作関数を何も定義せずに普通に呼べるんですが これってなにか問題ありますか?
>>203 何も定義ってincludeもしてないって事か?
>>205 includeもしてないです。
a.phpにb.phpで作ってる関数と同じ名前の関数を作ったらエラーになったので
試しにa.phpの関数を消して呼び出しだけを行ったら普通にb.phpの関数が呼ばれてたので
あ、すんません・・・ include山ほどしとりますた・・ a.php内で <?php〜?>外に <!--〜-->ってコメントにしてたんですが、これって <?php〜?>外なのに生きてるんですね
あれ? でも やっぱコメント扱いっぽいけど、インクルードはされてるみたいだなあ <!--<?php include("b.php"); ?>--> これって、b.phpは実際には呼ばないけど内部関数の定義はされるんですか?
>>209 え?あれ?
いや、コメントになってるっぽくて確かにb.phpは呼ばれてはいないのに
b.phpの関数が呼べるのが疑問なんですよ、俺変なこと言ってます?
>>196 こういうのはロジック以前にルール作りをどうするかだと思うんだけど、
例えば「各行の末尾が">"で終わっていなければテキストの改行とみなして<br>を入れる」とかじゃダメ?
$test = <<<TEXT
<table>
<tr>
<td>テキスト </td>
<td>テキ
スト </td>
</tr>
</table>
TEXT;
foreach(explode("\n", $text) as $line) {
$newtext .= $line . ((substr($line, -1) != '>')? '<br>': '') . "\n";
}
結果
<table>
<tr>
<td>テキスト </td>
<td>テキ<br>
スト </td>
</tr>
</table>
212 :
149 :2006/02/09(木) 11:08:45 ID:g3a/RWdO
>>204 ありがとう!
家に来て俺の妹とファックしていいよ。
>>210 <!-- -->はHTMLのコメントであってPHPのコメントじゃない。関係なくPHPは実行される。
別ページに飛ばしたくて今header(location:〜)でやろうと思ったのですが フレームを解除させて飛ばす場合はどのようにすればいいのでしょうか?
>>210 >208の書き方では、HTMLではコメントとされても、PHPとしては実行される。
ただ、b.php内でechoしてると、<!-- hogehoge -->となるので、ブラウザ上では表示されない。
HTMLソース見れば、b.phpが読み込まれた上に実行されていると思うが。
>>213 いやそれはわかってるんですが、実行されてる様子がないんですよ。
b.phpで適当な文字をechoしてるのですが、
<!-- -->でくくってると、文字が出なくて<!-- -->を取ると文字が出ます。
ひょっとすると俺の根本から間違ってますか?
>>216 出力されたHTMLソース見れ。
<!-- 適当な文字 --> って出力されてて、PHPは実行されてるがブラウザから見れなくなってるから。
>>215 嗚呼、わかりますた。
どうやら俺の根本が間違ってました。
確かにソースをみると、実行されてますねこれ・・
コメントになってるんでブラウザには表示されてないだけか・・・
>>217 すんません・・
おっしゃるとおりです。
>>214 PHPの呼び出し元HTMLでtargetを指定してやるか、Locationで飛ばした先のHTMLを
target解除してさらに別ページに飛ばすJavaScriptのページにして連続遷移。
>>214 ちょっと前にも同じ質問があったぞ…
フレームはHTMLの仕様であり、PHPから直接いじることは無理。
どうしてもやりたければ、PHPのheaderで飛ばすのではなく、
PHPでJavaScriptを生成してwindowオブジェクトを操作すべし。
>>219 サーバー側の処理を考えればそんな所にはいきつかん。
<!-- ここに書かれた文字列 -->を表示しないと言うのはブラウザ側の機能。
サーバー側はあくまで取得してきたファイルを処理し、整形されたHTMLをクライアントへ投げるだけだ。
えtっと、すみません、最後に・・ 例えば、a.phpからb.phpの自作関数を呼ぶ場合って b.phpでは関数のみを作成し本体には何も書かないのがいいんですか?
>>223 本体って何を指してんだよw
ていうか、関数郡、実際稼動ファイルと分けておいた方が後で自分でも見やすいだろ?
お前次第だよそれはw
>>223 言ってる意味が分からんがな。
本体=a.php 、 関数のみ=b.php という意味なら、
>>224 が言うように見やすくなり管理し易くなる。
その関数を他のファイルで使いたい場合も、b.phpをincludeするだけでよくなる。
>>224 そそ、それそれ、ってやっぱ自分次第なんですよね。
>>226 ですね、<?phpでかこめば関数を作らなくても記述できる点がCとは異なるので
ちょっとアレだったんですよ
228 :
214 :2006/02/09(木) 11:46:33 ID:???
>>227 Cと異なるってのはどういうこと?
メイン関数を作らなくてもいいってこと?
関数呼び出しに関してはいたってCと同じ構造だと思うぞ。
よく掲示板などの入力があるようなスクリプトを見ると、 extract($_GET); extract($_POST); extract($_COOKIE); extract($_SERVER); っていうのがあるんですが、これはどういう意味があるんですか?
extract 超便利で大好きです。 ちゃんとサニタイズしてね。
サニタイズ言うなキャンペーン
>>229 いやCは必ず関数が存在するけどphpて関数いらんっしょ
例えば、
<?php
なんか
この部分とか
function aa( )
{
}
?>
----a.php---- <?php include ("b.php"); func(); ?> ----b.php---- <?php echo "test message"; function func() { echo "hello world.\n"; } ?> ----終了---- Cなら echo "test message";はエラー返される、とか 言い方が分からないけど、グローバルな部分で関数を呼び出したりifやwhileが使えないって事かな。
242 :
229 :2006/02/09(木) 15:25:09 ID:???
223で聞いてる、関数分けをして呼ぶのに必要なのは、関数群を記述したファイルを インクルードするだけって点ではCと同じじゃないかと書いたのですが、 どうやら私の方が227の文面を読み違えていたようでしつれしました。
>>235 この場合は変数の初期化を適切に行えばいい話しだ。
なんでもかんでもサニタイズ言うのは病気。
244 :
nobodyさん :2006/02/09(木) 15:56:49 ID:eu00qYyi
<a href= '
http://www.yahoo.co.jp/ '>Yahoo!</a>
↑の文を
<form action="aaa.php" method="post">
<input type="hidden" name="name" value="write">
<textarea name="text" cols="20" rows="5" wrap="soft"></textarea>
<input type="sub" value="送信">
</form>
↑で送信して
if ($_POST['name']=='write'){
print $_POST['text'];
}
↑みたいな感じでで受け取ると、
<a href= \'
http://www.yahoo.co.jp/\ '>Yahoo!</a>
↑みたいに変化してしまいます。回避策あったら教えてください。
>>240 単にPHPの場合は各ファイルにmain()関数を置けるってだけだな。
Cとの最大の違いは「main()関数の中身を複数ファイルにバラバラに配置できる」ってとこか。
>>246 マジッククオート機能がONになってる可能性が高いからOFFにしれ
>>244 前スレの後半あたりで、その話題あった気がする。
>>244 Apacheのコンテントネゴシエーションが有効ならそのまま拡張子無しでアクセスできるかも
あとはmod_rewriteを使う
どっちにしてもPHP関係ねー
>>248 解決できました!!ありがとうございました!!
>>244 PHPの範疇ではない。.htaccessを使う。
Options +MultiViews
決まった時間に記事を投稿するというPHPで書かれたブログがあるんですが、 cronも使わないで決まった時間に…なんて出来るのですか?
自分のブログに投稿するんだったら、日時の操作は自由でしょ? 表示する時に指定の時間を過ぎてたら、指定時間に投稿したような記事を書き込めばいいんじゃないかな?
$sort_key = フィールド名; $sort_dir = ソート方向 $sort_type = 比較方法 $list = 処理対象フールド こんな風な変数を作っておいてから array_multisort($sort_key, $sort_dir, $sort_type, $list); って具合に引数に変数で渡すと、 Warning: array_multisort(): Argument #2 is expected to be an array or a sort flag in〜 または Argument #3〜ってエラーになります。 $sort_dirのとこは SORT_ASC(昇順にソート) SORT_DESC(降順にソート) $sort_typeのとこは SORT_REGULAR(普通に比較) SORT_NUMERIC(数値的に比較) SORT_STRING(文字列として比較) などのフラグの文字列そのものを直接、引数のとこに書き込まないとダメなんでしょうか? フラグの文字列(SORT_DESCとかSORT_NUMERIC)を直接入れるとうまくいきます。 なにかウマい方法がありましたら教えてください。
変数をダンプしてみることをお勧めします
257 :
nobodyさん :2006/02/09(木) 19:02:45 ID:9NTQCcyh
>>196 >>200 を参考にして
nl2br(htmlspecialchars($_POST['textarea']))
258 :
68 :2006/02/09(木) 19:04:50 ID:???
>>255 変数毎に
switch〜case
でわけるか
if
でわければ良いだけでは?
>>256 dump?ちょっと調べてみます
>>258 もちろん、それでもよい訳ですが、関数に与える引数に変数が使えなかったというのが初めての経験なので、とりあえず、なんとかしちゃう方法というのも後学の為に知っておきたいと思った次第です。
>>255 $sort_dir = SORT_ASC;
$sort_type = SORT_REGULAR;
と、書けばいいのではないでしょうか?
直接引数のとこに書く必要はないでしょう。
# 意味取り違えてたらスマン
>>255 きっと
>>260 が言うように
$sort_dir = 'SORT_ASC';
$sort_type = 'SORT_REGULAR';
って ' や " でくくってないか?
>>259 問題なく変数経由でパラメータは渡せる。
$sort_dirに格納してるフラグdefineの綴りでも間違ってるんじゃない?
存在しないdefineを渡すとPHPはそのまんまその文字列を格納して、提示されたエラーメッセージが出る。
263 :
178 :2006/02/09(木) 21:51:59 ID:???
178ですが誰もわかんないみたいですね^^; 初心者しかいないようなら去りますw
さようなら^^;
265 :
nobodyさん :2006/02/09(木) 21:54:24 ID:MhSFpTrN
うむ^^;
266 :
244 :2006/02/09(木) 23:31:56 ID:???
267 :
259 :2006/02/09(木) 23:33:17 ID:???
>>260-261 引用符でくくってますた・・・まさか引用符とは。
いやー、勉強になりますた。ありがとうございました。
268 :
259 :2006/02/09(木) 23:36:21 ID:???
>>262 これは定数なんではないかとはうすうす考え始めていたんですが。
なるほど。確かに文字列じゃなくて、これは定数を変数に入れて、引数として渡すってことだったんですね。
>>267 なんで変数を経由するときと直接指定するときとで書き方変えてんのさ。
270 :
259 :2006/02/10(金) 01:22:52 ID:???
>>269 いや、最初は定数なんて考えもおよばず、とにかく、文字は引用符でくくるとかたくなに信じる初心者なのです。
php4.2.3をマニュアルどおりにmakeして、make installしたのですが、 /etc/apache2/modules/にlibphp4.soが見つかりません。 コンパイルの仕方がおかしいのでしょうか?オプションもマニュアル どおりに指定したのですが・・・ 超初心者の質問ですみません。
>>271 ん〜、configureはちゃんと間違いなく指定した?
locateなりfindなりで、buildしたものの中辺り探せばあるんじゃないかな。 それを指定する場所に置くなり、シンボリックリンク貼ってあげれば。
274 :
271 :2006/02/10(金) 07:18:50 ID:???
>>275 |/etc/apache2/modules/にlibphp4.soが見つかりません。
らしいので「--with-apxs2」とまで導いてやった方が良いかと。
# でもmakeのエラーで生成してないだけの予感。
x
ここは初心者しかいませんよ
>>278 同意。
3日前から覗き始めたが
質問の内容が調べれば速攻出てくるようなものばかりでつまらんな。
ここで質問する奴は検索エンジンって物を知らないんだろうか^^;
ここが検索エンジンなんだろう
通りがかりでちょっとさかのぼってみたけど、
>>278 ==
>>178 なのか?
答えもらって捨て台詞はいて、また戻ってきたのか
最先端の人工知能を搭載した検索エンジン“にちゃんねる”
最先端の人工無能
満足な回答が返ってくるのが当たり前だと思っている小学生が多いですね(苦笑)
>>281 荒れるのでいちいち蒸し返さなくていいって
所詮ここはくだ質なんだし
286 :
271 :2006/02/10(金) 18:25:49 ID:???
有難うございます。解決しました。 --with-apxs2を使って、configureすると、libphp4.soが出来上がりました。 最初、--with-apxs2=/use/local/apache2/bin/apxs2として、configureすると、 エラーが出たので、--with-apxs2を使わずにconfigureしたのが間違いでした。 ちなみに、私の環境(Vine 3.1 + apache2 : apache2はapt-get installしたもの) では、apxsが/usr/binにあったので、ここにたどり着くまでに、ちょっと苦労しました。 初心者の質問で、済みませんでした。
>>279 ここはくだ質なんだからむしろそういう即効で分かるような質問をしないとw
phpっでファイルにアクセスする場合 文字列でしか読み込み書き込みできないんですか? C言語で言う fread( &hoge, sizeof( hoge ), 1, fp); 見たいなのがやりたいんですが
>>288 $hoge = fread($fp, 100); とかでいいじゃん。どっから文字列でしかダメなんて聞いてきたのよ。
質問の仕方がアレだな。 PHPにうらみでも持ってるのかと思った。 できないんですか? なんなんですかあんた。 みたいなね。 ニュー速+に入り浸りすぎだな。
>>C言語で言う
なぁ、apxsってさ、ググっても今一これだ!っていうの見つかりにくくないか? 俺もPHPのconfigure指定するときマジで悩んだ('A`)
この間あがってたPHPのアイコンを会社のパソコンで試してみたんだけど 良いね! 今ちょっとしたアイコンブームが起こってるw
GeoShellで使えるアイコン作ってくれると嬉しいな。
アイコンの再うpお願いできますか〜
あ、ごめん
PHPをある程度習得しているのですが、SQLの知識がありません。 LAMP/LAPPで掲示板等を作成するにあたり、 SQL、およびSQLとPHPの連携について学べるサイトなどはないでしょうか。 あまりPHPと関係のない質問で、すみません。
>>300 ちなみにPHPだからSQLの知識は固有の部分だけでいいってことは全然ないそ
ちゃんと頭から一通りやるべし
>>300 DBのこと何も知らないのに、
いきなりPHPで組もうとか無理がありすぎ。
305 :
300 :2006/02/12(日) 21:22:03 ID:???
わ、わかった。(´・ω・`)
入力された文字列が16進数であるかを確かめるスクリプトを組みたいのですが、 文字列の中にひらがな、カタカナなどの16進数で使われる文字以外の文字が含まれているか、 或いは16進数のフォーマット(0-9とA-Fのみ)になっているかどうかを調べることはできますか? 説明が分かり難ければその旨を仰って下さい。
>>306 preg_match('/^[0-9a-f]$/i', $str)
309 :
306 :2006/02/12(日) 22:21:50 ID:???
早々のご返答どうもありがとうございます。 ものすごく下らないことでしたね・・・ わざわざコーディングまでしていただいてすみません。
10秒でかいた一行のコードでそこまでいわれるとは。
なら俺は>308をオカヅに10秒で掻く
正規表現は書いて書いて書き倒すと、あとで役に立つ
自分で書かないと覚えられないよね。
連想配列をソートしたいのですが ソートする項目がキーではなくて2つ目の項目とかの場合どうすればよいのでしょうか? ↓でいうbの項目でソート array([1]=>array([a]=>hoge,[b]=>test),[2]=>array([a]=>hoge2,[b]=>test2))
つusort()
316 :
314 :2006/02/13(月) 11:48:29 ID:???
文字列の左右に.がある場合は.を削除、 ということをしたいのですが、適した関数はないでしょうか? 思いついたのが手間がかかる方法で・・・ 1.1文字目を調べて.なら削除 2.文字列反転させて1文字目を調べて.なら削除 3.もう一回文字列を反転
imapの新着フラグ(recent)をもう一回立てたくて、下記のように書いたのですがflagが立ってくれないとです・・
boolean 1 とも返ってきているのでflag立てには成功しているって事ですよね?
指定したメールをまた新着状態に出来れば何でもいいのですが・・
--------------------------------------------------
$mbox = imap_open("{example.jp/imap}INBOX", "
[email protected] ", "user");
$fclear = imap_search($mbox,'SUBJECT "hogehoge"', SE_UID);
foreach($fclear as $num)
{
$status = imap_setflag_full($mbox, $num, "\\Recent", ST_UID);
print gettype($status)."\n";
print $status."\n";
}
--------------------------------------------------
どなたかよろしくお願い致します。
だんだん答えが出てくるのでスレを見てるだけで勉強になる
>>321 横槍だけど途中に . がある場合は駄目だよね
>>324 あっ、ほんとだ
ゴメソ
便利だな、毎回置換か正規表現使ってたかも・・
phpとoracleで、 long型のカラムに対して64Kバイト以上の文字列を バインドしてinsertすると ORA-01480: STRバインド値に終了のNULLがありません とでてしまいます。 php側では普通の変数を使用してstrlenで文字数を取得しても 正しく文字数は取得できています。 これはoracleとphp、どちらが悪いのでしょうか? また、何が原因なのでしょうか。 ちなみに oracle関数【推奨されません】 の関数を使用しています。
>>318 recentが新着ということで他のimap関数にも敏感に反応してしまうのが原因だったみたいです
seenフラグで管理するようにしたら問題なく動作しました
>>328 test.php?%5B%5B
ってのを
test.php?ほげほげ
ってすればいいだけじゃなくて?
環境変数一通り出してみて
どなたかPHP5.1.2でpdo_mysqlが使っておられる方ご教授下さい。 MySQLのバージョンは、4.1.16と5.0.16で試しました(PHPの再インストール)。 $dsn = 'mysql:dbname=testdb;host=127.0.0.1'; $user = 'dbuser'; $password = 'dbpass'; try { $db = new PDO($dsn, $user, $password); $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); var_dump($db->query('SELECT * FROM testtable')); } catch (PDOException $e) { print $e->getMessage(); } とした時、Connectではエラーが出ていないのに、queryの結果は falseが返ってきます。どのような正しいSQLでも必ずfalseです。 Connectのエラーを拾えてないのかな?と思い、わざと間違った hostにすると、エラーは正常にprintされました。 試しに、mysqli関数でConnectし、同様のSQL文を発行すると 期待値が返ってきます。 エラーが出ないのでどうして良いかわかりません・・・。 postgresの方は今の所問題ないのに・・・。
>>328-330 前スレによると仕様だそうです。
俺はバグだと思うけどな。
971 名前: nobodyさん 2006/02/05(日) 17:52:09 ID:???
既出か分からないけど、
トップーページと入力すると
本来ならば%83g%83b%83v%83y%81[%83WのはずなのにPHPは%83g%83b%83v%83y%81_%83Wと受け取ってしまう。
[となるべく部分が_になってしまう。
[[[とすると_[[と受け取るので最初の[のみ誤認してしまうようです。
これの対処はどのようにすればいいでしょうか?
973 名前: nobodyさん 2006/02/05(日) 18:03:33 ID:???
>>971 ですが状況が分かりづらくてすみません
>トップーページと入力すると
というのはURLに入力という意味で
『
http://.../index.php?トップページ 』
としたときです。
このように入力した後 echo key ($GET); とするとトップペ\ジとなります。
それと、環境はPHP5を使用しています。
OSはWindowsXP SP1でAN HTTPDとApacheの両方で同様の誤動作を確認しています。
情報足らずで失礼しました、
引き続き対処の程を教えていただけるようお願いします。
975 名前: nobodyさん 2006/02/05(日) 18:25:21 ID:???
>>973 それで理由が分かったよ。
それ、PHPの仕様。マニュアル嫁。
改行コードってどうやって使い分ければいいの? unixで使うスクリプトを作ってるんだけどこの場合はLFにすべき?
>>326 エラー文どおりNULL文字が最後に入ってないんじゃない?
LONG型のカルマについては無知でスマンけど、
対象の文字を "1234567890\0" のように\0(NUL/NULL文字)で締めてみて。
>>334 LFでもCR+LFでも大丈夫じゃないかな。
大抵の"\n"は\n|\r|\r\nを自動で読んでくれるはずだろうから、unixで\r\nやっても平気じゃないかな。
PC-UNIXじゃなくてマジもんのunixならLFのがいいだろうけど。
>>334 CLIスクリプトならLFにすべき。
Webで呼び出すならほとんどの場合はどっちでもいい。
ただし
$string = "aaaa
bbbbb";
とか
$string = <<<TXT
aaaaa
bbbbbb
TXT;
みたいにソースの改行=データの改行みたいな真似してるなら
データの要求に準じるべき。
339 :
332 :2006/02/13(月) 19:30:53 ID:???
>>336 MySQLのユーザのパーミッションということでしょうか?
それなら、mysql関数、mysqli関数で試して期待値が返ってきた
ので問題無いと思っています。
phpinfo()の結果を見ても、POD_MYSQLの項目がきちんと出てきてはいるのですけど・・・。
現状仕方ないのでMDB2を使おうと思ってます。
が、今度はドキュメントがあまり見つからない&英語がわからないので、
浅い使い方しかわからず困ってしまいました(苦笑
340 :
nobodyさん :2006/02/13(月) 19:50:29 ID:5OEO9gPe
文字列の先頭から指定文字数だけ取り出す場合、どのようにすればいいでしょ? やっぱり正規表現でpreg_splitでしょうか? ばかなので正規表現書けませんでした。 レンサバがphp4なので、str_splitは無しの方向でお願いします。
substr
>>340 文字ってことはマルチバイトの考慮もいるの?
>>339 期待値が返って来たって事は少なくともreadは許可になってるんだろうけどwriteは許可されてるのかな。
他のサーバーでは失敗(というかあんにょい感じ)するか試して見た?
ためしにDebianか、HDDに入れるの面倒ならKNOPPIX(CD-Linux)で自鯖立てて試して見るといいかも。
これらはapt-getで簡単にmysqlなどなど入れられるので便利。
調べてみたら、初めからMySQL/PHPが使えるように設定してあるKNOPPIXもあるようです。
http://pcweb.mycom.co.jp/column/yetanother/010/
>>340 正規表現なら"/.{10}/"だな、試してないけど。
>>346 "/^(.{10})/"かな。別に"/^(..........)/"でも構わんと思うけどね。
..........とかワラタw 10個から20個にする時とか画面を眺めながら.を打ち続ける様を想像して更にワラタ
0を0.00のように小数点第二位まで表示させたい場合は どうすればいいでしょうか?
351 :
nobodyさん :2006/02/13(月) 22:57:25 ID:1JhTlLn3
勉強がてら、PHP4+MySQLでちょっとしたサイトを制作してみて、 データの書込み、表示などの一通りの動きは出来るようになりました。 次に、環境設定(1ページに何件表示等)もweb上で出来るようにと考えているのですが、 現段階ではPHPファイルに $bbs_Cnt = 10; //bbs1ページには10件表示 のように書いていて、 fopenなどでPHPファイル自体を読み込み上書きなどをしようと思ってますが、 通常はどんな風にするものなのでしょうか? このような値もDBに格納するべきなのでしょうか?
>>351 DBに格納でもいいでしょうし、
iniファイルを使ってもいいでしょう。
個人的にすきなのはiniファイルですね。
PHPにはparse_ini_file関数が用意されてますし。
あくまで個人的な意見ですけど。
PHPファイル自体を直接読み書きよりは
融通が利くかと思います。
iniがお勧めだね。 DBもいいね。 PHPを書くのは少々面倒だね。
354 :
351 :2006/02/13(月) 23:25:07 ID:1JhTlLn3
>>352 実は、PHPファイルではなくてiniファイルなのでした|x・`)チラッ
と言っても、中身は<?php......?>て書いてあるので、
PHPファイルなのですが…。
parse_ini_file関数から、iniファイルの扱いについても
ちょっと調べてみまーす。
ありがとうございましたm(__)m
>>354 標準と全然違うファイル形式の拡張子をつけるのはどうかと…
PHPソース形式にするならせめて.inc辺りにしとけ
>>355 前々から気になってたんだけど、そのincってどういう意味?
includedってこと?
357 :
351 :2006/02/13(月) 23:39:28 ID:1JhTlLn3
>>355 そっか。
設定ファイルが.iniって言う知識しかなかったもんで(^-^;
そこら辺、初心者にもわかり易く書いてあるサイトとかって
何かありますかい??
>>357 iniはinitやinitializeの略。
windowsプログラミングしてみるといいかも。
解説書とかだとよくincにした例が多いけど、 あれはブラウザから中身が見えちゃうから、 見られたくないような場合phpにしたほうがいいよ。 パーミッションいじってもいいけどね。 まぁセキュリティ対策にはならないからどうでもいいっちゃいいんだけど。
>>356 だな。アセンブラ時代からの由緒正しき拡張子かw
>>359 iniファイルにしろincファイルにしろ設定ファイルをドキュメントルート以下に置く方が悪い。
.cf(または.cnf)派は、少数派ですか...
.cfg派も共闘を
というか、.inc.php使うだろ。
配列を指定の値で検索して、見つかったらそのキーを削除 って、array_searchしてunsetしかないの?
365 :
351 :2006/02/14(火) 02:01:36 ID:zk1lvDPH
一応、.inc.ini等は、.htaccessで見れないように制限してるけど、 無敵ではない?
ほんの些細なミスをしちゃうだけで巨大なセキュリティホールを作るような トラップを自ら掘りまくるような行為は感心しないな。
>>364 俺はarray_splice()使ってる
>>367 .htaccessやhttpd.confが間違って上書き、削除されてしまったり、
何ヶ月も経って元々の意図を忘れて別の目的のために設定を変えてしまったり、
Apacheのアップデート時に設定が効かなくなってしまってたりなど、
その程度の隠蔽設定がうっかり消失されてしまうようなケースは多々あり、
またそういうミスをしてる連中が世間にはごまんといるってことだ。
「自分はそんなアホなミスしないから」と思ってるならセキュリティとかは口に出さない方がいいぞ。
とはいえ実際そんな面倒臭いことをする人間ばかりではない。 以前Livedoorの.incが漏れたときもルートより上ではなかった。 なんというか、仕事を完璧にめざす者と、仕事を徹底的にさぼる者に別れている気がする。 そしてJavaサーブレットを使えばこの問題が簡単に解ける悲しさ。
完璧めざすっつーか、バグなんかもそうだけど 「ミスしやすいもの」と「しにくいもの」 「やってしまったときに気付きやすいもの」と「しにくいもの」 は確かにあって、その分別は必要だと思うのよね。
外部のライブラリーなんかを使わずに複数のPDFファイルを1つに結合する方法はないでしょうか?
>>372 自分でライブラリと同じようなスクリプトを書く
取得したIPアドレスの、例えば 212.112.227.217 を 212.112.227.xxx みたいにするにはどうすればいいでしょうか?
>>374 正規表現で抽出置換
最後の.より後ろを削除し、xxxを追加
すんませんスレ違いを承知でちょっと教えてください Mozilla/5.0 (Windows; U; Win 9x 4.90; ja-JP; rv:1.7.10) Gecko/20050717 Firefox/1.0.6 これってOSなんですか?
ブラウザだろ
いあいあ「 (Windows; U; Win 9x 4.90; ja-JP; rv:1.7.10) 」この辺りでOS識別できませんか?
どうみたってWindows9xです。本当にありがとうございました。
おまえの質問の日本語が悪い。 「このUAから識別出来るOSって何ですか?」って感じで聞かないと。 「UAも知らないのかプギャー」な馬鹿に見えるぞ。 で、それぐぐれば答えはすぐ出るな。
本当にエスパーな質問多すぎだな。 Mozillaと先頭に出ててOSですか? なんてきかれたら、誰でもブラウザと答える罠。 質問するならもっとわかりやすい質問しろ。
これってOSなにですか? これってOSなのですか?
セッションってサーバーに保存するクッキーのような物と思っておけばいいんでしょうか?
わからないからって煽るのはよせよだからおまいら馬鹿にされるんだよ
クッキーは期限指定できるけどセッションは1回通信終えたらなくなるよ。
1回通信終えたら、っていう表現は微妙
微妙だな
美乳だな
微乳だな
賓乳だな
牛乳だな
乳牛だな
394 :
nobodyさん :2006/02/14(火) 19:28:27 ID:??? BE:443916285-
マニュアルに マルチバイト文字列を扱うときは mbstringモジュールをインストールしないとやばい みたいなことが書いてあったんですが いまいちなにがやばいのかわかりません。 具体的にどういうコードを入れると 問題が発生するのですか?
>>394 マルチバイト文字の入力を受け付けるプログラム
マルチバイト文字で検索を行うプログラム
マルチバイト文字の編集を行うプログラム
のいずれかで文字化けを起こす可能性が高いです。
396 :
nobodyさん :2006/02/14(火) 20:53:15 ID:??? BE:66587832-
>>395 ありがとうございます。
split()とか試してみても問題なく処理されるから
なんでだろーなーと思って質問したんですが、
問題が起きなかった理由は、
どうも文字コードがISO-8859-*, EUC-JP, Shift_JIS
ならmbstringなしでも正常に動作するらしく、
私が試したのはEUC-JP, Shift_JISだけだったからっぽいです。
ということでISO-2022で試してみたら普通にエラーが出ました。
どうもすみませんでした。
EUC-JPで問題が起きないということは、
例えば掲示板などをを作るときに
内部コードとhttpヘッダとフォームタグの文字セットを
全部EUC-JPにすればmbstring無しでも
いけますかね?
>>396 Shift_JISだって問題になることは多い。
それはsplitで使った分割文字がたまたまShift_JISで問題の出ない文字だっただけだ。
EUCはその中では比較的問題の出にくいコードではある。 が、全く問題が出ないわけじゃない。
399 :
nobodyさん :2006/02/14(火) 21:32:35 ID:??? BE:199762463-
あ、そうなんですか。 じゃあやっぱりmbstring入れなきゃやばいんですね。 どうもありがとうございました。
jcode.phpというのもある。 関係ないけど
自分で意識してマルチバイト対応の正規表現とか書いていけばmbstring無くても対応できるな。 関係ないけど
そういや%5Bの問題はどうなったんだ?
>>401 mbstring無しでマルチバイト対応の正規表現ってできるん?
>>403 使用する文字コードを特定すればできるよ。
mbstringみたいに設定でどれでも自動切換えみたいのはさすがにしんどい。
あー、もしかして地道に日本語文字をひたすら入力するの? %x8Cとか
何をマッチングさせようとしてるんだ?そりゃ
例えば /hoge/fuga/hunnu/2test のような文章から /hoge/fuga/hunnu(最後の/〜を抜いたもの) hunnu(最後の/〜の直前の文字列) 2test(最後の/以降の文字列) を一度に正規表現で抜き出したいのですが、どのようなコーディングをすればいいでしょうか? "^(/?([a-zA-Z%])*)*([a-zA-Z%]*)" として挫折しました。 直前に書いた"/^((\/[a-zA-Z]*))*$/"のが抽出率はいいようですが。 よろしくお願いします。
>>407 basename
dirname
pathinfo
関数じゃだめなの?
/hoge/fuga/hunnu/2testという文字列があるとして ・/2testを抜いたもの ・/2testの直前にある文字列 ・2testのみ を抽出したいという事です。 とても分かりづらく書いてすみません。
>>407 $str = "/hoge/fuga/hunnu/2test";
preg_match('<.*/([^/]+)/([^/]+)$>', $str, $match);
$str1 = $match[2];
$str2 = $match[1];
411 :
410 :2006/02/14(火) 23:40:32 ID:???
1つ目の抜き出しを忘れた preg_match('<^(.*/([^/]+))/([^/]+)$>', $str, $match); $str1 = $match[1]; $str2 = $match[2]; $str3 = $match[3];
>>408 ありがとうございます。
dirnameだとファイル名を含まないパスを返してくるので意図した内容にはならず、
ただこちらの存在を忘れていました。
>>411 神を見た。
いや、何度読んでも仕組みが分からない。
でも期待したものが返って来ます。
凄いです。なぞです。
いわゆるゴッドです。
書いてなかった私の責任ですが /2testのみだと返って来ないみたいです。
preg_match('<^(.*/([^/]+))*/([^/]+)$>', $str, $match); で/2testのようなものも回収できるようになりました。 <や>が全然分かりませんが、動くので>4100氏に感動してしまいます。
もういい加減ウザいかも知れませんが、改良できたので一応書いておきます。 /hoge/fuga/hunnu/ だと取得できなかったのですが、 '<^(.*/?([^/]+))*/([^/]+)?$>' とする事で取得する事ができました。 >410氏ありがとうございました。
>>414 あー。<や>には大して意味ないよ。
普通、pregの正規表現は /〜/ って書くものだけど、
|〜| とか [〜] とかでも書けるってだけの話。
パス分解の正規表現を書くときは中身に / を多用するから
エスケープ面倒くさいんで別の記号で代用してるだけ。
417 :
nobodyさん :2006/02/15(水) 02:51:07 ID:NFe11LPg
PHP4で吐き出したデータをpdf化するにはどんな方法がありますか?
>>417 PDFLIBだっけかなんか無料のやつ使ったことあるな。
>>421 吐き出したデータをまたPHPで読むの?
空気嫁
正規表現で括弧を入れ子にできるんだ.知らんかった. その場合matchesに入るテキストはどういう順番になるの?
(1(2))(3)の順番だよ
括弧の最初の登場順と覚えればヨロシ。
>>374 "."でsplitするとかってダサい方法もあるけどね
メールのヘッダで Date: Two, 14 Feb 2006 8:38:50 -0480 という素晴らしいヘッダを送ってくるスパムがあるんですが、postgresにdateとして登録すると日付ではないと怒られます。 phpでも同じような正しい日付ではないと判断する関数は無いでしょうか?
ファイルをブラウザでアップロードするプログラムを書いているのですが、 ファイルの更新日時を取得するにはどうしたらよいのでしょうか
>>430 ありがとうございます、出来ました
下記のようにおかしな日付表現だと"-1"が帰ってきました。
----------------------------------------
$time = 'Two, 14 Feb 2006 8:38:50 -0480';
//$time = 'Wed, 15 Feb 2006 11:49:43 +0900';
$stime = strtotime($time);
print $stime . "<br>";
print date("(Y-m-d h:i:s)",$stime);
----------------------------------------
関数名が分かってマニュアル見てみるとそのまんまエラーの処理があって便利
http://php.s3.to/man/function.strtotime.html
>>431 stat
filemtime
別に宣伝じゃないけど
PHP5逆引き大全 500の極意
とかの逆引き出来る本買うと相当便利よ
phpのマニュアルは日本語検索する方法が分からないのよね・・
434 :
nobodyさん :2006/02/15(水) 14:04:41 ID:p2BDIAFN
niftyってphp設置できますよね?
>>433 日本語がダメなら英語で検索すればいいんじゃね?
>>435 まずは日本語のphpマニュアルが検索したいナリ
英語のマニュアル読むのは時間がかかるナリ
マリーアントワネットキター
>>432 PHP5.1.0からは-1じゃなくてfalseを返すようになってるので注意
439 :
431 :2006/02/15(水) 15:08:53 ID:???
>>433 やってみたのですが、どうもうまくいきません。アップロードした時刻が表示されてしまいます。
ポイントだけでもかまわないので、何かサンプルを示していただけないでしょうか?
>>439 元のローカルにあるファイルの情報を取得しようってか?
そりゃ、PHPだけじゃ無理だ
あの質問じゃあ、送信元の時刻のことだったなんてわからないよなw
>>439 clearstatcache
してないって落ちじゃなくて?
>>438 ありがとうございます、気をつけます
現在はphp4なので、またphp5に移ってDB登録の際にエラーが出たら考えます。
>>431 アップロードしてからの更新時刻についてだったら
clearstatcache();
print_r(stat('./dummy.txt'));
で出来てるようだけど
>>436 俺は日本語HTML版のマニュアルをダウンロードして、
なまずに食わせてるよ。
スゲー便利。
445 :
nobodyさん :2006/02/15(水) 18:22:47 ID:NFe11LPg
>>427 そうです。そのPDFとして吐き出すという処理を自動でさせたいのです。
ID・PASSなどでログインした会員ページで、例えば自分の登録状況をPDFとして出すとか。
php pdf ライブラリ でググればいろいろ引っ掛かるんじゃないかな。 上に出てきてないやつだと fpdfとかもあるな。
448 :
nobodyさん :2006/02/15(水) 21:12:05 ID:HBKFx6cq
php5.xの最新版をzipをダウンロードしてきたんですが、 sqliteは入っているのでしょうか?どこにもないんです。 phpinfoもみましたがそれらしき文字も見当たりません。 なにかインストールする作業が必要なんでしょうか? どなたかご教授おねがいします。
いりません。 sqlite_open()すればインストールされているかどうか分かる
>>448 Win版しか知らないが、最新版なら作業が必要。
5.1から標準ではなくなった。ライブラリ化されたっぽい。
php.iniの適切な位置に
extension=php_pdo.dll
extension=php_pdo_sqlite.dll
extension=php_sqlite.dll
の3行を順番に記述するがよろし。
Linux版とかでも何らかの作業が必要と思われ。
451 :
nobodyさん :2006/02/15(水) 23:48:30 ID:yhYCj6u7
そうだっけ?
452 :
450 :2006/02/16(木) 00:08:24 ID:???
んー、Linux版とか扱わないので確証はないけど、 Win版で非標準(デフォで組み込まれていない)になって、Linux版で標準のままだったら不公平かとw Win版に関しては間違いなく5.1.0ではデフォでは組み込まれなくなった。 5.0.4→5.1.0Ver.UP時にphp.iniを流用してたらSQLite動かず、原因究明にえらい苦労した。
453 :
nobodyさん :2006/02/16(木) 00:29:12 ID:??? BE:599286896-
ファイルのロック解除とか クローズに失敗した場合 どう対処したらいいですか? というかどういう状況になると 失敗するんですか?
多分OSが勝手にクローズしてくれると思うよ。
ロック解除の方は分からないけど
>>455 そんなことじゃ、立派な泥棒さんにはなれないZO!
458 :
nobodyさん :2006/02/16(木) 01:33:55 ID:??? BE:266349964-
へーそうなんですか。 じゃあスクリプトからしかアクセスしないような ログファイルとかだったら 失敗してもそのまま終了してしまって問題ないですよね。
何だその揚げ足取るような口調は。 質問じゃないのか。
>>458 いいんじゃない?
貧弱なOSじゃなかったらスクリプト(PHPプログラム)が終了すると同時にファイルもクローズしてくれるだろうし。
くそぉ・・・またPerlの開発だよ・・・ もうPerl忘れちゃったよ('A`) いや、そんなにPHPとは変わんないけどさ、気分の問題だよ
462 :
nobodyさん :2006/02/16(木) 02:26:03 ID:U/SzwaHV
>>450 さんありがとうございます。あした会社でSQLiteを導入してみます。
データベースがはじめてなのに土曜日までに会員登録をつくらなあかんのです。
助かりました。ありがとうございます。
463 :
458 :2006/02/16(木) 02:28:49 ID:???
>>459 いやそんなつもりじゃなかったんです。
変な書き方してすみませんでした^^;
皆さんどうもありがとうございました。
>>461 Perl→PHPってあんまり難しくないけど
PHP→Perlって記号とか色々忘れてて結構きついよな
ちょっと疑問に思ったので・・・ xreaを使ってるんですが、 拡張子をphpにしてるにも関わらずhtmlとして扱われてしまいます。 もともとはMovable Typeのtmplという拡張子のファイルを、 PHPでカスタマイズしたものなのですが、 Movable Type側で、このファイルをhtmlとして扱うような 処理がしてあると考えるのが妥当でしょうか? Perlはわからないのでサッパリです・・・ 当然、ファイルは拡張子をかえたので、 そのファイルを使っているものに関しては、 拡張子の関連付けを変えました。
function next(& $time) ↑の「&」ってどういう意味をなすんでしょうか? くだらないかもですが、宜しくお願いします。
phpMyAdminでzip圧縮してエクスポートという機能がありますが、 PHPでzip圧縮なんて出来るんですか?
>>469 zlibを組み込んであれば、zipとgzipが扱える。
>>469 PHP自体はZIP読み込みしかできないが
PHPからUNIXのZIPコマンドを走らせれば一応できると思う
>>468 遅くなりましたがありがとうございました。
473 :
470 :2006/02/16(木) 09:53:03 ID:???
471さんの書き込みを見て説明不足かなと思ったので追記しときます。 PHP自体ではZIP読み込み関数しか用意されてないが、 phpMyAdminの話でいうとPHPからzlibを利用できる環境で zipとgzipの出力ができる。詳しくはzip.lib.php参照 (PEARのArchive_Zipクラスみたいなもん)
if(isset($r)){echo"$r";} $rにNULLを入れると、NULLと表示されてしまいます。 これって正しいですか?
476 :
474 :2006/02/16(木) 15:05:23 ID:???
>>475 formタグのvalue='NULL'で渡しているんですが、もしかしてこれって文字列になるんですか?
''としてもifの中を通ってしまいます。
ちなみに明らかに使っていないグローバル変数でif(isset())をしたら中を通ってしまったので、
ためしにNULLを渡してみたらやっぱりifの中を通ってしまいます。
さらにちなみにif(isset())は多用していて、機能する所と機能しない所があります。
なにが違うのかさっぱり分かりません。
どうかご教授下さい。
APACHEど素人、PHP駆け出しです。 APACHEを勉強しようと思い、マイPC(windows)にAPACHEをインストールし、 PHPを動作させました。 ところが、日本語の$_GET値が、勝手にURLデコードされてしまいます。 例えば、次のようなPHPファイルがあり、 test.php <?php print $_GET[key]; ?> 以下のようにアクセスすると、 test.php?key=%A4%A2%A4%A2%A4%A2 実行結果 ----------------- あああ ----------------- と表示されます。 正しくは、 ----------------- %A4%A2%A4%A2%A4%A2 ----------------- かと思うのですが、何が原因でしょうか。 お時間がある方教えていただけると助かりますm(__)m
こういう人にはC言語をやらせたいと思う俺C厨?
>>476 つかhtmlのformで渡せるのは"文字列"だけだよ。
文字列を受け取って、それをどう解釈するかは受信側に任されてるが。
482 :
474 :2006/02/16(木) 16:01:57 ID:???
a = NULL, b = NULL, c = 実行結果です。 引用符、二重引用符については一様分かっているつもりなのですが、 postで渡したNULLがどうしてもif(isset())を通ってしまいます。 value=NULL value="NULL" value='NULL' $_POST[r] $_POST['r'] $_POST["r"] いずれもif(isset())を通ってしまいました。 仕方ないのでNULLの代わりに0を渡して、 if($_POST[r] != 0)としました。 if(isset())は他でも使っているので気持ちが悪いッス。
>>476 フォームでNULLを渡してissetで判定、ってのは基本的には無理。
やるなら
if($r == 'NULL') unset($r);
とかやって変数を消すしかない。
> 明らかに使っていないグローバル変数
これでisset()を通るのは意味不明。どっかで $r = ''; とかしてるんじゃないの?
isset()で偽になるのは unset($r); で変数自体を消す場合と $r = NULL; とプログラム中で書いたとき。
>>482 POSTで渡したデータ = "NULL"または’NULL'と同義でNULLとは別。
>>482 通常、フォームに対するissetは「そのフォーム自体が存在しない場合」をチェックするのに使う。
なので、<input type="hidden" name="a" value="">とやった時点でもうissetは必ず真。
普通は<input type="submit" name="a" value="aを押したときの処理">みたいにsubmitで使って
どのボタンが押されたかの判別に使う程度。値の内容判別にissetを使うのは間違い。
487 :
474 :2006/02/16(木) 16:14:33 ID:???
>>481 ぬあ、そうなんですか、ってそうなんですね。
ありがとうございます。
ところで、formタグに囲まれている input type='file' は、
参照されなくても$_FILESに値が入ってしまうんでしょうか?
参照されていないのにif(isset($_FILES))でifの中を通ってしまいます。
482を読む限り、文字列とbooleanとNULL型とかの 基本的な「型」の区別すら付けられていない気が・・・・ (481を読む前に482を投稿したとしても)
>>487 print_r($_FILES)してみれ
出てきた変数は総てissetで真となる
490 :
474 :2006/02/16(木) 16:34:56 ID:???
みなさん、ありがとうございます。 昨日は動いてた気がしたんですよ、夢でも見てたんですね。 勉強し直して来ます。
ちょとPHPからずれるかもしれませんが 例えばある表のパラメータとかを入れるレコードを作るとして 2回目から入れる場合 主キー=aとか調べてあればupdateなければinsertっていうのより 一旦レコード全部削除してinsertばっかってやってるのですが 何かまずいことありますか? 調べる処理分時間も短縮されるのでと思っているのですが・・・
PHPじゃないじゃんデータベースじゃん 全然ちょっとじゃないよっヽ(`Д´)ノ
>>492 DBにもよるが、基本的に遅くなる。
詳しく知りたいならDB板行ってくれ
PHPとは関係ないかも知れませんが、 基本的にどの言語にもある変数や配列といった概念は昔からあるのですか?
コペルニクスの時代から
499 :
477 :2006/02/16(木) 17:10:43 ID:???
>>480 ありがとうございました。
PHPって勝手にデコードされるのが仕様だったんでしたね。
perlと行ったり来たりの開発でテンパッてました。
>>500 消す範囲によるんじゃね?
インデックスの状態に寄るだろうし、
トランザクションではさめばいい場合もあるし
>>499 PHPじゃなくてApacheとかがデコードすんじゃないのかな。
何でもPHPのせいにするのやめい。
>>478 は言えてたな。
Cでもやってりゃこんなアホな質問繰り返さない。
>>504 今AN HTTPDのログ見たら、ログにはデコードされてなかった。
申し訳ない。
506 :
nobodyさん :2006/02/16(木) 20:50:20 ID:ZZ/v8PR0
508 :
506 :2006/02/16(木) 21:30:26 ID:???
終わりかよ。
>>491 すげー。こんな奴見たことない。マイ人生のキチガイベスト1にランクインしますた。
>>510 この人、同じ所の別スレで無謀な転職相談して、
コテンパンにされてる…
ってか40歳かよ…ヾ( ´ー`)
513 :
506 :2006/02/16(木) 22:20:40 ID:ZZ/v8PR0
514 :
506 :2006/02/16(木) 22:26:18 ID:???
>>511 ありがとうございました。
なんかバタバタして申し訳ないっす。
>>512 ワロスwリストラでもされたのかね。人に聞かないと行動できないオジサン。
,へ^;,ヘへ、 ´`^^i1^v~ヽ !|i ||゚ ___」L__&/ヽ、 .:.:./ ̄  ̄\;:...;:.:.:.:.:.:.....:.:.:.........:.:.:. .:...^.^:ー.:.:.:.:...::.:.:.:..:.:.:^^~.:.:.:.:.::::.:.::^::::... :. :.:.. .:.: :::::::::::::::::::::::::::::,::::::::::::、::::::::::,::::::::::::....:.:.:......:.:.:....:.:
オッサンも必死なんだ。 今の日本が悪いんだ!だからオッサンを責めないでやってくれ!
オッサン、オッサン言うな! by オッサン
歳をとると、若いヤツが気に入らなくなるのが人間というものだ。
ゆとり教育の弊害に違いあるまい
某サイトのサンプルスクリプトで class指定の際に変数の型宣言をきっちりしている人がいるのですが、 自動判別にゆだねずあえて宣言するメリットは何なんでしょうか?
自動判別する処理が削減できる
結論から言うと、Cとかから流れて、PHPやってるやつ多いから、 自動判別は気持ち悪くて仕方が無いんだよ。 現場でも「気持ち悪い、気持ち悪い」とか言いながら「便利だよな」で。
525 :
nobodyさん :2006/02/17(金) 12:56:31 ID:U6ySh0xX
半角カナから全角カナへの変換スクリプト
ttp://pamo.dip.jp/blog/archives/000119.html windowsで、c:\piyo\foo以下のディレクトリにある
ファイルに含まれる半角かなを全角カナに変換しようと
思ってぐぐったら、上野サイトがみつかりました。
そこで、上記のサイトの通り、以下のディレクトリを作成し、
beforeの方に、変換したいファイルをごっさり入れました。
c:\piyo\foo\before
c:\piyo\foo\after
そして、上野スクリプトをこう書き換えました。
$r_dir='.;c:\foo\before';
$w_dir='.;c:\foo\after';
ですが、うまく動きません。
何か他に設定すべき所はありますか?
どなたかご教示願います。
526 :
nobodyさん :2006/02/17(金) 13:10:01 ID:U6ySh0xX
525です。 質問がわかりにくくすみません。 自己解決しました。
教えてもらったんじゃに、という意味で自己解決と書くんだろうけど こんな短時間で自分でミスを発見する程度のものを質問する時点で・・・ 結局、 \\ なのか?
528 :
nobodyさん :2006/02/17(金) 13:51:05 ID:U6ySh0xX
529 :
nobodyさん :2006/02/17(金) 15:33:48 ID:tkJ6TdC2
phpmyadminを安全のためpublic_htmlの外におきたいのですが、 そうするとhttpでアクセスできなくなりますよね。 自分はアクセスできるようにしたいのですが、 なにか良い案などありましたらご教授願えませんか? よろしくお願いいたします。
安全の為って、普通に.htaccessでいいじゃん。
531 :
nobodyさん :2006/02/17(金) 16:33:07 ID:Jyi+qfsM
質問します。WindNT+Apache+PHP4.4.1です。 PHPでアニメーションGIFを自動生成しようと思い GDでは出来ないということだったので、 ImageMagick(Windows版)というものを探してインストールしてみたのですが、 使い方がさっぱりわからなくて困っています。 どなたか、ご教示をお願いします。
532 :
529 :2006/02/17(金) 16:46:16 ID:tkJ6TdC2
>>530 さん
.htaccessは信頼してもよろしいのでしょうか?
セキュリティーは慎重にいきたいと思ってます。
>>532 質問の意図が良く分からない・・・;
そんな事言ってたらキリが無いと思ったのは自分だけ?
そこまで気になるなら、httpd.confと.htaccessに書いてIPSTABLEにも書き加えれば流石に大丈夫かと
連想配列に入ってるものを伸張したいんだけど $hoge['A']='aaa'; $hoge['B']='ccc'; $hoge['C']='ggg'; ↑ これを "A=aaa&B=ccc&C=ggg" みたいな文字列にしたい 泥臭くループ回せばとりあえずできる・できたんだけど、 格好良く惚れ惚れするコードは書くことが出来るだろうか
>>536 $s[]="A=aaa";
$s[]="B=ccc";
$s[]="C=ggg";
を作らなきゃやっぱだめ?
$hoge['A']='aaa'; $hoge['B']='ccc'; $hoge['C']='ggg'; $result = ""; foreach ($hoge as $key => $val) { $result .= $key . "=" . $val . "&"; }
$s = array(); foreach( $hoge as $k=>$v ) $s[]="$k=$v"; $str = implode("&", $s); どうしてもかっこよく出来ない。 $sが必要なのがダサすぎ。
ereg_replace ("&$", "", $result);
>>535 http_build_query($hoge);//PHP5 only
545 :
543 :2006/02/17(金) 17:37:57 ID:???
俺も今回初めてこの関数の存在を知った PHPならひょっとしてと思ってマニュアル見たらやっぱりあったって感じかな
>>543 すげぇ、ホントにこんな関数あるんだw
でもマニュアルは何故かこの関数だけ英語だな;
それにしてもphpの関数て日々増えてるけど全部把握してる人とかいるのかな・・・
俺は作成するとき関数名調べるのに時々ごっごる先生にお世話になってるけど他の人って大概頭に入ってる?
<?php print_r(get_defined_functions()); ?> で、出てきた関数を片っ端から調べてる。
なんかマニュアルでhttp_build_queryを検索してもエラーが出るんだけどなんでだ・・・? 他の関数だと普通に検索できるんからちょっと気になった。 ぐぐって調べたが便利な関数だな。早速書き換えてやるぜ
550 :
535 :2006/02/17(金) 18:30:09 ID:???
惚れた すごいなPHP
>>546 5で新規に追加された関数とか結構英語マニュアルしかないのいっぱいあるよ。
日本語化の中の人も追いつきません。
$hoge['A']='aaa';
$hoge['B']='ccc';
$hoge['C']='ggg';
print $query = join('&', array_map(create_function('$k', 'return urlencode($k)."=".urlencode($GLOBALS["hoge"][$k]);'), array_keys($hoge)));
せいぜいこんなもんだなぁ
>>546 オンラインリファレンスのカテゴリ一覧か関数一覧のどっちかで大抵見つかってる。
553 :
551 :2006/02/17(金) 18:45:44 ID:???
互換関数を自作するなら多分こんな感じ function http_build_query($a) { return join('&', array_map(create_function('$k, $v', 'return urlencode($k)."=".urlencode($v);'), array_keys($a), array_values($a))); } print http_build_query($hoge);
ぐぐっても参考サイトが見つけられなかったので、お願いします。 よく、会員登録フォームなどで「半角英数字4文字以上を入力して下さい」 っと但し書きがありますが、PHPで指定のフォームの文字数が一定値入っていないと エラーを返すような仕様にしたいと思っています。 登録内容確認ファイルに、正規表現とその個数を書いて、IFで判別するようにしたら 上記の事が可能だとは思うのですが、いまいちどのように記述すればよいかわかりません。 お手数ですが、教えていただければと思います。
>>554 if(strlen($_POST['input']) < 4 || ! ctype_alnum($_POST['input'])) {
エラー
}
strlen($str)<4 ?
質問の内容がイマイチつかめないが・・・ >登録内容確認ファイルに、正規表現とその個数を書いて ってどういう意味だ? 正規表現で「半角英数字4文字以上か判別する」なら if (!preg_match('/^[\da-z]{4,}$/i', $foo)) die; か? 555の方がいいかも。 にしても、検索しても見つけられないってのは 絶対検索の仕方が悪いだけだと思う・・・・ (もしくは検索結果の内容が理解できていないか)
558 :
nobodyさん :2006/02/17(金) 19:08:27 ID:qTAsxSAo
確かに、この内容がgoogleで探せないとしたら よっぽど検索が下手なんだろうな、って思うよな。
559 :
nobodyさん :2006/02/17(金) 19:15:39 ID:X1bnCm1p
>>555 ありがとうございます。この方法で問題なく出来ました。
>>557-558 「PHP 入力チェック」「PHP 文字数チェック」などで探しても駄目でした。
検索下手ですみません。
PHP 文字数 PHP バイト数
563 :
nobodyさん :2006/02/17(金) 20:15:24 ID:OSq2eJeb
'usernamecol'=>"username", 'passwordcol'=>"password", 外部ファイルのFORMからPOSTで取得したものを代入するには, usernameとpasswordのところをどう書き換えればよろしいのでしょうか? ご教授の程、よろしくお願いいたします。
どこに代入??
しかし相変わらず「ご教授」が多いな
567 :
nobodyさん :2006/02/17(金) 20:32:08 ID:OSq2eJeb
>>564 さんありがとうございます。
左辺にPOSTで受け取ったものを代入したいのです。
>>563 ひとまず
print_r($_POST);
でどうだ
$_POSTでググルって選択肢もある
>>568 もちろんphpが動作している鯖なんだよね?
571 :
566 :2006/02/17(金) 20:56:38 ID:???
>>570 動作している鯖です。
phpのカウンタはしっかりと動作してます。
>>571 やはり無理です・・・。
パーミッションは何も変更しなくていいんですよね。
<? ↑を禁止してるとか? <?php にしてみたらどうでしょう。
>>563 なんだか意味がよく分からんが
$hoge = array(
'usernamecol'=>$_POST["username"],
'passwordcol'=>$_POST["password"],
);
ってことが言いたいのか?
フォームの内容はどうなってて何て変数に代入させたいんだかさっぱり日本語が分からん。
>>572 1.
foreach($rss_array as $key => $files){
echo "";
のとこを
foreach($rss_array as $key => $files){
echo "<hr>$files<hr>";
にして何か表示される?
PHPが動作してて組み込みミスしてなきゃURLが表示されるはず。
2.
1でURLが出てくるようなら
$file = file($files);
の次の行に
echo "<pre>".join("",$file)."</pre>";
というのを追加してみてHTMLソースが表示されるかどうか。
これが出てこないならfile()での外部サイトアクセスを禁止してるサーバなので、
そのプログラムでのRSS表示は難しいかもしれない。
>>576 1と2どちらも成功。
ですが文字化けしてた・・・。
JpGraphもここで聞いていいか?
579 :
563 :2006/02/17(金) 21:56:31 ID:???
>>575 さんありがとうございます。コードはこちらです。
<?php
require_once("Auth/Auth.php");
// Authオプション
$params = array(
'dsn'=>"mysql://username:password@localhost/database",
'table'=>"usermng", // テーブル名
'usernamecol'=>"username", // ユーザ名の列名
'passwordcol'=>"password", // パスワードの列名
'cryptType'=>"md5", // パスワードの暗号化形式
'db_Fields'=>"*", // 他の項目の取得を可能にする
);
$objAuth = new Auth("DB", $params);
// 認証プロセスの開始
$objAuth->start();
if($objAuth->getAuth()) {
echo "ようこそ!" . $objAuth->username . "さん<br>";
// メールアドレスを取得。
echo $objAuth->getAuthData('email');
};
?>
引用(
http://www.bnote.net/php/pear/25_auth_db.html )
>>580 ('A`)ぅ ラジャ
JpGraphで、Y軸を児童にしてるとき、Yの取り得る範囲が
0〜5とか小さい範囲だと、小数点つきで目盛り振られたり
0.0 0.5 1.0 1.5 みたいになるんだけど、これを整数のみに
したいです。
$graph->yaxis->SetFormat("%d"); みたいにあてずっぽ
でやってみてもダメでした。
なんのプロパティのなにをどうしたらいいかヒントください。
>>577 まぁ、生ソース表示させたんで中身UTF-8のままだからな。
$file = file($files);
echo "<pre>".join("",$file)."</pre>";
mb_convert_variables("SJIS","UTF-8",$file);
を
$file = file($files);
mb_convert_variables("SJIS","UTF-8",$file);
echo "<pre>".join("",$file)."</pre>";
にすれば中身見えるんじゃないかな。
しかしそこまで動いてて表示が出ないのか…。
なんだか真面目にロジックの中身をデバッグしなきゃいけない悪寒。
作った本人いるんだからそいつにデータとコード確認させてぇ。
>>582 変えても
1.
foreach($rss_array as $key => $files){
echo "";
のとこを
foreach($rss_array as $key => $files){
echo "<hr>$files<hr>";
にして何か表示される?
PHPが動作してて組み込みミスしてなきゃURLが表示されるはず。
これしか表示されない・・・。
コードがいけないんすかね?
textintか。解決しました。
585 :
作った本人 :2006/02/17(金) 23:04:04 ID:???
2047 と出た。
つーかPEARのRSSでも使えばいんじゃね?
588 :
作った本人 :2006/02/17(金) 23:15:36 ID:???
>>586 最高レベルか。
んじゃーRSSリーダープログラムの一番上の行に以下を挿入して。
<?php
error_reporting(E_ALL ^ E_NOTICE);
?>
ってか
>>583 の発言で
これしか表示されない・・・。
コードがいけないんすかね?
これってどれ?
589 :
作った本人 :2006/02/17(金) 23:16:42 ID:???
>>583 >>582 の変更をしたら、それまで出てたRSSのソースXMLが全く出てこなくなった、でおけ?
ちゅーことは
mb_convert_variables("SJIS","UTF-8",$file);
ここでUTF-8からSJISへ文字コード変換するのに失敗して全部データが消えてる模様。
mbstringが使えないかもしくは設定を間違ってると思われる。
ひとまず phpinfo(); ですか
JpGraphで、ラインプロットで 折れ線グラフ描いている時 データに空白を入れることなくグラフを途中で切るには どうしたらいいでしょうか
>>592 これまたアプリ固有の話題だな。
""で飛ばすのが仕様だから、方法はないよ。
空白""がいやなら、あとは"x"とか入れるか。
XML宣言で<?xml〜が、phpのスタートとして扱われてしまいエラーが出ます。 サーバはXREAです。 これの対処法が持っている本に書いてあった気がするんですが、 どうしても見つからなくて困っています。 <?xmlがphpの始まりと認識されなくする方法がわかる方教えていただけませんか?
htmlspecialchars() で変換した変数を 元に戻す関数ってあるでしょうか? ブラウザで表示するときは、変換して、 処理するときは戻したいのです。
>>595 ない。
そういう処理の場合(htmlに限らない)加工前のデータを
保持しておいて、出力に合わせて加工するのが普通。
あと、htmlspecialchars()のUser Contributed Notesを
見ると良い事があるかも。ただ厳密な可逆処理となると面倒。
599 :
598 :2006/02/18(土) 06:17:00 ID:???
>>595 print htmlspecialchars($hoge);
って表示する時だけ処理すればいいって話じゃない?
フォームに前ページのデータをPOSTで受け取っておいて、 初期値として表示させておくことは <INPUT type="text" name="hoge" value="<?=$_POST["hoge"];?>"> で問題ないのですが、 これがSELECTタグのような場合、簡単に OPTIONタグにselecedを付加する (valueに一致するoptionにselectedを付加する)方法ありますか? あるにはあるんですが、自分の考えた方法だと ループさせて一致させてselectedを付加するという 非常に回りくどいやり方です、これしか思いつきませんでした。 下のようなOPTIONに動的にselectedを付加することが できるようにしたいのです、例えば変数1がPOSTされたら1、 変数2がPOSTされたら2、という感じです。 <OPTION value="1">1</OPTION> <OPTION value="2">2</OPTION> <OPTION value="3">3</OPTION>
くだらないかもですが、今までflockでロック用ファイルをロックして使ってたスクリプトがあり、正常だったのですが昨日から鯖エラーが出て原因不明でした。 今朝見てロック用ファイルがロックされっぱなしなのかと思い、それを削除してアップし直したら正常に動きました。 ロック用ファイルがロックされっぱなしになることってあるんですか?また、あるなら回避する方法も知りたいです。
php.iniとかでWARNINGが出た場合は 特定のメールアドレスへエラー内容を送信、 みたいなことってできる? プログラム側でやろうとしたらかなり面倒になりそうなんで。
例えばAとBという値がありAの処理は必ず、Bの方は値があれば共に30回とか同じ処理行いたい場合 for(30まで){ Aの処理 } if(B!=""){ for(30まで){ Bの処理 } } とforを2回、値チェックは1回回して値ごとに処理する方ががいいのか for(30まで){ Aの処理 if(B!=""){ Bの処理 } } とforが1回、値チェックを30回するほうがいいのかどちらがよいと思いますか?
>>588 音沙汰なしです・・・。
>>589 perlだとサイトに表示出来ないってかSSIが使えないので・・・。
>>601 一個目。
$OptValue = $_POST["hoge"];
$selected1 = "";
$selected2 = "";
$selected3 = "";
switch($OptValue){
case 1: $selected1 = " selected"; break;
case 2: $selected2 = " selected"; break;
case 3: $selected3 = " selected"; break;
}
<OPTION value="1"<?php echo $selected1 ?
>>1 </OPTION>
<OPTION value="2"<?php echo $selected2 ?
>>2 </OPTION>
<OPTION value="3"<?php echo $selected3 ?
>>3 </OPTION>
----------------------------------------------------
二個目。
$OptValue = $_POST["hoge"];
<OPTION value="1"<?php echo( ($OptValue == 1?" selected":"") ) ?>>一</OPTION>
<OPTION value="2"<?php echo( ($OptValue == 2?" selected":"") ) ?>>ニ</OPTION>
<OPTION value="3"<?php echo( ($OptValue == 3?" selected":"") ) ?>>三</OPTION>
ですが、SELECTタグは何度も使うもののような気もしますので
SELECTタグを自動生成する関数などを用意したほうが効率が良いと思われます。
<?php $OptValue = $_REQUEST["hoge"]; echo "<form>" ."<select>"; $num = 20; for ($n = 1; $n < $num; $n++) echo "<OPTION value=\"$n\"" . (($OptValue==$n)?(" selected"):("")) . ">$n</OPTION>"; echo "</select></form>"; ?>
608 :
nobodyさん :2006/02/18(土) 11:48:44 ID:XJx/AN5S
example1.phpから、example2.php内のアンカーポイント(top)に飛ぶのに リンクはhtmlみたいに、./example2.php#topってやってもエエのん? (´・ω・`)そんなやり方ダセー!とか言われない?
驚かないで聞いてくれ! #以降の文字は サーバに送信すらされないんだっ!
610 :
nobodyさん :2006/02/18(土) 12:02:59 ID:XJx/AN5S
>>609 えええええ?
じゃあ、どうすればエエのん?(´・ω・`)
613 :
608 :2006/02/18(土) 12:14:45 ID:???
>>612 そうそう!それです!
よかった、もっとPHPらしいやり方とか
あるのかと思いました…。
>>611 ,612
お二方レスさんくすです!ヽ( ^∀^)ノ
>>601 >>606 さんが行ってたユーザ関数を使う俺の場合
もっとこうしたらってのがあったらよろ
下ではvalueとselectしか出力して無いけど、optionタグ丸ごと出したほうがいいかもって気がしてきた
------------------------------
selected(5);
function selected($value)
{
print 'value=' . $value;
if($_GET["hoge"] == $value)
{
print " selected";
}
}
------------------------------
メールの件名のやつ?ISO-みたいな感じの奴にエンコードするには どうすればよかとでしょうか? mb_send_mail以外で使うためです。
>>617 mb_encode_mimeheader
>>601 <OPTION value="1"<?php echp ($value==1)? " selected": ''?
>>1 </OPTION>
<OPTION value="2"<?php echp ($value==2)? " selected": ''?
>>2 </OPTION>
<OPTION value="3"<?php echp ($value==3)? " selected": ''?
>>3 </OPTION>
くらいしか…
>>604 「30回ループ」という仕様が変更頻度の高そうなものなら後者。
パフォーマンス的には前者。
>>616 optionタグに追加の属性とか入れたくなったときに困るから
俺ならselectedしか出さないようにする。
>>622 あ、しまった。パフォーマンスについてはforのループ条件次第かも。
625 :
604 :2006/02/18(土) 16:02:18 ID:???
>>624 ありがとうございました。
変更はないですし前者でやってみます。
626 :
nobodyさん :2006/02/18(土) 16:05:33 ID:rgTa0qqQ
フォームから投稿された値がSJISで有るかどうかを判別するにはどうすればよいのでしょうか? 内部文字コードはSJISで、PHP4.4.1を使用しています。
>>626 単純にその値だけ見て厳密な判定は不可能。
(特定の文字が入力されると判定を失敗する場合がある)
よくある手法としては、hiddenで絶対に誤判定しない文字列を常時入れといて
そいつがSJISになってるかどうかで判定するという手法。
mb_detect_encodingはどう?
629 :
nobodyさん :2006/02/18(土) 17:41:24 ID:rgTa0qqQ
echo mb_detect_encoding($_POST[a], 'auto'); で$_POST[a]にいろいろしていましたが、SJISをうまく判別してくれません。。 hiddenでいれてもだめでした。 半角英数字だとASCII、ひらがなをいれると何も表示されず、iモードの絵文字を入れるとUTF-8になり、 何も入力しないとASCIIです。。
文字コード判定はあてにするな。
ていうか、半角英数字のみのSJISとASCIIを区別できると期待するのはおかしいぞ。 hexdumpしてみ。 それにiモードの絵文字ってそもそもSJISの範囲じゃないのでは? 調べたこと無いので違うかもしれないけど。
誘導されてきました。
Autorank PHPについてご存じの方いますか?
ttp://www.jmbsoft.com/software/arphp/ 日本語での検索機能が動かないんです
"サイト"で検索すると
http;//〜Keyword=%A5%B5%A5%A4%A5%C8
というような感じでエンコードされて、画面にも サイト と表示されるのですが、
検索がうまくいっていきません。
文字コードはHTML、DB(MySQL)ともにEUC-JPで運用してます
よろしくお願いします >_<
633 :
nobodyさん :2006/02/18(土) 18:43:52 ID:hW4iLyW6
>検索がうまくいっていきません。 検索がうまくいきません でした 他のサイトでEUC-JPで運用しているサイトがあり、 うまくいってるようなのですが原因がわかりません >_<
>>629 それは多分、php.iniのautoの設定にSJISを入れてないせい。
>>629 autoじゃなく"SJIS,EUC-JP,JIS,UTF-8"にするとどーなる?
636 :
nobodyさん :2006/02/18(土) 20:09:32 ID:rgTa0qqQ
できました!ありがとうございます。 2chはどうやってSJISを見分けているのでしょう?
>>632 ですが、MySQLは全文検索に対応してないんですね Orz
LIKE を使ってスクリプトのクエリ部分をいじってみます
他になにかいい方法ないのかな・・・
mb_convert_encoding("aiueo","SJIS","auto"); ってさ、mb_convert_encoding()にauto使うと時々失敗しちゃうよな?
文字コード問題はほんとにやっかい・・・ ↑のはMySQLの問題だったとは orz LIKEで代用 orz
そらぁまぁしょうがない。 ある集合がどの集合に属するか判定するって言う問題は奥が深ぇと カンチョールもゆっとる。
マニュアルのmb_detect_order()のところに、
> auto" は、 "ASCII, JIS, UTF-8, EUC-JP, SJIS"に展開されます
とある。
なので、
>>629 のような現象が起こるのは至極当然のことかと。
>>641 >>いや、それだと
>>629 の状態にはならない。(ひらがなでSJISになるはず)
これって、最近のPHPの仕様が変わったのかWin32版の問題なのかは知らんけど、
"auto"は"ASCII,UTF-8"に展開されるみたいよ。SJISやEUC-JPは判定しない。
試しに
mb_detect_order("auto");
var_dump(mb_detect_order());
ってのを実行すると、結果は
array(2) {
[0]=>
string(5) "ASCII"
[1]=>
string(5) "UTF-8"
}
となるのよ。(PHP 4.3.10 Win32版の場合)
643 :
642 :2006/02/18(土) 22:48:36 ID:???
なんか変なとこに>>入っちゃった
644 :
nobodyさん :2006/02/18(土) 23:35:34 ID:VuSKJfnu
$str = '私は$fooです。'; $foo = "田中"; という状況で $strのなかの$fooの値を反映したい (つまり、$strの中身を「私は田中です。」にしたい) のですが、何か良い方法があれば教えて下さい。
>>620 遅レスすいません。ロック中で処理できず502エラーでタイムアウトしてた感じです。ちなみに一年くらいそのスクリプトを使っていて、このようになったのは初めてです。現在普通に稼働してます。
>>644 ○変数は使う前に宣言・初期化
○シングルクォートの中の変数はパースされないので、ダブルクォートを使う
>>644 evalかereg_replace辺りで
>>642 array(5) {
[0]=>
string(5) "ASCII"
[1]=>
string(3) "JIS"
[2]=>
string(5) "UTF-8"
[3]=>
string(6) "EUC-JP"
[4]=>
string(4) "SJIS"
}
-------------------------
WinXP
PHP Version 5.1.1
>>644 少なくとももう少し自分で実行してから質問するべき
おまいら普段文字列とか使うときシングルクォートとダブルクォートどっち使ってる?
case by case
>>645 自分でそんなの再現させたことないから分からんけど、PHPを実行中のApacheスレッドが
途中で異常終了しちゃったりなんかするとflockを解除できずに終わるかも。
flockって通常はプロセス単位で処理してるんでプログラムが異常終了=flockも解除だけど、
CGIと違ってSAPIなPHPみたいに「1個のPHPが異常終了してもApache自体は終了しない」場合では
OSはその終了を検知できないと思うんだよね。
となると、fclose時またはexit時、die時、エラー終了時などにPHPのコアが自動でflockを解除してるはずで、
それが実行できなかった場合にflockがいつまでもかかったままになるのかもしれない。
で、回避方法…定期的にApacheを再起動でもして、不正なflockを掃除するくらいしかないんじゃない?
どう考えてもApacheかPHPが正常動作しなくなった場合くらいしかそんな状態にはならんと思うから
その状態で対策しようったって無理がある気がする。
推測が外れてたらすまそ
>>649 PHPのバージョンによって挙動が違うのか??
>>654 PHPはバージョンが違うと恐ろしく変わってくるぜ!
>>649 試しに最新の4.4.2にしてもやっぱASCII,UTF-8になった…
v4系の問題??
>>656 mbstring.language = Japanese
を設定してないだけだ。
デフォルトのphp.iniではコメントアウトされてるぞ。
658 :
657 :2006/02/19(日) 00:39:22 ID:???
お前らって結構優しいのな
このスレの半分は優しさで出来ています
661 :
nobodyさん :2006/02/19(日) 01:16:48 ID:8QITr0F/
訳あってHTMLに記事を書き込むPHPを書いてweblogのようなものを書いているのですが、 コメントやトラックバックの機能を実装したいと考えています。 管理者が(kakikomi.html)から記事を投稿した際に、(blog.php)でトップページに記事を書き足し、 その日付のHTMLをコメント用HTML(060218.html)として出力します。 コメントはcomment.phpがその日の日付を判別し、コメント用php(060218.html)に書き込まれます。 コメントを付けられたのが記事を投稿したその日ならいいのですが、 comment.phpは日付でコメント用HTMLを探しにいってしまうので、 日付が変わってからコメントをつけると次の日の日記を書いたときにコメントを書いたことになってしまいます。 長文で申し訳ありませんが、何かいい解決方法ありましたらよろしくお願いします。 フリーサーバーを使っていて、広告が入ると著しくデザインが崩れるので、 トップページをphpで構成したいところなんですが、なんとかHTMLで出力したいと考えています。
状況がよく分からないけどhiddenで記事の日付を渡すとかじゃ駄目なの?
正規化しろ
664 :
661 :2006/02/19(日) 01:24:57 ID:8QITr0F/
>>661 >comment.phpは日付でコメント用HTMLを探しにいってしまうので、
>日付が変わってからコメントをつけると次の日の日記を書いたときにコメントを書いたことになってしまいます。
この部分の仕様にかなり問題があるような気がするけど・・
あるブログの投稿に紐付けされたコメントなら、その関連を情報として残せばいいだけなのでは・・。
設計を考え直すべきなんじゃない?
>>661 comment.php?date=060218 みたいに対象日付を付加してリンク張れや
>>653 そうですね。すごく稀なことだと思いますが、定期的なチェックが大事ですね。
どうもありがとうございました。
俺さ、最初配列って訳が分からなかったんだよ。 全部変数に入れればいいじゃんってな。 だから$int1 $int2 みたいに書いてたんだよ。 あ、もちろん最初の頃だけだぜ? でな、とある関数に出会ったんだ。stat()ってヤツだ。 マニュアル見てみたらファイル情報を配列で返すって書いてあるんだよ。 そんなもん使ったことねーし興味ないけど、その時は気分が良かったんだな。 使ってみようと思ったんだよ。 で、いざ使ってみたらこの素晴らしい利便性! 世界が変わったよコードが半分に減ったよミスも減ったよ。 いや、それだけ素晴らしいってことを言いたかっただけだ。 じゃあな、また来るぜ。
670 :
nobodyさん :2006/02/19(日) 11:56:21 ID:iKD+hWT/
>>670 結果は見えてる。
インデントや改行まで取り去らないと気がすまなくなる。
PHPで配列と呼ばれているものは厳密には配列ではない
673 :
nobodyさん :2006/02/19(日) 12:29:59 ID:iKD+hWT/
>>671 確かにそうですね。体感速度に影響ないくらいの向上なら、可読性優先の
ほうがいいかも。
・変数は全て1文字 ・コメントなんて邪道なものはすべて取っ払う ・空白文字なんて以ての外、改行も入れずにスクリプトは1行で構成 ・実行制御に余分な時間を取られるのでループは全て展開
一度つまったらデバッグがえらい大変そうだな
そして変数のissetとか周りで腐るとw 改行だけは省略できね。
>>674 昔BASICでゲームプログラミングする時はそんな風に仕上げてたな。
普通に記述してから変換ツール通したり。
678 :
nobodyさん :2006/02/19(日) 13:55:11 ID:iKD+hWT/
改行くらい入れないとテキストエディタの横スクロールが激しすぎて、生産性 大幅ダウンしそう...
まあ、大抵の人間はエディタは自動で折り返すようにしてるわけだが。
680 :
nobodyさん :2006/02/19(日) 14:13:00 ID:j5wr3rm8
datとかのログファイルを直接見れないようにするにはどうしたらいいんですか? 属性を606から変えたら、プログラムから読み書きできないし・・・
まあ、普通に作った後に改行を削除すりゃいいと思うんだが。
>>680 > 属性を606から変えたら、プログラムから読み書きできない
?(´△`) デキルダロ
拡張子をcgiとかにしれ
確認君や診断くんのようなproxy判定スクリプトを作りたいのですが、参考になるスクリプトはありませんか?
phpinfo
>>683 いや、作る段階でそんなこと言ってるようでは
役に立つ判定プログラムは作れないと思うよ?
というか、診断くんそのものをダウンロードすれば
参考どころの騒ぎじゃないだろ?
JpGraphで、GroupBarPlot内のバーに 隙間を開けたいんだけど、どうしたらいいかな? BarPlotでSetWidth設定してもダメだった。
>>680 直接見られたくないファイルは、ドキュメントルートの下に置かない。
688 :
nobodyさん :2006/02/19(日) 16:38:45 ID:8orHyj9/
requireで読み込むファイルがSJISの場合、 自動的にEUC-JPに変換して読み込みたいのですが、 どうすればよいでしょうか?
689 :
nobodyさん :2006/02/19(日) 17:11:43 ID:iKD+hWT/
requireではないけど、 $line = file_get_contents('file'); $line = mb_convert_encoding($line, 'EUC-JP', 'SJIS'); でいかがでしょう?
require で読むのが PHP スクリプトが書かれているファイルではないってのは
非常識なコーディングだろ。
普通のファイルは
>>689 のように読んでくれよ頼むから。
>>688 それ、他人が作ったライブラリとかの類?
692 :
sage :2006/02/19(日) 19:06:37 ID:iKD+hWT/
1行目 20行目 3行目 っていう内容のtest.txtというファイルの内容を、 1行目 2行目 3行目 というように一行だけ書き換えたいんですが、どうやればできますか。 file_get_contents->preg_replace->file_put_contentsという方法も 考えたのですが、これだとメモリを浪費しそうなので、一行ずつ操作 する方法を教えていただけるとありがたいです。
>>692 fopen "r"→fopen "w"→whileでfgetsしながらfputs
694 :
692 :2006/02/19(日) 19:17:53 ID:???
早速の回答ありがとうございます。 fopenを違う引数で2回呼び出すわけですね。使ったことがない関数がでて きたので、これから早速試してみます。
695 :
nobodyさん :2006/02/19(日) 22:49:33 ID:QKFjYBJ6
do{ $i++; }while($i == 5);←ここで真ならば、特定の動作を行ってからdoに戻る というようなことは可能でしょうか。 また、代替案もあればぜひご教授お願いいたします。
698 :
661 :2006/02/19(日) 23:26:20 ID:8QITr0F/
皆さんありがとうございます
>>667 のようにするのって何て言うんでしょうか?
調べようにもよくわからないのですが・・・・
699 :
nobodyさん :2006/02/19(日) 23:40:10 ID:cMtmYVLo
>>697 今いちやりたいことがよくわかりませんが、
無限ループさせたいのでしょうか?
while (1) {
$i++;
if ($i == 5) {
// 処理を記述
}
}
ではだめでしょうか?
701 :
661 :2006/02/19(日) 23:59:21 ID:8QITr0F/
>>699 phpにリンクでURLを渡す(?)
見たいなことなんでしょうか>?
<a href="./comment.php?date=060218">foo</a> こういうことじゃないの?
703 :
697 :2006/02/20(月) 00:16:12 ID:???
>>700 ご返答ありがとうございます。
説明が分かり難く申し訳ありません。
無限ループではなく、$i==5が偽になった時点でループを抜けたいのです。
1)doの内容を実行
2a)whileが真ならば"特定の処理"を実行した後doを実行
2b)whileが偽ならば"特定の処理"を行わずにループ終了
御指南いただいたコードですと、ifのところが偽ならばwhileループを抜ける、ということです。
付け加えさせていただきますと、ちょうど下記の動作です。
$hoge = 1;
while ($hoge) {
$i++;
if ($i == 5) {
// 処理を記述
}else{
$hoge = 0; // breakで二重ループを抜けられると良いのですが・・・
}
}
この動作をdo...whileでできないものかと試行錯誤していたのですが、
ふと気づけば希望の動作が完成してしまいましたね・・・
ただ、もう少し綺麗な書き方はないでしょうか。
頼んでばかりで大変申し訳ないのですが、私の力量ですと案が浮かびません。
今一度、よろしくお願いいたします。
704 :
661 :2006/02/20(月) 00:49:07 ID:wo/bPpPB
comment.php?date=060218 ~~~~~~~~~~~~~~ この部分はcomment.php側にはどのように送られて、 どう処理して受け取ればいいのでしょうか?
「クエリ」「GET」とかでぐぐれ
echo $_GET['date'];
あれPHPってwhile continueないの?やっぱPerlだなw
>>695 .htaccessかhttp.confで.html拡張子もPHPであると指定する
>>698 お前はWebプログラムの基礎の基礎の基礎から1度やり直せ。
つーか、そんなのも知らずにプログラムしようとするな!!
まず1冊でいいからWebプログラム入門の本の頭から読んでみろよ。
そんなんでコメントはともかくトラックバックなんて仕込まれた日には社会の迷惑。
711 :
697 :2006/02/20(月) 07:20:41 ID:???
>>707 示唆していただきありがとうございます。
こうすればいいのですね。これならば最後のループだけ違う動作も行えますね。
do{
$i++;
if($i<=5){
//特定の動作
continue;
}
//最後のループのみで実行される動作
}while($i <= 5);
>>697 ,
>>703 の$i==5はすべて$i<=5の間違いでした。
度々申し訳ありません。
よくわからんが for($i=1;$i<=5;$i++){ if($i<=5){ //特定の動作 continue; //←なしでもいい }else{ break; } } じゃだめなの?
713 :
712 :2006/02/20(月) 08:23:25 ID:???
なんか変に書いてしまた・・ for($i=1;$i<=5;$i++){ //特定の動作 if($i==5){ //最後の処理 } }
同じ条件式を複数書いてると仕様変更時にバグ出しそうだけどな
$i=0; while (TRUE) { if (++$i<=5) echo '途中'; else { echo '最後'; break; } } で良さそうな
わざわざwhileでなくdo〜while使ってるってことは$iはいくつからスタートするか不定なんだと思うが。
do-whileを使ってるという事は必ず一回はやりたいって事だな?
そこまで溜まってません
俺はやりたい
素敵な会話中にすみません。 ちょと教えてほしいのですがinputのテキストフィールドなどの値を表示させるとき <input value='<?=$hoge?>'> だと$hogeに'が入っているとおかしくなるし <input value="<?=$hoge?>"> だと$hogeに"が入っているとおかしくなるし <input value=<?=$hoge?> style=〜> だと$hogeが空白だとvalue後のタグが値と認識されて おかしくなってしまうのですがどうしたらよいのでしょうか?
変数のスペルミスを防ぎたいのですが。。。 変数の宣言を強制する方法はありますか?
>>721 ----test.php----
変数aに10を入力し、それを変数bに移し変数bを出力する
====source====
error_reporting(E_ALL);
$a = 10;
$b = $c; // 未宣言としてここは防げる。
$c = 10; // ここは防げない。
echo $d; // 未宣言としてここは防げる
----<test.php>----
>>722 URLエンコード??htmlspecialcharsじゃないのか?
720の始めの一行につぼったw
727 :
697 :2006/02/20(月) 15:30:36 ID:???
なんだか色々とありがとうございます。
>>713 「特定の動作」は、ループの最後の"$i<=5"が真ならば実行し、偽ならば実行せずにループ終了
というようにさせたいのです。
それですと必ず最初に「特定の動作」を行ってしまうので、申し訳ありませんが趣旨とは少し異なります。
>>715 ちょうどその動作です。
綺麗なコードをどうもありがとうございます。
>>716 $i=0と考えていただいて結構です。申し訳ありませんでした。
>>717 最初にdo...whileを使おうと方針を立てただけで、同じ動作が行われるならば特に問題はないです。
do{
//ループ
}while(条件式) ここに条件が真の場合に行われる動作 ;
このような仕様になれば楽なのですけどね。
>>727 $i=0から開始なら
for($i = 0; $i <= 5; $i ++, 特定の動作) {
}
でいいじゃん
キーをID、値をPASSになるように連想配列を作りたいのですがうまくいきません。。 ちょこっとヒント頂けませんかoz $conn=ocilogon("xxx","yyy","zzz"); $sql = "select id,pass from users"; $stmt = OCIParse($conn, $sql); OCIDefineByName($stmt, "ID", &$dbid); OCIDefineByName($stmt, "PASS", &$dbpass); OCIExecute($stmt); while(OCIFetch($stmt)){ $idpw[$dbid] = $dbpass; } OCIFreeStatement($stmt); OCILogoff($conn);
環境書き忘れてました apache2.2 oracle9rs2 php5.1.2 簡単なsql文でデータは持って来れてるのは確認したので 配列に格納するところがおかしいとは思うんですが・・・
>>729 問題なく動きそうな気が駿河…
結果として$idpwの中身ってどういう状態になるんだ?
732 :
729 :2006/02/20(月) 16:44:05 ID:???
ありゃ・・今確認してみたら格納できてました。てことは他のとこか 聞く前にまだ自分にできることあったのに気づかなかったのがセンスなさ過ぎますね(TT ありがとうございました またしばらく悩んでみます
733 :
697 :2006/02/20(月) 17:27:15 ID:???
>>728 ・・・。
自分が情けなさすぎます・・・。
ありがとうございました。
>>733 Cやれば?
おまいなら3ヶ月ぐらいで初級並みの実力なら超えられそうだが。
訳わからん。このままPHPでいいじゃんw
PHPプログラマーになりたいのか、プログラマーになりたいのかで違うな
737 :
nobodyさん :2006/02/20(月) 18:54:32 ID:E2kZov7h
PHPでContent-type: text/plain;なページを出すにはどうしたらいいですか? PHPの最初で header('Content-type: text/plain;'); としてもうまくいきません。
headerの前で何か出力をすると意味ないよ。 header前でechoとかprintとか使ってない?
preg_match_allで、n回マッチしたら処理を終了させるよう なことはできますか? 例) preg_match_all('([0-9]+?)', '1,2,3,4,5,6,7,8,9', $matches); この例では5までマッチしたら正規表現による検索を中止したい。
740 :
737 :2006/02/20(月) 19:02:18 ID:???
>>738 > headerの前で何か出力をすると意味ないよ。
> header前でechoとかprintとか使ってない?
使ってないです。
ちなみにheader()の前でheaders_sent()してみるとFalseでした。
php.iniの設定の問題ですかね…
>>740 改行や空白など一切のデータがheaderの前で出力されていない必要が
あります。
742 :
nobodyさん :2006/02/20(月) 19:05:32 ID:??? BE:350811296-
>>738 に補足
<?php の前に(たとえ空行でも)何かあってはならない
くだらない質問です。 カンマ刻みの「要素,キー」が複数行あるデータをtxtファイルから読み込みasortしたいのですが。 読み込んだファイルから一気に連想配列を作成のしかたを教えてください。 自分では、 $lines = file("test.txt"); で読み込んだあとに、 $i = 0; foreach ($lines as $value) { list($a => $b) = explode(",",$lines[$i]); echo "$a => $b"; $i++; } でできるかな…とかおもったんですが無理でした。 勉強中なんですさまじく頭悪い質問だとおもいますがよろしくお願いします。
>>739 allでは無理。つーかallって言わないだろそれ。
preg_matchはそれを実現するために4.3.3以降でoffset指定ができるようになってるから
ループで回せ。
>>739 条件にあるループにして途中で
break
die
return
continue
あたりで出来るんじゃね
preg_match_all使ったこと無いけどさ
746 :
739 :2006/02/20(月) 20:04:30 ID:???
回答ありがとうございます。 >allでは無理。つーかallって言わないだろそれ。 うーm、確かに それでは、ループで回してみます。
>>745 preg_match_allは一発で全検索結果を返すための関数だよ
>>743 > list($a => $b) = explode(",",$lines[$i]);
ここで無理せずに
list($a, $b) = explode(〜);
$array[$a] = $b;
にしときなよ。
>>748 レスありがとうございます。
やっぱ、それしかないんですかねぇ。
問題ないしやっぱりそれでいこうかとおもいます。
回答ありがとうございました。
利用可能なPEARパッケージを全てインストールしたいんですが、 一発でインストールできるコマンドは無いんですか? 落としたパッケージを一つ一つ入れる方法しか見つかりません。 Fedora core4です。
綺麗なコードなんて書かなくていい。 見やすいコードを書くんだ。
綺麗なコードって見やすいコードじゃないの? それを言うなら「かっこいいコードなんて書かなくていい。分かりやすいコードを書くんだ」だと思う。 バグを生まない鉄則だよね。
753 :
697 :2006/02/20(月) 22:34:44 ID:???
>>734 実はCからPHPに移ったクチでして・・・
今度はVS2005が手に入ったのでC++に挑戦するつもりです。
タブ区切りのデータファイルの任意の行の任意の列にある文字列を参照して表示するにはどう記述すればいいんでしょうか? 例 hoge.csv の2行目,6列目の文字列を表示 <?echo
______ ______ r' ,v^v^v^v^v^il / ヽ l / jニニコ iニニ!. / ジ き ぼ l i~^' fエ:エi fエエ)Fi ! ャ れ く l ヽr > V ! イ い は l l !ー―‐r l <. ア な l __,.r-‐人 `ー―' ノ_ ヽ ン / ノ ! ! ゙ー‐-- ̄--‐'"ハ ~^i \_ _ノ ヽ ! ヽ、_ _.ノ i \  ̄ ̄ ̄ ̄ ヾV / ! /.入
>>750 それってソフトやOSの設定でしょ?
Linux板行けば?
>>754 $fl = file ("hoge.csv");
$sp = split ("\t", $fl[1]);
$target = $sp[6];
かな。
>>757 なんで split を使わせるんだ? 正規表現じゃないなら explode で充分
perl上がりと見た
つfgetcsv
だあああああああめだあああああああああああああ fgetcsvなんて運頼みの関数使っちゃああああああああ
マジでfgetcsvは危ないぞ これ試してみ "ソ","あああ"
fgetcsvは、確かにカンマとダブルクォートのデフォルトだと危ないけど、 タブ区切りだけのものとかにこう使うと問題無く使えて便利だよ。 $line = fgetcsv($fp, 1024, "\t", '');
PHPからZIP圧縮、またはJAR圧縮して標準出力に出力する場合にはどの関数を使えばよいですか? ZIP解凍関数ならあるのですが…
>>766 関数はないのではないかな。
execかsystemを使って外で圧縮すればよいかと。
>>737 どううまくいかないのかわからないが
IEはContent-type無視するから意味ないよ
770 :
nobodyさん :2006/02/21(火) 10:26:49 ID:9X8UKVFd
SESSIONについて質問します。 ショッピングカートの原型を作っているのですが、 $nameにtestが入っていて送信すると、$_SESSION['test']=$testになるようにし、 header('Location')で次のページで表示します。 再び前のページに戻って今度は$nameにtest2が入っているデータを選択して 送信します。しかし、次のページではtestしか表示されません。 次のページではforを使って、$_SESSION['test']に入っているデータをすべて 出すようにしたのですが、1つしか入らないみたいです。 説明が下手で済みませんが、セッション変数に次々とデータを入れて すべて表示させるような事はできるのでしょうか?
間違えました・・・ $nameにtestが入っていて送信すると、$_SESSION['test']=$testになるようにし、 ↓ $nameにtestが入っていて送信すると、$_SESSION['name']=$nameになるようにし、
>>770 >$nameにtestが入っていて送信すると、$_SESSION['test']=$testになるようにし、
>header('Location')で次のページで表示します。
現在の$_SESSION['test']=="test1";
>再び前のページに戻って今度は$nameにtest2が入っているデータを選択して
>送信します。しかし、次のページではtestしか表示されません。
現在の$_SESSION['test']=="test2";
$_SESSION['item'] .= "test1,";
$_SESSION['item'] .= "test2,";
のように買い物籠のリストを作成してみては?
そんで$_SESSION['test1']が買い物かごの内容にすればいいんじゃないかな。
call_user_func()とcall_user_func_array()について質問なんですが 両者の違いは引数を羅列して渡すか、配列にして渡すかだけですか? 例えば、 function test($var1, $var2, $var3) { return $var1 + $var2 + $var3; } 関数testを呼び出して引数を渡したい場合、 $result = call_user_func('test', $a, $b, $c); と、 $result = call_user_func_array('test', array($a, $b, $c)); は等しいという認識であってますか?
774 :
nobodyさん :2006/02/21(火) 12:27:14 ID:nnE5DkIV
ある文字列が投稿されたら、MySQLで曖昧検索を行って検索結果を出すスクリプトを書いています。 その時に文字列のみをハイライトしようと思い、曖昧検索のため大文字,小文字は両方ハイライトしてもらいたいため mb_eregi_replace でやろうとしましたが、特定の文字列では正規表現されないのでエラーになります。(当たり前ですけど) どうすれば英数小文字,大文字でも正確にハイライトできるでしょうか?? PHP4.4.2を使用しています。
>>773 call_user_func_arrayの方は引数は必ず二つでなくてはならない。
'function name'と'parameter(mixed)'
call_user_func はいくつでも引数を指定できる。
例えば
function hoge($a, $b)と
function hogehoge($a)
を使い分けたい場合は
call_user_funcでは引数の数が合わなくなってしまいますが、
call_user_func_arrayを使えば
call_user_func_array ('hoge', array('a_var', 'b_var'));
call_user_func_array ('hogehoge, array('a_var'));
とできるので、call_user_func_arrayの方が柔軟性があると言えるでしょう。
>>774 preg_match_all使ってみては?
例文としては。
<?php
$a = "abcdefg/hijklmn/opqrstu/vwxyz";
preg_match_all ("<[^/]*>i", $a, $b);
print_r ($b);
?>
777 :
773 :2006/02/21(火) 13:09:52 ID:???
>>775 丁寧にありがd
call_user_func_array()の方が見栄えが良くていいな。書き換えるか。
レスサンクス。
778 :
774 :2006/02/21(火) 13:24:41 ID:???
レスありがとうございます。 preg_match_allは始めてみましたがいまいち使い方がよくわかりませんでした。 とりあえずquotemeta()で一時的に対処しました。
$hoge が配列かどうかってどうやって調べるんだっけ?
is_array
783 :
774 :2006/02/21(火) 17:39:23 ID:nnE5DkIV
やはり実稼働してみてもだめでした。。 エラーログには PHP Warning: mb_eregi_replace(): mbregex compile err: premature end of regular expression in... という記録が残されているのですが、どのような文字列が投稿されてるのかも解らず困ってます。。
>>783 エスパー呼んでこようか?
とりあえずどういう風に使ってるのかを書いてくれ。
一時的なものと割り切って、入力内容もログ吐いちゃえば? 入力された時刻を合わせて記録しとけばエラーログと突合せもできるだろ。
php.iniのmbstringの設定がおかしいだけなんでねーの
787 :
774 :2006/02/21(火) 18:01:28 ID:nnE5DkIV
$out=mb_eregi_replace(quotemeta($str),"<Font Color=\"#FF0000\">\\0</Font>",$out); で使用しています。php.iniは mbstring Multibyte Support enabled Japanese support enabled Simplified chinese support enabled Traditional chinese support enabled Korean support enabled Russian support enabled Multibyte (japanese) regex support enabled mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1. Directive Local Value Master Value mbstring.detect_order no value no value mbstring.encoding_translation Off Off mbstring.func_overload 0 0 mbstring.http_input pass pass mbstring.http_output pass pass mbstring.internal_encoding SJIS SJIS mbstring.language neutral neutral mbstring.substitute_character no value no value となっていて、imodeでも使えるようにしているのでSJISコードです。 とりあえずログ吐かせてみます。
788 :
774 :2006/02/21(火) 18:14:39 ID:nnE5DkIV
原因の文字列が解りました。 "ー" でした。
SJISだと、「ー」の2バイト目が [ と重なるんでそのままだとまずいんだがどうか 「ゼ」とかどうよ
790 :
774 :2006/02/21(火) 18:24:02 ID:nnE5DkIV
だめでした。。 おっしゃるとおりです。
mb_stringがあやしいってことか。
792 :
774 :2006/02/21(火) 18:42:15 ID:???
初めはstr_replaceで対応していたのですが、英大小文字に対応できなかったのでmbを使うようになりました。 ただこうなるとは思わず、ちょっとやっかいです・・
>>787 > mbstring.language neutral neutral
これJapaneseに設定してみて
mbstring.language Japanese Japanese となりましたが、やはりエラーです。。 んー困った。。。
>>783 $result = mb_ereg_replace ($replace_str, "<Font Color=\"#FF0000\">\\0</Font>", $input, "ip");
と後ろに"p"をつけてみて。
mb_ereg_replace(x,y,z,"i");と
mb_eregi_replace(x,y,z);は同じ動作するから。
797 :
774 :2006/02/21(火) 19:10:25 ID:???
>>795 かわんないです。。
>>796 読んでみました。pもつけてるのにな。
あと、mbでやると"ゾ"を代入しても変換されないことに気づきました。
str_replaceで英大小文字も変換できるだけでいいのに・・・
こんばんは、よろしくお願いします。
このサイトのソースを見ながら、フォームからアクションで動作するプログラムを作っていたのですが
ttp://www.komonet.ne.jp/~php/program/bbs/chap1.htm Array
(
[action] => regist
)
$_POSTではこのように返ってきているのですが、if文の後の処理がされません。
実際は、掲示板を作りたいわけでなくラジオボタンが全て選択されているときにだけ、次のページor次の処理へというようにしたいのですが。
よろしくお願いします。
ファイル名test.php
<FORM ACTION="test.php" method="POST">
・
・
・
<INPUT TYPE="SUBMIT" VALUE="書き込み/更新">
<INPUT TYPE="HIDDEN" NAME="action" VALUE="regist">
・
・
if($action == "regist"){
〜
}
>>798 スーパーグローバル変数を調べてごらん。
$action = $_POST['action'];
で$action埋めてなくちゃif文は実行できないよ。
>>795-796 おまえ途中の話を全然読んでないだろ…
>>794 mbstringの問題じゃなく、quotemetaがマルチバイトに非対応なせい。
mb_ereg_replace使ってマルチバイト対応のquote処理を自前でやるか
SJISやめてEUCに変換してから検索するとかしないとダメかもな。
>>798 そこのサイトのプログラムは古くて、ほとんどの場合、そのままでは動作しない。
というか$_POSTの存在まで気付いときながら何故そんな旧時代のサイトを参考にしてるんだ。
>>801 返信ありがとうございます。
そうなのですか。
アクションリスナーでnullが返ってきたらページを移動させない。
みたいなニュアンスで作れるのかなと前途記述したサイトをみてやってみたのですが。
$_POSTはすでに使用していて、別ページにとんだときにラジオボタンの状態に応じた処理をつくりました。
その前のページでのラジオボタンのチェックミスがあったときの処理についてアドバイスをください。
>>803 すいません。
ラジオボタンによる選択肢を2つ用意したとして、1つに記入ミスがあったとする。
実行ボタンを押しても次のページに飛ばず再入力を求めるようなものを作りたい。
if(入力ミスがあったら?){
}
をどのように記述すればいいかがわかりませんでした。
javaの場合だと
アクションリスナーでアクションをキャッチできるのですが。
phpの場合だとformの実行ボタンを押した、という状態をどのように感知するのかがわかりません。
調べてたら、
if(count($_POST) > 0){
でできるかもっぽいことがわかったのでためしてみます。
>>804 なるほど…
でも、勉強を含めて覚えてる最中なのでできれば妥協はしたくなかったんです。
見苦しい質問ですいません。
>>805 勉強も十分必要だが、適材適所を見極める目も養ったほうがいいよ。
コードを組めるようになったのに、汚いコーディングしかできなくなると自分で大変だから。
>>805 PHPがどこで実行されるのかつーと、鯖で動くんだなこれが。
鯖側で動くJavaのJSPやServletなんかも鯖で動くんだな。
一方、JavaScriptやAppletなんかは、ブラウザ側で動くことになる。
普通はこんな感じになるんじゃないかな。
1. JavaScriptで入力チェック、okであれば 2.へ。(JSが嫌いな人は 1.は無し。ブラウザ側)
2. PHPで入力チェック後、エラーメッセージなり既入力値なり何なりを付け足したHTMLを出力。(鯖側)
ちょいと変わり物だと、Ajaxを使うのもありかな。
>>794 mbを使わない
preg_quote
など。ただしこれを使ってもまた別な問題が発生する。
特に理由がなければEUCで書いて出力だけSJISにする方が早い。
>>809 など、というかその組み合わせだな。
>>797 1.mb_eregを使うならエスケープは自力でやる
2.quotemetaやpreg_quoteを使うならeregかpregを使ってmb_eregは使わない
mb_eregじゃなければquotemetaやpreg_quoteでSJISが相手でも正しくクオートできるが、
その代わり1文字のSJISコードなどを正常にマッチできる保障はなくなる。
ま、元々がstr_replaceを使ってたって言うんならeregi_replaceでいいんじゃないの?
>>805 > phpの場合だとformの実行ボタンを押した、という状態をどのように感知するのかがわかりません。
type=hiddenで特定のデータを埋め込んでおいてそのデータが送信されたかどうかをチェックするか、
type=submitにnameをつけてそいつの送信の有無を確認する。
812 :
798 :2006/02/21(火) 22:02:00 ID:???
>>811 なるほど、ということは。
ファイル名test.php
<FORM ACTION="test.php" method="POST">
・
・
・
<INPUT TYPE="SUBMIT" VALUE="実行">
<INPUT TYPE="HIDDEN" NAME="action" VALUE="regist">
・
・
if($action == "regist"){
〜
}
というプログラムで$_POSTが
Array
(
[action] => regist
)
と返ってきていてif文内の処理がされないのは、別の部分の記述ミスということなのかな。
あと、
>>805 さんの2個目のやり方だと。
<INPUT TYPE="SUBMIT" VALUE="実行" NAME="id">
if($id == "実行"){〜}
という感じですかね?もう少し勉強してから出直してきます。
if($_POST['action'] == "regist"){ 〜 }
>>812 ここはお前のメモ帳じゃないんだ。
ちゃんとAN HTTPDやApacheとPHPを入れて自分で実践してくれ。
>>812 そんなに $_POST['action'] や $_POST['id'] を嫌ってあげなくてもいいと思うのよ
816 :
nobodyさん :2006/02/21(火) 22:07:53 ID:y3MPaFDb
なぜ堀江もんが送ったとされるメールの、ヘッダを調べないでうだうだやってるんですか?
extract($_REQUEST)最強伝説
>>814 ごめん
何度か自鯖でためしてたんですが、参考にしてたサイトのやりかたが古かったようで。
いまいち使い方がわかってなかったようです。
>>813 thx
サンプルスクリプト眺めてるとPOSTやGETを展開してるのが多いけど、そのまま使っても問題ないですよね?
展開ってのはextractって事?
extractしてるのは脆弱性だいすきっ子だから。
>>820 それもありますけど
$user_id = $_POST['id']
みたいなかんじで別の変数に入れてたり。
例えばどういった問題が発生すると思うの?
>>823 特にそういうのは無いんですが何となく気になったので。
>>818 参考にするサイトは公式マニュアルが一番。
extractは極力使わないほうがいいと思います。 例えば、 hoge.php?_SESSION[user_pw]=hogehoge って形で送られてきたとします。これを extract($_GET) しちゃうと、$_SESSION['user_pw']の値が、 "hogehoge"に変更されてしまいます。 もし事前にユーザのパスワードを、$_SESSION['user_pw']に 保持してたとしたら、勝手に書き換えられてしまうことになります。 それを避けるために extract($_GET, EXTR_SKIP) ってやって上書きを避けたとしても、 このままでは変数の初期化を忘れる危険性があります。 extract($_GET, EXTR_PREFIX_ALL, "get") と、接頭辞をつけるのが一番安全な気はしますが、 それなら最初から $hoge = $_GET['hoge']; ってやるのと手間が変わらないと思いますし、可読性も増します。 確かにextractするのは楽だと思いますけど。
よーは、XSSとか、SQLインジェクションとかを気にしてるんだろ。 みんな分かってるくせに。 どんな時でも値チェックは基本。 時には正規表現も使う。これでいいか?
値チェックの例あげてもらっていいですか? htmlspecialcharsに通すだけにしてるんですけど、 それだけじゃ足りないでしょうか?
>>830 足りるケースもあるが、そのデータの入力の自由度が高い場合は足りない。
>>830 値チェックにもいろいろあると思うが・・。
数字チェックや全角チェック、SQLに入れる場合のチェック等
特にWEBプログラム,PHPに特化した話じゃないと思うんだよな、値の妥当性チェックって。 やってて当たり前っつーか。
値の妥当性チェックはだいたいわかるけど、 どういうことを入力されたらXSSやSQLインジェクションに繋がるかがわからない・・・ 赤マンモス本しか読んでないから、セキュリティ関係の本も読んだほうがいいのかな。
836 :
nobodyさん :2006/02/22(水) 10:40:13 ID:OxTvy2cr
PHPでepsファイルを生成するのは可能ですか?
837 :
nobodyさん :2006/02/22(水) 10:49:53 ID:/RILhY7o
はじめまして。
個人的に携帯専用の求人情報サイトを作りたいと
思っていますが、
PHPの知識は皆無ですので、
システムが構築できません。
システムの参考HPは
http://www.jwpc.jp/ です。
どなたか、安く作成してくれる方、
または安く作成してもらえるところはないでしょうか?
メールを記載しますので
[email protected] お返事ください。
システムの機能に関しては詳しくお返事しますので
どうかよろしくお願いします。
>>837 個人的に、話の最初から「安く」と言ってくる仕事で
クライアントが期待する金額が妥当な価格であった試しがない。
話の中で優先度の高い条件のひとつに、
予算(安く)が出てくる事は当たり前だが。
>>837 SOHO系のスレッドにでもいって、
そこで頼んでみたほうがいいと思うよ。
仕事がない暇だーって言ってる人もいたし。
あとそういった用途にはちょっとPHPは不向きかもね。
>>837 システム参考とのサイトがなぁ…ネタッぽ杉
「求人情報サイト」とかいって作ったら、
いつの間にかカスタマイズされて
出会い系サイトに流用されそうなオカン
>>839 「そういった用途」って何?
>>840 PHPは処理速度が遅いから、
たくさんのリクエストを同時に抱えると極端に遅くなる可能性がある。
っていうこと。
>>840 たくさんてどれくらい?
だいたいの目安とか。
phpの知識ないのになぜここにきたのか理由がわからん
PHPって処理速度遅いんだ。何と比べてるんだろ。
>>841 では、どんな言語を使ったら良いのでしょう?
Java最強 処理速度にこだわるだけならCとかもいいんでね? インタプリタだからPHPの処理が遅いのは仕方がない。 ってここなんのスレだっけ?
>>836 epsってただのテキストファイルじゃなかったっけ?
epsを出力するエンジンがあるのか?って質問かもしれんが…
>>846 > インタプリタだからPHPの処理が遅いのは仕方がない。
2回目以降は遅くないって聞いたことある。
例えば以下の場合 <?for(〜){?> <tr> <td>〜</td> <?for(〜){ 処理a?> <td></td> <?}?> </tr> <?}?> とか書いているのですがもっと綺麗に書く方法はありますか? で、こういう場合上みたいにtdの頭をそろえた方がいいのか? <td>と<?の頭をそろえた方がどちらが良いのでしょうか?
Smarty を使うとか
853 :
850 :2006/02/22(水) 12:01:03 ID:???
>>851 前echo使いまくってたらデザイナーの方に
見にくいって怒られたwので
使い分けしています。
>>850 <table>
<?php
for (;;) {
echo "<tr><td>" . 〜 . "</td>";
for (;;) {
処理a
echo "<td></td>";
}
echo "</tr>";
}
?>
</table>
そもそもそこまで入れ子にしない方がいい。
だけど気になるので分かる人俺にもついでにおせーて。
>>848 中間コードコンパイル後の実行処理もJavaやPerlに比べて結構遅いよ。
1回目がめちゃ遅いんであって、2回目以降でも決して速くはない。
>>853 デザイナーと分業してるんなら、
>>852 じゃ無いが、テンプレートエンジン使えば?
Flexy とかもあるぞ。
>>853 これが俺のデザインなんです。
って言ってみようぜ。
俺はお前のデザイン分からんように、お前も俺の知的フィールドは理解できんだろ。って
クビは覚悟だな。
859 :
850 :2006/02/22(水) 12:53:19 ID:???
>>829 extractを使うと初期化しないで使っている変数がある場合や、
extract以前に処理した変数の値が任意に設定できるため、
XSSやSQLインジェクションなどわかりやすい物だけではなく、
もっとわかりにくい論理的破綻すら招く。
デバッグはしにくいし、どこでどう転んで脆弱性を生み出すか検討するのも大変になる。
ならば、extractを乱用するのは避けるべきであるってことだ。
見通しの悪いコードは書かないのは基本。
>>859 こっちが進歩するだけが世界じゃない、
向こうが進歩する事もまた世界の一つだ。
>>860 昔から気になってたんだけど、Let's PHP
あれはどうなん?
extract使ってるけど。
>>861 register globals問題にとりあえず対応するためにやってそのまんまだな <LetsPHP
>>863 >
>>861 > 諸悪の根元
(・ω・;)ω・;)・;) )...マヂ??
レッツPHP!を参考に、つい先日から勉強を始めたばかりなのですが・・・。
ええextractも「これが基本かっ!」てな感じで使ってました・・・。
865 :
nobodyさん :2006/02/22(水) 14:05:25 ID:YzTdS2nd
スレ違いだったらごめんなさい。 windows server 2003でIIS6.0を使用してます。 PHP4.4.2をインストールし、nucleusでblogを作成したところ、 「エラー発生アプリケーション w3wp.exe、バージョン 6.0.3790.1830、エラー発生モジュール php4isapi.dll、バージョン 0.0.0.0、エラー発生アドレス 0x00002443」 とアプリケーションログに記録され、表示できなくなりました。 どうやら、PHP4.4.2のバクのようで、STABLE版の使用で解決するらしいのですが、STABLE版はIISで使用できるのでしょうか? また、設定方法等、解説しているサイトをご存知でしたら、ご教授願えませんでしょうか? よろしくお願いします。
各種処理の結果を表示するhtmlのテンプレートを_template.htmlとして用意し、 それを利用してブラウザに情報を挿入したhtmlを表示させるにはどうすればよいのでしょうか? 今までは表示用のhtmlを、あとから情報を挿入したい部分毎に細切れにしたものを変数に入れておき、 情報を挟みつつ順番につなげてからechoで出力していたのですが、 デザイン面の変更にかなり手間がかかっていました。 そこで次に試してみたのは、 _template.htmlの情報を挿入したい部分に{$hoge}と入れておき、 $hoge = "output test"; $output = file_get_content("_template.html"); echo $output; としてみたのですが、ブラウザにも「{$hoge}」とそのまま表示され、$hogeに格納した文字列は表示されませんでした。 たとえば$output = "テスト{$hoge}";とやると$hogeの内容が表示されます。 どうすれば_template.html中の{$hoge}のような部分に変数の内容を表示させることが出来るのでしょうか? よろしくお願いします。
>>864 あそこは凄いね。ある意味勉強になるよ。
SQLインジェクションとかがやり放題なスクリプトとか放置されてるし
(確かここで指摘されて知ったんだが)
870 :
nobodyさん :2006/02/22(水) 16:51:33 ID:25ErppZd
print関数内の変数を全て htmlspecialchars を使ってエスケープ処理をする、といった場合にはどうするのが一番簡単でしょうか? print関数内の変数名の全てを htmlspecialchars($hoge) のように変更すれば良いのですが、 それだとコードが汚くなってしまうので・・・。 よろしくお願いします。
apacheの最新版と PHP 5.1.2 の最新版をソースをDLしてコンパイルしてインストールしました。(OSはLinuxです) それで正常に動作しているのですが、make uninstall には対応していないようですので、 例えば新たに PHP 5.1.3 が公開された場合には、どうやってアップグレードするのがよいのでしょうか? 1. Apacheの設定ファイル httpd.conf から 「LoadModule php5_module modules/libphp5.so」 を削除 2. Apacheの再起動 3. make install 時に作成されたファイルを全部手動で削除(rm, rmdirコマンド) 4. 新しいバージョンを落としてきてコンパイル、make install 5. Apacheの再起動 といった手順で問題ないでしょうか。
>>870 ソース内の「print」を一括置換で、
「$tempdata .=」に変えておいて、
処理の最後で
print htmlspecialchars($tempdata);
>>870 ob_start()で出力内容を全部バッファに格納しちゃって
プログラムの最後でprint htmlspecialchars(ob_get_contents())ってのはどう?
function hoge($str){ print htmlspecialchars($str); } とか作って hoge($str)で読み込ますのは駄目?
>>868 高木さんも、あのサイト批判したらいいのに。
個人サイトだけど、公開してGoogleランクが非常に高いのは責任あるだろって。
(責任云々は無茶だけど。効果の問題として)
>>872 print $a,$b,$c; とか,でパラメータが渡されてるパターンの話だから、
それだと無理。,→.を追加ってのもスマートじゃないので、無しにしようよ
>>876 お前は、
>>870 か?それともエスパーか?
>>870 のどこに
>print $a,$b,$c; とか,でパラメータが渡されてるパターンの話
なんて記述があるんだ?
>>871 make cleanしてから新しくinstallする
879 :
870 :2006/02/22(水) 17:22:39 ID:???
皆様ご回答ありがとうございます。
>>876 は私ではありません。
条件が不足していて申し訳ありませんでした。
「print関数内の変数を全て htmlspecialchars を使ってエスケープ処理をする、といった場合にはどうするのが一番簡単でしょうか?」ではなく、
「print関数内の変数全てのみを htmlspecialchars を使ってエスケープ処理をする、といった場合にはどうするのが一番簡単でしょうか?」です。
つまり、
print "<strong>貴方のIPアドレスは" . $hoge . "です。</strong>"; となっている場合に
変数以外の部分の <strong> はエスケープせずに、変数である $hoge をエスケープしたいと考えています。
>>879 ま、普通は出力用変数$hogeに値を代入する時点でやっちゃうね
>>878 make clean は
make時に作成された一時ファイルの削除でしょ、全然違うと思うけど。
# make deinstall
# make uninstall
などが提供されている場合もあるけど、phpだとそれがない。
従って手動でファイル消すしかないっしょ
>>875 知らないだけかもしれんし、突っ込みどころ大杉で
やらないだけかもね。
>SQLインジェクションとかがやり放題なスクリプト
なんて、たいていの入門書がそうなってるし。
PerlのKENT WEB PHPのレッツPHP
$c = array_map( null, $a, $b ) の逆関数ってそれぞれarray_filterするのがベストでしょうか?
いちいち消さなくていいじゃん
レッツPHPは、PHP初期の普及には役立ったが、 今となってはかなり古くて、汚いコードに見えるね・・・。
>>871 checkinstallでパッケージ作ってアンインストール
>>886 よくあるように、
「既にその役目を終えたと判断し、閉鎖させていただきます」
みたいな潔い幕引き出来んもんかね・・・
889 :
871 :2006/02/22(水) 18:30:04 ID:???
>>887 なるほど。
それは便利ですね。
ありがとうございます。
890 :
900 :2006/02/22(水) 18:49:20 ID:???
XML-RPC API を使い、Movabletype への エントリークライアントを作っています。 metaWeblog.newMediaObject でフォームから画像をアップロードしたいのですが、 アップロードされたファイルのサイズが1.5倍程に膨らんでしまいます。 以下、ソースになります。よろしくお願いします。PHP 4.3.11 <?php require_once("XML/RPC.php"); $GLOBALS['XML_RPC_defencoding'] = "UTF-8"; $mt_host = "host名"; $mt_xmlrpc_path = "Movabletypeの mt-xmlrpc.cgi へのパス"; $mt_user = 'user'; $password = 'pass'; $c = new XML_RPC_client($mt_xmlrpc_path, $mt_host, 80); $appkey = new XML_RPC_Value('', "string"); $username = new XML_RPC_Value($mt_user, "string"); $password = new XML_RPC_Value($password, "string"); $blogid = new XML_RPC_Value("1", "string");
891 :
900 :2006/02/22(水) 18:50:02 ID:???
if($Myfile){ $UPLOAD = fopen($Myfile, "r"); $image = fread($UPLOAD, $Myfile_size); fclose($UPLOAD); $image64 = new XML_RPC_Value(chunk_split(base64_encode($image)),'base64'); $imageName = new XML_RPC_Value($Myfile_name, "string"); $Params = new XML_RPC_Value(array('bits' => $image64, 'name' => $imageName), 'struct'); $message = new XML_RPC_Message('metaWeblog.newMediaObject', array($blogid, $username, $password, $Params)); $result = $c->send($message); $filepath = XML_RPC_decode($result->value()); echo $filepath{'url'}; exit(); } ?> <html><body> <form method="post" action="<? echo $PHP_SELF; ?>" enctype="multipart/form-data"> <input type="file" name="Myfile"> <input type="submit" value="SEND"> </form> </body></html>
892 :
890 :2006/02/22(水) 18:51:03 ID:???
すみません、900ではなく890でした。
PHP勉強始めて2週間の駆け出しです。 みなさんにお聞きしたいのですが、どうやってプログラム勉強されたのですか? PHPが初のプログラム言語(って言っていいのかな?)なんで戸惑ってます。 ひたすらサンプルとか拾ってきて勉強したりするんでしょうか? ○日で覚える系の参考書を一通り手打ちして、連想配列ってのがあるんだぁ など知ったレベルです。 デザイナーなので、職業プログラマになるつもりは無いのですが 最近PHPに触れる機会があり、興味を持ったので勉強しています。 助言を頂けたらうれしいです。 よろしくお願いします。
>>893 ローカルに環境を作り、自分で書いてみるのが一番です。
サンプルを真似して書いてみるのもいい勉強になると思います。
(簡単なチャットや、レス無掲示板などいい勉強になると思います)
慣れてきたら、ただ書き写すだけではなく、
値を変えてみるとか、自分なりに色々いじってみるといいでしょう。
サンプルでわからない単語・関数が出てきたら、
公式のマニュアルを参照するのが良いでしょう。
それを読んでわからなければここで質問すればいいだけです。
サンプルに慣れてきたならば、
今度は一から自分で作ってみたいと思うようになります(多分)
簡単なプログラム(チャットとかでなくてもいいと思います)を
作れるようになる頃には、
自分なりの勉強方法が確立できていると思いますよ。
環境だけはローカルに作りましょう。
(Googleで検索するとインストールの方法がいろいろ出てきます)
レンタルサーバーなどで実験するのはただの迷惑なので。
以上、個人的な見解でした。
(個人差はあると思います)
>>894 ありがとうございます。
一応ローカルにapache入れて環境は作ってあります。
いろんな所からサンプル拾って真似てみます。
とりあえずチャットに決めました。
また書込み機会があればよろしくお願いします。
それでは失礼します。
KENT WEBのYYBBSだっけ?あれのソース酷かったよなぁ。 今のはどうか知らんけど。
898 :
890 :2006/02/22(水) 20:35:09 ID:???
解決しました。
ファイルサイズが増えた時点で気付くべきでしたが、
バイナリエディタで覗いてみたところデコードされていませんでした。
MT に Base64.pm が無かったので、extlib/MIME に
Base64.pm(MIME-Base64-2.23)を追加し、以下にソースを修正。
$image64 = new XML_RPC_Value(chunk_split(base64_encode($image)),'base64');
↓
$image64 = new XML_RPC_Value($image,'base64');
MIME-Base64
http://www.perl.com/CPAN/modules/by-authors/id/GAAS/ どうみてもPHPと関係ないスレ汚しです。
本当にありがとうございました。
スレ違いだが、報告乙
Webアプリのボタンにショートカットキーを割り当てたいのですが、 AccessKeyってファンクションキー(F1とか)は設定できないのでしょうか。 別にAccessKeyでなくてもよいのですが、他に方法を思いつかないので・・。
902 :
900 :2006/02/22(水) 21:44:40 ID:???
今知りましたw サヨウナラ・・
function HOGE($str) { print htmlspecialchars($str); } HOGE("htmlspecialchars+printしたい文字");
>>903 それだと
HOGE('<strong>ここは<強調>したいんです</strong>');
はダメだからわけるしか無い
レッツPHPは日本での普及のきっかけにもなったんだから、 そこらへんは評価してあげないと。 今となっては穴だらけのスクリプトでも、 当時は感動したもんだ。
phpで作成したhoge.dataファイルに再度書き込みをしたい時にパーミッションの関係で書き込みできません。 chmodコマンドは、借りている鯖側の処理で禁止されているのかな? ファイル生成段階で属性って決めて保存ってできるか教えてください。
>>906 普通、PHPで出力したものは自分自身がそのオーナーなんだから
特にパーミッションなんて変更しなくても再読み書きできるもんだが、
そこのサーバーで何かおかしな真似されてるんじゃないか?
で、chmod以外でパーミッション設定は無理かと。
定数を""で囲った中で出力する場合どうしたらいいのでしょうか? マニュアル見ても define ("CONSTANT", "Hello"); echo CONSTANT; // "Hello"を出力します。 としか書いてないんですけど、 echo CONSTANT World!!; といれたらエラーが出ますし、 echo "CONSTANT World!!";としたらそのままの文字列が出力されてしまいます。 変数の場合は、 echo $a;でもecho "$a";でもecho "{$a}";とかでも出力されますよね? 定数もecho "{CONSTANT}"みたいに何かで囲むことで、 出力されるようになるということはないですか? それともこういう使い方の場合は変数を使えということでしょうか?
>>908 定数を "" で括って使う事自体定数の使い方がおかしい。
定数はその内容を意識しないで使うモンだ。
fopen( "example.dat", LOCK_EX ); の LOCK_EX みたいに普通は引数に使うだけ。
ライブラリや組み込み関数で使う定数の内容なんか意識しないで使うだろ?
そういう使い方をするものは変数が適している。
910 :
909 :2006/02/23(木) 10:48:11 ID:???
ちょっと例に出した fopen 関数の引数が激しく間違っているが flock( $resource, LOCK_EX ) と思ってくれ
echo CONSTANT."World!!";
912 :
nobodyさん :2006/02/23(木) 11:01:07 ID:HLa5KG/+
mb_ereg_replaceで { ? ? ? ( ) などを置換したくて[{???()]と書いてもパースエラー [\{???\(\)]と書いても同様にパースエラーがでます。 Parse error: parse error, unexpected '[', expecting ')' たぶん ) がエスケープできていないと思うのですがどうすれば ) を エスケープできるのでしょうか。
913 :
nobodyさん :2006/02/23(木) 11:02:30 ID:HLa5KG/+
うあ、特殊な文字が?に化けてる。 そこは気にしないでください。
次スレのテンプレなんか追加するものある? phpの他のスレを関連として書いとくとかFAQとか
919 :
nobodyさん :2006/02/23(木) 14:11:48 ID:HLa5KG/+
>>916 だめみたいです。
勘違いしているだけかもしれませんが、
$text = '(abc)'
$text = mb_ereg_replace("[\(\)]*","",$text));
というふうに原因追及のため簡単に書き直して試してみましたが
やっぱりパースエラーが出ちゃいます。
parse error, unexpected ')'
var_dump($text)でabcと出したいのですが、
どこを間違えているのでしょうか。
PHP Version 4.4.1です。
>>920 なー
mb_ereg_replace の括弧な。
開きは1コなのに閉じが2コ。
問題は正規表現じゃねー。
>>920-921 助かりました、マジでありがとうございます。
こんなことに何時間も悩んで、
なんかすごくバカらしくて涙が出てきました。
正規表現のエラーなら
mb_ereg_replace errorとか関数名がきちんと出てくるしな。
>>922 そうやって成長してくもんさ。
オメデトウ。
>>922 PHPの文法チェック機能がついてるエディタとか開発環境使うと涙の数は減るよ
>>924 何使ってる?
俺はOEdit使ってる。
残念ながらPHPは未対応だけど。
コマンドライン起動のスクリプトの中で 自ホストを取得するには どうしたらよいでしょうか?
>>925 PHPeclipse
CVSとエディタしか使ってないから使いこなせてるとは言い難いんだけどね('A`)
ロースペックマシンだと動作の重さで涙が増えるかも。
統合開発環境スレだともっといろいろ教えてくれるんでないでしょか。
正直、(〜)と{〜}の対応チェック&ジャンプ機能がついてるエディタがあれば十分だと思う。 個人的にあるとうれしいのはHTMLのタグ間ジャンプ。 閉じタグを確認するというより編集範囲を探し出すのに重宝するって感じだけどね。
タグを 田 って感じでごっそり閉じれるエディタは便利だよな
>>926 IPでなくホスト名?それってその気になれば複数設定できないか?
全角カナを半角カナに置き換えるコードってないでしょうか? <form action="index.php"> <input type="text" name="moji" size="40" value="<?echo "<a href="database.cgi?keys2=" . $moji . "">" . $moji . "</a>" ?>"> <input type=submit value=sub> </form> こんな感じでフォームに文字を入れてsubmitすると $moji の部分が置き換わるようにしてるんですが、 これを <input type="text" name="moji" size="40" value="<?echo "<a href="database.cgi?keys2=" . $moji . "">" . $moji2 . "</a>" ?>"> として、 「$moji」は入力した通りの文字, 「$moji2」は全角カナがある場合は半角カナに置き換えて表示するようにしたいのですが。
失礼 <?echo "&lt;A href=&quot;database.cgi?keys2=" . $moji . "&quot;&gt;" . $moji . "&lt;/A&gt;" ?>"> ↓ <?echo "&lt;A href=&quot;database.cgi?keys2=" . $moji . "&quot;&gt;" . $moji2 . "&lt;/A&gt;" ?>">
日本語正規表現で出来ないかな。 まぁカタカナなんて50種類ぐらいしかないんだから、 悩むより全通りやったほうがはやいとおもう^^;
とりあえず俺が思いついたのは preg_replaceで地道に $zenkaku = array ("ア", "イ", "ウ"...); $hankaku = array ("ア", "イ", "ウ"...); とやる。
>>931 mb_convert_kana($str, "k");
>>935 が一番スマートな方法だね。
ただ、コンパイル時にマルチバイト関数を有効にしていないと使えないけど。
パッケージ管理システムとかで入れてれば、マルチバイト関係のパッケージ入れるだけだけどね
>>930 ホスト名です。
しかもバーチャルホストなんですけど
>>938 CLIからWebとかftpのバーチャルホストかどうかなんて判んないから取得できないよ。
CGIのI/Fのように環境情報が渡されてないから。
>>938 マンコドラインからphpinfo()実行してみ
マンコラインとは縦筋の事か?
>>938 で、そのCLIってのはどうやって起動されるんだ?
Web上のPHPやCGIからsystemで呼び出し?
それとも手動またはcronで実行?
前者なら子プロセスに環境変数が継承されるかもしれないが、
後者なら「ホスト名というもの自体が存在しない」よ。
無い物は取得不可能。
943 :
nobodyさん :2006/02/23(木) 20:52:38 ID:aYPvtFuR
鯖の生存を確認するのに $fp = @fsockopen('www.example.xxx', 80, $errno, $errstr, $timeout); ってやっています。 できるだけ素早く判別してもらいたいんですが$timeoutの値の目安ってありますか?
10秒ぐらいでいいじゃん
5秒で十分 それ以上は死んでいるも同然
946 :
nobodyさん :2006/02/23(木) 21:33:19 ID:??? BE:363804487-
>>945 たまに重い鯖もあるけどねm9( ゚д゚)
まあどれぐらい重ければdownと見なすかで決めれば良いじゃない
948 :
943 :2006/02/23(木) 21:41:59 ID:???
>>944-946 3秒で遅いと感じていたんですが現状維持で行こうと思います
ありがとうございましたm(_ _)m
ソケットよりもpingがオススメ
PHPで最大同時接続数を制限することはできますか?
できる
.htaccessの仕事っぽい
extractの話題が良く出てますけど、 $hoge = $_POST['hoge']; をextractを使って表現するとどのように書けばいいのでしょうか? 特に何もしないとXSSの原因になるそうなので、 わからないうちは使うつもりはありませんが、気になるので・・・
>>953 extract ($_POST);
$hoge == $hoge;
>>953 extract($_POST, EXTR_SKIP);
か
extract($_POST, EXTR_PREFIX_ALL, "post");
のどっちかかな。
$hoge = $_POST['hoge'];相当なのは前者。
後者は$post_hoge = $_POST['hoge'];相当。
>>954 どうもありがとうございます。
早速実行してみたところ、
ちゃんと$hoge = $_POST['hoge'];と同じになりますね。
便利ですねえ。
どういう危険性があるか理解できるまで使わないことにします。
ひとつ謎が解けました。ありがとうございました。
>>955 レスしてる間にレスがorz
詳しくありがとうございます。
値もいろいろと指定できるんですねー
早速値に関してどういったものか調べてまいります。
>>956 extractで展開していると
予期しない変数を書き換えられる危険がある。
例えばパスワードを$passに設定している場合に
hogehoge.com?pass=〜
でアクセスされ、これをextractで展開すると…。
↑はgetの場合だけれど
ローカルでフォームを書けばpostだって送りつけられるし。
>>958 見たいに
example.com?pass=5
しか想定しないでextractすると、下のURLみたいなアクセスをされた場合に大量に変な変数作られるのが危険て事?
example.com?pass=5&user=hoge&db=example.com
予期しない変数を大量に作られるのは気持ち悪いね
でも、プログラムの一番最初にextractすれば変数の内容は上書きされないような気もするけど・・
じゃあパスワードは定数にすればいいってことか!
引用
http://jp2.php.net/manual/ja/function.extract.php 警告
extract() をユーザー入力 ($_GET, ...) のような信頼できないデータについて使用しないでください。
もし行う場合、例えば register_globals を信頼しているような古いコードを一時的に実行したい場合、
EXTR_SKIP のような extract_type の値が上書きされていないことを確認してください。そして php.ini の
variables_order で定義されたものと同じ順で展開すべきであることに留意してください。
ま、他人のサーバがどうなろうが知ったこっちゃ無いが
掲示板のように入力させるようなデータはおとなしく、 $data=$_POST['data'];にしとけばいいってこと? 他人のスクリプト見ると、 extractを使うのが一般的だとか思っちゃうけど…
>>964 それだけ我々にとって「チャンス」があるということです。
フフフ・・・
>>964 >他人のスクリプト = Le●sPHP = 過去の遺物 = 諸悪の根源
extractをpostやgetに使わなければ全然問題ないじゃん
>>964 それは過去の遺物。
大昔(と言ってしまおう)のPHPがデフォルトでextractと同等のことを自動的にする仕様だったんで、
その頃からPHPで物作ってる人は互換性のためにextract使っちゃうのよ。
で、そういうプログラムって過去の実績は多数あるんで、さらに巷で大量に流布しちゃって
それを真似する素人プログラマがまた問題があるままパクって傷を広げてしまうんだな。
>>967 別にextract関数自体が問題あるって話ではないわな。
でもクエリーの展開以外にextractを使う人ってほとんどいないけどなw
>>964 具体的に誰のスクリプトだか名を上げて欲しい。
>>969 DBの出力に使ったりするとわりと便利だよ
973 :
nobodyさん :2006/02/24(金) 12:52:58 ID:VruGZZOM
PHPで作られてるサイト(SNSなど)のソースを落として 解析って出来ないのでしょうか?
>>971 ≠>964でしょ?
とりあえず本人がどこのサイトのソースを見て思ったのか、
それが知りたい。
976 :
nobodyさん :2006/02/24(金) 14:56:56 ID:j/2+6+fN
PHP5で、<input type="image" src="">のフォームボタンでPOSTの値が 取得できなくて困っています。GETは取得できます。 <input type="submit">だと、POST/GET両方普通に取得できます。
977 :
973 :2006/02/24(金) 15:05:59 ID:???
>>977 ソースダウンロードしてマニュアルとにらめっこ
980 :
973 :2006/02/24(金) 15:32:05 ID:???
>>978 おお、なるほど。本当にソースダウンロードしてって感じですね。
大きいサイトでソースを公開しているところって殆どないですよね?
SNSなどでソース公開しているところってご存知?
systemとかexecでcalc.exeを実行し電卓をだした後画面を消したいのですが 実行処理の後にwindow.closeとか書いても電卓が消されないと下の処理に移動しません。 system("calc.exe > /dev/null &") とかもやったのですがこっちは電卓が画面に表示されませんでした。 どうすればよいのでしょうか?
983 :
nobodyさん :2006/02/24(金) 17:15:42 ID:aTqN8USg
2時間ググりましたが答えに辿りつきませんでした…
外部のサイトを読み込み、文字コードを変換して出力したいのですが
どうしてもエラーの表示が出てしまいます。
多分、とてつもなく馬鹿な事をしているのだと思いますが…
この場合、どのようにしたら良いのでしょうか?
ヒントだけでも頂けたら幸いです。
下記、エラーが出たもの
<?php
$max =30;//MAX件数
$arr = file("
http://pc8.2ch.net/php/subback.html ");
$lines = $arr;
$lines = mb_convert_encoding($lines, "UTF-8");
for($i = 0; $i < $max; $i++)
echo $lines[$i];
?>
>>983 エラーが出てるならどんなエラーが出たかくらい書かないと怒られちゃうよ。
985 :
983 :2006/02/24(金) 17:20:12 ID:???
WebProg板のスレタイ一覧になっていますが、
実際のものは<html><head><meta>系タグを抜いた、
<li><a>テキスト</a></li>\n
といった固定の形式のものが並んでいるのみです。(読み込み先はSJIS)
>>984 すみません。
phpのエラー表示ではなく、
なぜか一言、白い画面に「Array」と出るのみです
それエラーじゃないじゃん $lines[$i]が配列なだけ 変数がどういう値もってるのかいろんなとこでvar_dump()してみろよ
>>983 >$lines = mb_convert_encoding($lines, "UTF-8");
ここがおかしい。 mb_convert_encoding()がパラメータに
どのような型を取りうるのか確認。
>>983 2時間も何を検索してたん
<?php
$max =30;//MAX件数
$lines = file("
http://pc8.2ch.net/php/subback.html ");
//$lines = $arr;
//$lines = mb_convert_encoding($lines, "UTF-8");
for($i = 0; $i < $max; $i++)
echo mb_convert_encoding($lines[$i], "UTF-8", "sjis");
?>
>>987 の所でエラーが出ないって事は、表示しない設定になっていそうだ
>>989 確かにNoticeがでるな
$lines = mb_convert_encoding($lines, "UTF-8");
Notice: Array to string conversion in ****.php on line *
>>983 1行目に、
error_reporting(E_ALL);
を記述しておきましょう。デバッグに役立ちます。
>>980 XOOPSなどいかがでしょうか。
SNSとは違いますが。
Let'sPHPってダメダメなのか〜 他にいい資料置いてるとこない?
スペンサーって誰だよ
997 :
983 :2006/02/24(金) 22:04:04 ID:???
質問しておきながらレスが遅くなりました
>>986-991 皆さん本当にありがとうございます。
自分はまだforの扱いすらあやふやな所があり論外なレベルなので
皆さんのレス保存して、根っこから勉強しつつやってみます。
ありがとうございました。
998 :
983 :2006/02/24(金) 22:07:26 ID:???
>>998 おまえ・・・使える奴だな。
がんばれよ。乙
どう見てもくだらないです。 本当にありがとうございました。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。