PHPって言語としていまいちだよな ほかに無料Webスペースで使えるスクリプト言語が少ないっていう程度 Perlよりわかりやすい言語っていう程度 変な言語仕様だ 即死回避
変ってどの辺が?
無理してPerl覚えたのにもっと簡単でいいものが出来るPHPで周りのやつが楽してるんで、嫉妬してるんだなww
下のような戻り値が配列の関数があった時、 function hoge(){ $a = array("X", "Y"); return($a); } 戻り値の 配列の要素にアクセスする場合に、戻り値を一旦変数に入れるのではなく直接参照することは出来ませんでしょうか。 $r = hoge(); print($r[0]); hoge()[0] //<-- こんなようなこと出来ない?
それが出来ないのがPHPなんだよね
できないね。リスト系の言語やPerlあたりから流れてきた人は必ず一回は躓く所だね。
rubyでもpythonでもjavascriptでも出来るのに
まぁ1行くらいケチらずに入れろや
input.phpにユーザーがアクセスしてそこにあるフォームに何か入力して Submitボタンを押すと入力した内容が含まれたtxtファイルのダウンロードが始まる というようなサイトを作りたいのですがphpで可能ですか? 当り前っちゃ当り前なのかもですがprint関数で試してもファイルを保存ではなく 中身がブラウザに表示されてしまいそれを手動で保存してもらわないといけないので そこをなんとかしたいです。
image関数について質問です。 画像の左右5pxに黒い背景をつけたいのですが どのようにすればいいのでしょうか? 黒の画像と合成してみましたが画像の端が消えてしまいました。
キャンバスを10px*10pxでかくすれ
strip_tagはタグ取り除いてしまうんだが 指定したタグをそのまま残して他はhtmlspecialcharsみたいに そのまま表示をしたい。 そんな関数ある?
フォームから入力した特定の文字が化けます。 例えば「☆」だと化けませんが「☆あ」だと「?#63908;」みたいに化けます。 なぜですか。
文字コードのせい
20 :
nobodyさん :2007/11/03(土) 16:38:34 ID:GrGF3a3n
こっちあげとくか
PHPでオブジェクトの型を指定したいんだけど。Javaでいう gattai(Human ore, Human anata) { return ore.gattai(anata); } みたいな? こういうことやるためには HumanクラスにgetTypeメソッド public function getType() { return "Human"; } を実装 function gattai($ore, $anata) { if(is_Human($ore) && is_Human($anata)) { return $ore->gattai($anata); } else { throw Exception(); } } function is_Human($human) { return $human->getType() == "Human" ? true : false; } とでもしないと駄目なんかね。
22 :
nobodyさん :2007/11/03(土) 18:51:02 ID:EkQ97k6r
parser errorについて質問です。
メールフォームを作ったんですが、なぜか入力確認画面の表示のところでparser errorが出てしまいます。
# エラーが出ているところ
<html xmlns="
http://www.w3.org/1999/xhtml " xml:lang="ja" lang="ja">
# それより上の部分
function check_html(){
global $homeurl,$title;
if(NAME_FLG){
$name_chk = MARK;
}
if(EMAIL_FLG){
$email_chk = MARK;
}
if(COMMENT_FLG){
$comment_chk = MARK;
}
if($_POST['copy'] == "on"){
$copy_flg = "E-mailで受信する";
}else{
$copy_flg = "E-mailで受信しない";
}
?>
<?php echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
以上ですよろしくお願いします。
コメントの/*と*/を使ってエラーが出てるとこを特定しろ
25 :
nobodyさん :2007/11/03(土) 18:58:57 ID:UiuKYuS+
DBなしの携帯用シンプル掲示板をサンプルデータを使って勉強中です デザインとロジックを分けて作ってあるのですが デザインのhtmlファイル内の各所に {rval hr} とか index.php?{rval param} のように {rval --} とあります。 htmlファイル内にphpを埋め込む際は下記のような記述が基本だと思っていたのですが、くくられていなかったりaltタグの中に入っていたりします。これはどういうことでしょうか? <?php ?>
テンプレエンジン使ってんじゃねぇの? まぁ自力でも置換できるけど
27 :
nobodyさん :2007/11/03(土) 19:06:47 ID:EzkHevL1
ここに書くか。 【PHP】下らねぇ質問はここに書き込みやがれ 58 立ててくる。
乙って漢字は下の土台部分がどっしりした感じがいいよな
>>30 不勉強でした、一応あるんですね・・・。
その辺読んでみます。
32 :
超初心者 :2007/11/05(月) 18:43:22 ID:s8UgZp9y
php勉強中です カウンターを造るところで一つ疑問点が <?php $fp = fopen("count.txt", "r+"); $iCount = fgets($fp, 64); flock($fp, 2); fseek($fp, 0); $iCount++; fputs($fp, $iCount); fclose($fp); print $iCount; ?> だとカウントがあがらない $iCount++;を$iCount = $iCount + 1;にするとカウントがあがります。 $iCount++;が効かないのかと思いましたが 違うスクリプトで <?php $filename = "count.dat"; $file = fopen($filename, "r+"); flock($file,2); $count = fread($file, filesize($filename)); $count++; print "$count"; rewind($file); fwrite($file, $count); flock($file,3); fclose($file); ?> これだとカウントが上がります どなたか説明していただけないでしょうか
>>32 やってみたら上のスクリプトでも上がったよ。
デバッグは変数を var_dump() して中身を見る、というのが基本 $iCount++; の動作がおかしいと思ったら、その前後で変数を調べてみればいい おそらく $iCount に余計なスペースが含まれているのが原因 $i = "1 "; の場合、$i++ ではカウントアップしないが、$i = $i+1; では増加する あと、flockのタイミングに問題があるのでファイルロックについても一般的なお勉強が必要と思う
35 :
超初心者 :2007/11/05(月) 19:13:14 ID:Sif87GT6
32です やっぱり家のは上がらないです。
そうか
ID違うしw
ちなみに俺は両方上がらなかった。 PHP5.1.6
原因は
>>34 と似たようなもんだったけど。
同じソースのはずなのにどこの違いで
みんなの結果が違うのかが気になる。
俺は最初にログファイルに0書いてからやったけど
>>39 俺のはログファイルを作ったときに数字の後に改行が入ってしまったから
カウントされなかったのかもしれない
41 :
超初心者 :2007/11/06(火) 16:36:17 ID:blXO/asx
報告します <?php $fp = fopen("count.txt", "r+"); $iCount = fgets($fp, 64); flock($fp, 2); fseek($fp, 0); $iCount++; fputs($fp, $iCount); fclose($fp); print $iCount; ?> count.txtを変数化しました。$db そして$iCount=fgets($fp,filesize($db)); にしたらカウントが上がりました。 php5です
それは関係ない
>>41 34氏と40氏のレスが全てだと思う
インクリメント演算子は数値型(intその他)の他に文字型(string)に対しても
有効なんだけど、NULL、boolean以外にコントロールコードを含む文字列に
対しては無効。
だから、PHPスクリプトに読ませるファイルのデータにも注意しないとね。
例えば初期値0を書き込んだファイルの16進ダンプを取った時に
30
のみ書かれている場合は良いけど、その後ろにCR+LFやLFが付いている
30 0d 0a 又は 30 0a
などのデータは余分なコントロールコードを排除しないかぎり
そのままではインクリメント演算子で加算はできないよ。
urlencode()ではなくrawurlencode()を使わなくてはいけないケース (またはその逆のケース)って、どういう場合が考えられますか?
45 :
nobodyさん :2007/11/09(金) 18:37:25 ID:/x/z4zSE
質問お願いします。 200711 2007101 などを 20070101 20071001 に 変換する関数とかってないでしょうか? ない場合どうやって分離するか教えてください。
46 :
nobodyさん :2007/11/09(金) 18:40:13 ID:/x/z4zSE
あ、phpのバージョンは4.3.10です。
法則性が見出せない
2007年1月1日がきたら「200711」になるし 2007年1月10日がきたら「2007110」になるし 2007年10月1日がきたら「2007101」になるし 2007年10月10日がきたら「20071010」になるし
>>45 例えば2007121が
20071201、20071021のどちらかを見分けられないから無理ぽ
取得する時にそのようにするしかないかと
20071021じゃなくて20070121でした
>>49 そっか(´・ω・`)
ありがとうございました。
mb_convert_kana て、 PHP5.24では使えないのでしょうか。 4.4.1のサーバーで使えてたファイルを PHP5.24にアップしたら、エラーがでます。 メールフォームで全角で入力された文字を、 次の確認画面で、半角で表示させたいのですが、 もしmb_convert_kanaが使えないなら、他の方法はありますでしょうか。。。
>>52 mb_convert_kanaはわからんけど、
preg_replaceでがんばってみては。
http://jp2.php.net/preg_replace もしくは全角が入力されてたらエラーページにいくようにしたりとか。
携帯向けってわけじゃないなら、JavaScriptあたりで、全角のチェックいれてみたり。
携帯だったら、inputタグにistyleとか要素突っ込めば、IMEのデフォルトを半角に出来たりしたきがする。
>>52 使えるよ、変換できるよ
そのサーバーでmbstringが有効になっていて、かつ、mb_convert_kanaに
適切なオプションを引数として渡して駄目ならわからん
>>52 >>54 が使えるっていってるし、とりあえず、
phpinfo();
あたりでmbstringが有効になってるか確認することが必要なのかね。
エラーが出た時、解決の為の一番のヒントは、そのエラーメッセージの中にある
みなさんご丁寧にありがとうございます。 phpinfo();でみたところ、 mbstriongが有効になってませんでしたorz preg_replace、やってみましたが、どう使えばいいのか・・・(汗)。 たとえば身長を全角で入れて、その数字をわり算したいのですが、 全角だとそのわり算部分でエラーがでるので、 半角に事前に変換した上で、わり算に持っていきたいのです。 無難にjavaスクリプトでエラーチェックしたほうがよいのかもですね。。。
58 :
nobodyさん :2007/11/10(土) 12:02:20 ID:kqDw9Pxy
PHP 5.2.5 が出てたのでage
>>57 おそくなっちゃったけど
たとえば、全角が表示されてたときにエラーページに行くためのフラグを立てるだけだったら、
if( preg_match("/^[0-9]*$/", $_POST["sincho"]) ){
//半角数字で記述されてた場合
}else{
//それ以外のまちがった記述の場合
}
とかにするとかかな。
preg_replaceで置換する場合は
$str = preg_replace("/A/", "A", $_POST["shincho"]);
とかやると、全角Aで書かれた文字が半角Aになる。
変換表を作って変換させなきゃいけなくてうざいけど。
そして、もっと効率のいい方法があるきがするけど、思いつかなかった。
60 :
nobodyさん :2007/11/12(月) 00:29:44 ID:jDp7PoYP
C言語歴2ヶ月なんですが最初にCでCGIを作るのはむずかしいと聞いて PHPをやろうと思いどうすればできるのかを 調べたのですがどうすればPHPを使えるのかがよくわかりません・・・ apacheを使ってやろうとしているのですが あるサイトでhttpd.confの中にある文を書き加えるというのがあり やったのですが上書き保存しようとすると 「フォルダを作成できません。パスおよびファイル名が正しいか 確認してください」と出てきます・・・ それとapacheをstartさせてもerrorと出てきてしまい どうすることもできません。 わかる方教えてください。
まずエディタの使い方がおかしい
62 :
nobodyさん :2007/11/12(月) 02:37:46 ID:hPj5yJAt
>>61 お返事ありがとうございます。
どこがおかしいのでしょうか・・・?
ちなみにhttpd.confの書き換えのやつは保存というか
無理矢理ぶち込んでできたんですが相変わらず
エラーと出ます・・・
というかずっとググってたんですがyahooで検索してみたら
PHPエディタというのが出てきたんですが
初心者はこっちでやったほうがいいんでしょうか
63 :
nobodyさん :2007/11/12(月) 11:55:27 ID:cLhnRAhS
>>62 よくわからんがSSHで操作するのがいいと思うんだが。
質問です、メールを解析するのに
PEARのMail_Mimeを使う方法ではできました。
これを自分で解析する場合、かなり手間暇かかりますか?
めちゃくちゃアバウトな事言ってるのは承知の上での質問で申し訳ないですが…
>>63 どこまでやるかによる
メーラー並みのことをやると湯水のごとく時間は消えていく
65 :
nobodyさん :2007/11/12(月) 14:14:19 ID:cLhnRAhS
>>64 現状では添付ファイルなど
内容を解析して
本文やヘッダーを抜き出したり
ファイルのアップロード程度です。
この程度なら作れそうかなと思いました。
解答ありがとうございます。
66 :
nobodyさん :2007/11/12(月) 17:36:32 ID:mA3HDDMg
ディレクトリを作成しようと以下の文を書いてサーバにアップしましたが、 エラーになります。なぜエラーになるのか指摘おねがいします。 $dir = "tetess"; $rc = mkdir($dir, 0777); if ($rc) { print "成功"; } else { print "失敗"; }
tetessのパーミッションは?
68 :
nobodyさん :2007/11/12(月) 17:43:37 ID:cLhnRAhS
>>66 作ろうと思ってるディレクトリのパーミッションは?
エラーの内容次第
70 :
66 :2007/11/12(月) 18:36:45 ID:???
作ろうとしてるディレクトリのパーミッションを777にしたら 無事できました! 意見くれたみなさんありがとうございます。
チャレンジャーだな
pearがインストール?出来ません。 go-pear.bat実行してpear_env.regして、pear.batを実行したら「コマンドまたはファイル名が違います」ってなります。 win98環境です。pearのキャッシュライトは個別にダウンロードして使えてます。 最悪、PEAR::HTTP_Requestを使えるようになれば良いのですが、どうしたら良いでしょうか?
既に入ってんじゃないの? どうしても使いたいんなら直接落としてrequireしてやれば?
キャッシュライトの場合、何をどこに落すか書かれたサイトがあったのですが、今回はどうも色々関連のあるものも 同時に落さないといけないらしく、だからコマンドで関連性のあるもの一気に落としちゃいましょう的なサイトしか見付ける事が 出来ませんでした…orz
requireなりincludeしたら何がないって出てくるでしょ? だったらそれを落としてくればいいじゃない。 それとdocumentぐらい嫁
76 :
nobodyさん :2007/11/12(月) 23:51:23 ID:KsyPxw5N
>>63 お返事ありがとうございます。
そのやり方調べてやってみようと思います。
バージョンによってやり方って変わるのでしょうか?
やり方が書いてあるサイトは5.2.3で説明してるんですが
自分は新しい5.2.5をダウンロードしてやりました。
ちなみにそのサイトは
ttp://www.standpower.com/ です。
>>75 ありがとうございます。
Warning: Division by zero in C:\Program Files\Apache Group\Apache2\htdocs\sample\pati\test.php on line 2
Warning: include(php) [function.include]: failed to open stream: No such file or directory in C:\Program Files\Apache Group\Apache2\htdocs\sample\pati\test.php on line 2
Warning: include() [function.include]: Failed opening 'php' for inclusion (include_path='.;C:\php\includes;C:\php\pear') in C:\Program Files\Apache Group\Apache2\htdocs\sample\pati\test.php on line 2
ここから先に進めませんが、どうしたらいいでしょうか?
>>77 まず調べてから言えば?
1番目のエラーは
検索したら3件目に出た。
エラーが2行目にあるんだから2行目に使ってる物をechoでもしてみろ。
2番目も3番目を調べたらすぐわかる。
甘えんな。
え、てか読めば分かるじゃん・・・。Division by zeroを検索しないと分からんのか・・・
>>79 調べなきゃわからん俺程度の人間でもパッと解決できるんだ。
だから
>>77 にはせめて調べろと言いたい。
>>79 そんなことばかり言ってるからお前は器が小さいんだよ
それにしてもこの手のエラーメッセージを読まない人はどういう思考をしているんだろう。 最初から読む気がないのか、読もうとしたけど読めないのか、読んだ上であえて質問しているのか。 それぞれに対して突っ込みどころはあるんだけども。 純粋に気になる。
84 :
77 :2007/11/13(火) 22:03:22 ID:???
うはっ、すいません…エキサイトの翻訳してみたんですが、あまりの意味不明さに諦めてました。 今から調べてみます!
>>84 エラーメッセージは検索窓にフレーズをそのままぶっ込むもんです。
「英語だからわかんない」とか思ってそういう手に走ると
failed to open stream 「ストリームを開くために、失敗されます」
Failed opening 'php' for inclusion 「包含のための失敗した初めの'php'」
余計わからなくなる。
了解です!ありがとうございます。
「to 動詞」は「〜のために」という意味で固定かよ。 「opening」は「初めの」という訳しか思いつかないのかよ。 ・ストリームを開くことに失敗しました ・includeで'php'というファイルを開けませんでした 素で疑問なんだが、もしかして現役中学生なの? 高校生なら英語の授業でもっと難しい英文やってるだろ? 正直、プログラミングをやるにはまだかなり早いんじゃないかと。 プログラム言語って英文法の構造を元に設計されているから。それに当然エラーメッセージやドキュメントは英語だし。 英語を先に高校レベルまで勉強したほうがいい。真面目な話。
> エキサイトの翻訳
質問です。 ローカルでサーバを作ったのはいいのですが PEARなどのパッケージをインストールするのに SSHなどで起動したいのですが 127.0.0.1やlocalhostで接続しても接続できません。 ローカルの場合どうやって起動すればいいのでしょうか? Puttyを使ってやってSSHで接続してました。
gzip 関係で躓いてます。
と、あるサーバーに対して、Accept-Encoding: gzip リクエストヘッダーを付加して、
GET メソッドにてアクセスし、レスポンスヘッダーに
Content-Encoding: gzip
Content-Length: xxx
と、返ってきたので gzuncompress を使用した所、以下のエラーが…
PHP Warning: gzuncompress(): data error in paipan.php on line 277
使っている PHP は Windows 版の 5.1.6 でマニュアルには、バイナリビルトインされているとの事なので
php.ini は特に編集していません。gzdecode, gzinflate を試しても以下のエラーが…
PHP Fatal error: Call to undefined function gzdecode() in paipan.php on line 277
PHP Warning: gzinflate(): data error in paipan.php on line 277
これは、サーバー側のデータがおかしいのでしょうか?
phpinfo.php の zlib の所はこうなってます
ttp://www.imgup.org/iup502722.png
91 :
90 :2007/11/15(木) 10:29:50 ID:???
ぐぁ…自己解決しました。 fopen のパス名の接頭語に圧縮ストリーム compress.zlib:// ラッパー識別文字列を 付加する事によって、コンテンツを取得した際に解凍されて戻ってきました… でも、なんかスッキリしない…これで、いいのでしょうか?
まだphp5を勉強し始めて2週間くらいですが、本は何冊か読みました。 そこで疑問に思う事があるのですが、PEARやSmartyは必要でしょうか? もちろん使う環境によって違うのでしょうが、oopを理解してPEARなどの各ライブラリのオプションを覚えて使いこなすのは手間に感じてなりません。 初心者の戯言ですが、ご意見お願いします。
目標のものをつくる手段なんてどうでもいい つくれるかどうかだ
必要でしょうか?なんて言ってる時点で乙
95 :
nobodyさん :2007/11/16(金) 21:48:15 ID:SDmAZVUY
>>94 まあ初心者相手にそう悶えるな初級者くん
>>92 自分で遊んで使うのには、まったくいらんと思うよ俺は
96 :
nobodyさん :2007/11/17(土) 01:30:35 ID:LKV8TtnR
>>92 >PEARなどの各ライブラリのオプションを覚えて使いこなすのは手間に感じてなりません。
ライブラリやフレームワークはそういうデメリットがあるよ。
要するに楽して作るためのものなんだけど、そのメリットが上回らないなら使う意味はないです。
それに、内部でどんな処理をやっているのか理解していないとはまることも多いし、勉強中
ならこれらを使わず書いていった方がいいとおもうよ。
PHPの質問はいろんな掲示板で見かけるけど、意味もわからず本か何かのサンプル打ち込んで
簡単なエラーに対処できなかったりトンデモなソース書いたりしてる人多いし。
どういう目的で利用するためのもので、どんなものがあるのか知っていれば十分かな。
習熟したころに思い出して、必要と思ったときに使えばいいと思う。
>>92 もしデータベースを絡めるならPDOの扱いくらいは覚えておいて損はないと思う。
98 :
nobodyさん :2007/11/17(土) 10:07:21 ID:gYmumvx4
<html>よりも上に/*〜*/でコメント入れたり、phpの構文などを色々入れました。 するとブラウザ上にスペースができてしまいます。 スペースができない様に書く方法はありますか?
改行しない
100 :
98 :2007/11/17(土) 12:26:52 ID:gYmumvx4
>>99 物凄く使いにくいです
皆さん改行せずにやっているのでしょうか?
BOM付いてるんじゃないの?
103 :
98 :2007/11/17(土) 19:22:04 ID:gYmumvx4
>>101 使ってないです。ってかまだそれわかりませんw
>>102 やってみましたが変わりませんでした
分かれよ
105 :
nobodyさん :2007/11/18(日) 00:06:16 ID:7O6DTqoC
<?php { $i = 5; print $i; } { print $i; } ?> 一つ目の括弧の終わりでC言語とかみたいに $iの効果(スコープ)を消したいんですけど、 何か方法がありましたら教えてください。
無いよ。PHPの決まり事に慣れるしか無いだろうね。
>>106 ありがとうございます。
気づかないうちに値を変えてしまっているとか心配したんですけど、
関数にすれば守られるようなので(globalを付けていないから?)、
スタート部分(Cのmainの部分)を出来るだけ短くすれば大丈夫そうです。
<?php
{
$i = 5;
print $i;
Hoge();
}
function Hoge()
{
$i = 10;
print $i;
}
{
print $i;
}
?>
普通はクラスにするけどね
109 :
nobodyさん :2007/11/18(日) 15:35:54 ID:Quc9Cq5K
中の人に質問 unsetしたらその場で必ずメモリは開放されてるんですか?
されてる
質問です 半角スペースで文字列を区切っているテキストファイルを読み込んで 文字列ごとに配列に代入したいのですがどうすればいいでしょうか? 例えば"hoge.txt"を読み込み、その中には abc def ghi jkl mno と書いてあるとすれば、配列aに $a[0] = 'abc' $a[1] = 'def' $a[2] = 'ghi' $a[3] = 'jkl' $a[4] = 'mno' と代入したいです。よろしくお願いいたします。
>>112 explod関数なんて便利なモノがあったんですか。
助かりました。どうもありがとうございます。
$_POSTで値を取得するのに、フォームタグに値を入力してやっているのですが、一度値を入力するとフォームタグ内に入れた値は消えるのですが、ブラウザの更新をするたびに一度入力した値を更新をやればやるほど何度も取得してしまいます 原因と解決策を教えて下さいお願いします
まず、POST後のページを再読込すると、 「ブラウザは再度POSTデータを送信しなければならない」という決まり事がある。 でだ、大きく分けて方法は3つくらいある。 1. GETで送ればいいじゃない -> methodをかえる 2. POSTで受け取った後で、どこかに(GETで)飛ばせばいいじゃない -> header('Location〜") 3. 受け取った時に二重投稿か調べて破棄すればいいじゃない -> チケットでゲイツる
116 :
nobodyさん :2007/11/19(月) 12:57:44 ID:IR8ctjgO
マニュアルについて質問。
インターネット接続環境がない所からでも、
http://www.php.net/manual/ja/ ↑と同じようなマニュアルが欲しいんですが、ページの下の方にある show source で
1ページずつソース表示させて→コピペ→ファイルに保存 と、しないといけないのでしょうか?
118 :
nobodyさん :2007/11/19(月) 16:06:42 ID:IR8ctjgO
119 :
nobodyさん :2007/11/19(月) 16:41:48 ID:RXlkgnzM
120 にあるよ。HTML版が。 ただ検索はできないから、関数一覧からページ内検索かけるか、自力で検索組むしかないね。
122 :
116 :2007/11/20(火) 00:00:59 ID:bjL1gLBS
>>119 ないです。
>>121 やっぱそうですか…。
show source → コピペ → 保存 じゃなくて、
各ページの show source の URL を GET して、内容を切り出して、〜.php に保存
ってやるしかないようですね…問題は各ページの show source の URL リストをどうするか…
URL に規則性があれば作れると思うけど…
レスくれた人ありがとうございました。
>>122 すまん、いまいちやりたいことが理解できないんだが・・・
Documentをダウンロードしたいだけじゃないの?
中身検索は、Googleデスクトップとかいれとくとか、
なまずでも入れるとかすれば?
124 :
116 :2007/11/20(火) 17:00:33 ID:FtfBoc0Z
>>123 ん〜、何て言ったらいいんだろう…
http://www.php.net/docs.php ここでダウンロードできる html とか chm は
http://www.php.net/manual/ja/ ↑こことは違うでしょ。んで、ここのマニュアルのシステムを丸ごと
自分の所のサーバーにおいて使いたかった訳。(←これが本来の質問の趣旨)
それを行うにはページの下の方にある show source で、
いちいち .php を保存しないといけないのかなって聞いたの。
html はベタな html だけでサーバーに入れて使えるけど、検索できない
chm は検索できるけどプラットフォーム依存。使う所にコピーしないと使えない
(直す方法は知ってるけど、いつまでたっても文字化け直らない)
show source の URL リスト取得する方法考えてたんだけど、(スクリプトは途中まで作った)
html をサーバーにぶっ込んで、それを検索させるシステムを作る方が楽な気がしてきたなぁっと…
もうjp*.php.netをホスティングしろよw
BOMってなんですか?
それはBOMB
129 :
nobodyさん :2007/11/21(水) 08:53:29 ID:gCXzQuZ6
require_onceを入れた場所にブラウザでスペースができます 呼び出してるファイルにも余分なスペースは書いてないのですが、 スペースをなくす方法教えてください
変数にホワイトスペースがあるならtrimで解決。 そうでないならrequire_onceを入れた場所もしくは前後に スペースが必ずあるのでそれを探してとるとなくなります っとしか回答できない
131 :
129 :2007/11/21(水) 10:43:02 ID:???
>>130 ありがとうございます
変数内にホワイトスペースがなく、require_onceの前後にもスペースはありません
タブでインデントしかしていないです
>>124 URL取得ならireaとかのダウンロード用のフリーソフトで
軒並みおとせば?
ローカルでの検索なら、なまずとかで十分だと思う
135 :
たまま :2007/11/21(水) 21:44:06 ID:ACwa23UP
RSSより取得した日付の変換で困っています。 '火, 13 11 2007 17:04:12 +0900'を'2007.11.13'と変換して表示したいのですが うまくいきません。どうしたらいいでしょう
日付関数、文字列関数のページを見る
137 :
129 :2007/11/22(木) 09:00:06 ID:???
>>134 ありがとうございます。
BOMで検索してutf-8nにしたら一端はスペースが消えましたが、
また戻ってしまいます。
もう一度require_onceなどで呼び出すファイルなどを見直すと、
sjisなどに戻ってるのでそれが原因かもしれません。
使用エディタが悪いから戻るのでしょうか?
一応使用エディタはJmEditor2です
140 :
フリーメール :2007/11/23(金) 03:08:36 ID:6ZV7uhRm
質問です。
プログラムを書いたことはなく、
既存のスクリプトを設置したり、プログラマに改作をお願いしたりすることがあり
多少のスクリプト(フォームからcsvに保存するスクリプトなど)のソースコードが
何をしてるのかはなんとなくで読める程度の知識しかありません。
最終的には携帯向けフリーメールシステムを作りたいと思っています。
仕様としては、
・3キャリア対応で絵文字が使える
・マイページ機能を持ち、受信BOX、送信BOXをウェブで確認できる
・メール送受信はxxmailと同仕様
(docomo.ne.jpに送る場合docomo.xxne.jpにして送信すると送信元アドレスは[ユーザ
[email protected] ]になる)
(キャリアアドレスからメールを受信した場合はFromが
[送信者アカウント@docomo.ne.jp]⇒[送信者アカウント@docomo.xxne.jp]と自動変換される)
改行が多すぎると言われたので続きます↓
141 :
フリーメール :2007/11/23(金) 03:09:28 ID:6ZV7uhRm
続きです ・アラートメール本文中にマイページへのURL付与 ・マイページはユーザ専用URLを発行(ログイン不要) ・PHP+MySQLで作りたい ・アドレスはユーザID@ドメインで発行 ・3キャリアのドメインに対してメールを送信した場合に限りポイント付与 ・メール本文内、ユーザマイページへのテキストリンク広告挿入機能 ・広告挿入は管理画面からおこなえる ・登録フローは 空メール送信⇒自動返信による登録フォームURL返信⇒フォーム入力⇒本登録完了メッセージ自動返信 ・受信拒否ワード設定機能(マイページにて設定) ・指定受信設定(マイページにて設定) ・本文中にURLがある場合受信拒否(マイページにて設定) ・登録情報更新機能 ・獲得ポイント確認画面(マイページにて) ・タイマー送信機能(マイページにて設定、指定した時間にメールが送信される) ・メーリングリスト作成機能(マイページにて設定) ・デコメ送信機能 こんな感じです。 これを1からプログラミングする場合、 もちろんPHPの学習だけでなくサーバ、DBについても知識を得る必要があるかと思いますが、 オススメの書籍(これらがわかりやすいんじゃない?系の)を教えていただけませんか?
そこその頭があって三年みっちり勉強したらそこそこのができるよ。たまにバグが出てサービスとまるくらいのが
とりあえず、セッション必須だし、セキュリティ対策もしっかり勉強しないと。
145 :
nobodyさん :2007/11/23(金) 13:28:18 ID:GKdORPfq
>>142 自分は6年目ですが、いまだに雇ってもらえません。PHP3のころから やってます。
PHPそのものも周辺知識も業務知識もあるのに雇ってもらえないとしたら、 人格に問題があるのではアルマイカ?
147 :
フリーメール :2007/11/23(金) 13:52:01 ID:6ZV7uhRm
>>141 みたいなことやれるようになるまで3年かかりますか??
もちろん自分のやる気と取れる時間にもよると思いますが・・・
とりあえず予習復習をちゃんとやってたとか、 夏休みや冬休みの宿題は計画的にやってたとか、 そういう資質がないと無理だなw
書籍なんかより、公式マニュアルの方がよっぽどイイと思うが…
セッション変数に値を代入する前に、 $_SESSION["hoge"]; と、あらかじめセッション変数に変数名を登録してから使う必要はありますか?
セッション変数に変数名を登録するという意味が分からない
最近プログラミングの興味が薄れてきたなぁ。 まぁ「プロ」グラマじゃないからいいんだが。
154 :
nobodyさん :2007/11/23(金) 19:29:41 ID:GKdORPfq
プログラマってプログラムにerつけただけじゃないの?プロって言う意味があるの?
>>154 ないよ
プロとプログラムをかけて言ってるだけだろ
156 :
151 :2007/11/23(金) 22:45:18 ID:???
>>152 値を代入する前に、このセッション変数を使うと言う事で、
先に$_SESSION["hoge"];とやっておかないといけないのかと言う意味です。
すいません説明下手で;
158 :
151 :2007/11/24(土) 13:45:26 ID:???
>>157 ありがとうございます
すいません質問もう2つお願いします
セッション変数に入れた値に保持してられる期限などはありますか?
しばらく日にちがたってセッション変数に格納してあった値が無くなるみたいな
これ最後ですすいません
セッション変数$_SESSION[hoge]を一人の人がショッピングなどに利用していた場合、
同じドメイン上のページで違うユーザによりunset($_SESSION[hoge])が実行された場合、ショッピングに使っていた内容も使用中に突然消えてしまいますか?
もしそうならユーザ別にセッション変数名を変える必要があるとなるのでしょうか
プログラムを組もうと思っても、実際に書き始めると自分のコーディングがダメダメに見えてやる気をなくす……。 どうやればいいか、っていうのはわかるんだけどね。。 いくら練ってみても、このコーディングでいいのだろうか、とか思ってしまう。 別に仕事でやってるわけじゃないからスランプ上等なんだけど。 経験を踏んでいけば、大丈夫なのかな……
先に学校の勉強をちゃんと努力したほうがいいんじゃないだろうか
なんか、ありがとう。 いわれた通り、自分のコーディングみてやる気なくして放棄してたらダメ人間だよね。 根を鍛えなおします。 スレ汚し
164 :
nobodyさん :2007/11/24(土) 15:30:51 ID:sQgHrbH/
>>158消えない。心配しすぎ。その程度で困らせるような言語はない。
<?php include_once("news.txt") ?> このようにして更新履歴を表示させるとき 上から3行目だけを取り出すにはどうすればいいでしょうか?
166 :
165 :2007/11/24(土) 17:55:52 ID:???
訂正です <?php include_once("news.txt") ?> このようにして更新履歴を表示させるとき 上から3行目 まで を表示させるにはどうすればいいでしょうか?
内容を改行区切りで取り出して最初から3つを表示
>>166 file("./news.txt");で読み出して、forで回せばいいじゃん。
POSTで受け取った内容をMySQLDBに入力するのに、 stripslashesとmysql_real_escape_stringで加工すれば十分安全ですか?
>>171 おお!そんなのもあるんですね〜
文字か数値どちらが含まれるかわからない場合には必要ないですかね?
文字をintvalで加工すると数値になりますか?
必ず数値ってわかってるなら、intvalしてそれ以外は普通に mysql_escape_string 使っておけば。 %は別にエスケープ。
>>173 その【普通】がわからないんでこのスレで質問させてもらってます
>>174 ありがとうございます
セッション使ってればhidden使う場面ってなくなりますよね?
PHPの本スレってどこにあるのですか?
>>177 くだ質のこと?
PHPについて語ろう!みたいなのは無いんじゃないかな
180 :
166 :2007/11/26(月) 17:20:47 ID:???
<?php $fi = file("news.txt");echo "$fi[0]$fi[1]$fi[2]"; ?>でいけました ありがとうございました
英語が読めないんでこのエラーの意味がわかりません Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
182 :
nobodyさん :2007/11/28(水) 12:23:50 ID:2JTXr2aQ
データベースエラー sql構文が間違ってないか、データベースに接続してるかを確認すべし
>>181 これを機会に英語勉強汁。
つか、中学程度の英語力でもなんとか読めるだろ。
184 :
nobodyさん :2007/11/28(水) 20:08:39 ID:OEBZIrSP
我が家の不動産サイトに市販の検索CGIを設置したいのですが、全国版からローカル地域にカスタムしたいのですが、なんらかの助言くださる方おられますか?宜しくお願いします。
186 :
nobodyさん :2007/11/28(水) 21:03:49 ID:OEBZIrSP
カスタムの仕方なんですが、販売会社ならデータ項目等変更で20万、25営業日との話です。ソースを簡単に触ってできる事ではないんでしょうか?
まぁできると思うよ
ドコモの携帯にはセッション意味ないんですか?
>>188 なんで?
クッキーは使えないけど、セッションID引き回せば?
190 :
188 :2007/11/29(木) 14:36:24 ID:???
>>189 $_SESSION["test"] = 1;としてページをhrefで移動
移動先で
if($_SESSION["test"] == 1) {header("location: test.php");}
として分岐したいのですが、ドコモは思うようになってくれません
auはなりましたけど、sbは未検証です
セッションID引き回すの意味を自分は間違えてますか?><
ドコモは情報送ってくれないんですよ セッションもクッキーも「あんだよてめえ」としか思ってません だから使えません
>>190 クッキーが使えないんだから、セッションIDをURLに『引数として』くっつけて次のプログラムに送るんだよ。
193 :
190 :2007/11/29(木) 23:29:42 ID:???
>>192 移動先でgetで取得する訳ですね、なるほど
隠して送るのは無理なんですね、セッションがあるのに残念です
>>191-192 ありがとうございました
194 :
nobodyさん :2007/11/29(木) 23:36:22 ID:YlYVK+go
初心者です。ご教授下さい。 ローカルでテストしている状態ですが、move_uploaded_fileでファイルをアップロードさせようとし、 if (!move_uploaded_file($uploadfile, '$PHOTOTMP$imagefile')) { $errmsg .= "写真ファイルのアップロードに失敗しました。<BR>"; } というソースを書いています。 実行するとエラーメッセージは表示されないのですが、指定フォルダに画像ファイルが移動されていません。 上記のスクリプトはC:\Program Files\Apache Group\Apache2\htdocs\testに置いてあり、 画像ファイルの一時フォルダとしてC:\Program Files\Apache Group\Apache2\htdocs\test\phototmp を作ってます。 変数の中を見ると、 $uploadfileには、C:\WINDOWS\TEMP\php89.tmp $PHOTOTMP$imagefileには、phototmp/1196345782078128.jpg3 が入っていますが、C:\Program Files\Apache Group\Apache2\htdocs\test\phototmpに画像ファイルが移動 していないのは何故でしょうか? よろしくお願いします。
何か変だけど とりあえず "$PHOTOTMP$imagefile"
>>193 何か勘違いしてるぞ
セッションの仕組みをもう一度勉強しよう。
197 :
193 :2007/11/30(金) 14:57:38 ID:MLIN4mxf
198 :
nobodyさん :2007/12/01(土) 21:15:29 ID:HxBCRCSR
こっちあげとくか
カウンターを作ったのですが、リロードするたびにカウントが2づつ上がります。 アクセスをやり直すとカウントは1しか上がらないのですが そう言うものなのですか?
そういう風につくっちまったんだべ
201 :
197 :2007/12/02(日) 13:19:32 ID:???
あ゛あ゛あ゛あ゛ー 脳味噌がオパピーです教えて下さい クッキーが使えないドコモなどで、セッションIDを受け渡す方法として、 URLに定数SIDを入れる方法とhiddenで渡す方法はわかったのですが、 セッションid以外の情報も持って移動したい時はどうすればいいのですか?
> セッションid以外の情報 具体的には何?
203 :
197 :2007/12/02(日) 13:29:39 ID:???
>>202 具体的には
個人の名前や年齢など、個別な情報20点ほどを持ってページを移動したいのです
セッションIDは何のために受け渡すの?
205 :
197 :2007/12/02(日) 13:43:11 ID:???
>>204 セッションidは本人確認の為に受け渡します。
1のページからきたユーザが、2のページへ移動してきたユーザと同一かどうかを確認するためです
セッションIDを誤解してるのかな。 セッションIDは、サーバが持っているデータを引き出すための鍵のようなもの。 鍵を持ってる事自体を本人確認に使うこともあるし、 その鍵でサーバからデータを取り出す事もできる。
セッションIDはセッションを受け渡すために使うもんだろ・・・
208 :
197 :2007/12/02(日) 14:11:23 ID:???
>>206 意味間違えてるんだと思います…
サーバーにセッションidを使って情報を持たすのは、一度にいくつでも可能ですか?
またオパピーです
基礎から勉強しろって
>>207 そのやり方がわかってないんじゃね
教えてやれば
自演乙
> セッションid以外の情報も持って移動したい時はどうすればいいのですか? この「移動」って具体的に何を示してるの? なんで、質問者に質問しないといけないような質問するの?
お前の理解力がないからだろ
情報小出し厨は死ね。
>>208 セッションID渡された時点でその個人は特定できるんじゃないの。
セッションIDをキーにしてDB検索とか
217 :
nobodyさん :2007/12/16(日) 07:29:41 ID:nJrEMZh9
恥を承知で質問します。 Smartyテンプレートの実際に使われる基本的なパターン(中身)を教えてもらえませんか? 正直、プログラムに関してはスーパー初心者です。一応、PHPやperl・正規表現についての理屈は、昨日、斜め読みでざっと把握しました。しかし、全くSmartyへの理解にはつながりません。 Smartyを理解するヒントとして実際のテンプレートの記述とそのパターンなど提示していただけると助かりるのですが‥。 Smartyというのは、例えば、既に記述されたHTMLを差し替えて表示したり、コンテンツ構成を根本から修整したりできるのでしょうか?
その前に、Smartyを使う必要があるの? 普通にPHPで「<title><?php echo $title ?></title>」とかでもいいだよ。 デザイナさんで、Smartyのテンプレートファイル弄る必要があるなら別だけど。
>>218 アドバイスありがとうございます。
> その前に、Smartyを使う必要があるの?
> デザイナさんで、Smartyのテンプレートファイル弄る必要があるなら別だけど。
私はデザイナーではありませんが、テンプレートを利用し利用者が自由にコンテンツデザインを選択できることは非常に重要なポイントになります。Smartyは、その点に長けていると聞いたのですが、実際、どうなのか?と。
> 普通にPHPで「<title><?php echo $title ?></title>」とかでもいいだよ。
PHPとSmartyは、ある程度出来ることは似ているのでしょうか? 私としては、body内のタグ構成を丸ごと置換出来るならば、PHPでもSmartyでもかまわないのですが、Smartyがデザイン的に有利ならば、やはりSmartyを活用したいと考えています。
とりあえず、もう少し自分で探ってみた方が良いみたいですね。ありがとうございました。
>>219 なんでSmartyのドキュメントは読まないんですか?
>>219 Smartyのメリット(使い方)
1.PHPスクリプトで動的に表示させるデータを生成(あるいはDBから取得)する。
2.Smartyテンプレートファイルと呼ばれる、HTMLの中に1.の変数を書き込
めるタグ(記号)を書いたファイルを用意する。
3.PHPスクリプトから、そのテンプレートファイルを指定して表示させると、
あら不思議、HTMLの中にPHPの変数が表示されるじゃないか!
4.テンプレートファイルの記述では、データ量に応じて表示をループさせたり
できるので、たとえば実行するまで何行のテーブルを表示させることになるか
わからない行データも、スッキリとテンプレートファイルに書けるぞ!
5.おまけに、テンプレートファイルを複数用意すれば、PHPスクリプトを修正する
ことなく、いろんなデザインの表示に切り替えられるよ!
こんな感じ。ご参考になったかなぁ?
phpで書けばいいじゃん
プレビューでもできれば利点はあると思うんだけどなぁ
225 :
nobodyさん :2007/12/19(水) 16:07:10 ID:DnDjbDYh
簡単なプログラムでもDBを導入したほうが効率が良いのでしょうか? アクセスカウンタを例にしますと、 テキストのログファイルを読み込ませるほうがよいのでしょうか? この程度でもDBと連携させたほうが効率が良いのでしょうか? 簡単なものはテキスト、中規模以上はDBって感じでしょうか? 小さくてもアクセス頻度が高い場合はDBのほうが安全なのでしょうか? 速度、鯖の負荷、その他ありましたら教えてください よろしくおねがいします
226 :
nobodyさん :2007/12/19(水) 19:32:38 ID:E60FAw4D
すみません。超くだらない質問なのでこちらのスレで聞かせてください。 HTMLのタグ内でのダブルクォーテーションの扱いに困っています。 <input type="hidden" name="gid" value="<?php echo "abc_" . $gid; ?>"> value="<?php echo "abc_" . $gid; ?>"←この部分ですが、value=の次はPHPに処理が進むので その中に再びダブルクォーテーションを使っても大丈夫ですか?というか文法的に間違いじゃないですか? よろしくお願いします。
>>226 マニュアルの文字列文法のページを100回読め
228 :
nobodyさん :2007/12/20(木) 02:40:21 ID:g0oPtWoH
227へ __,,/ _, ----`ヽ :. :. / _ ___ 、\ / / i \ \\ :. :. ,'./ i ヽ:. ヽ:.:.. ヽ.ヽ ,'/ / .ハ ヽ ヽ:.:.:.:. ヽ::.. ヽヽ :. :. |i .i i .i / ヽ ト 、 \、:.:.:. ',:.',:.:.lヽ} |i .i l :N_, -弋 \弌弋ナ:}:.:} :. |i∧ ', :{ ,ィjモト \ イjミトイイV :. な… .| :メヽ.', `ozZ} izN。ハ::{ なんでですか? :. | :ヾ_! ゝ "゙゙ ' `゙ ハ.:', :. | :.:_イ .:.ヽ. (二フ , イ :.:.:!:.ヽ なんでだれも :. / rィイ | :.:.ヽ: >r/`<ノ .:.::.}ヽ、\:. 答えてくれないんですか? / ∧l;l ! :.:.:.://{二 ̄ .} ..:..::リ//ハ.:\ :. / .{. ',ヾ、ヽi .:.:.{ /(^` |.:.:.:.//: : :.}: . ヽ.:. / / ) ヽ ヾ、ヽ:.ハ ヤ{ ∧/.-‐'": : |:.:. i ', ./ .,イ .:..} : :\ヾレ'ハ ∧__ノノハヾ、 : : : l:.:.: .ハ ', { /| .:.:ハ : : :i Y {ヾ`Yヽニン'ノ}: : } : : : :/:.:.:/ }:.} V | .:.:/:.:|_,ィ' ̄ ヽ三{ `ー-ノ : イ : : :/:.:i.:{ リ ヽ:.:{、.:.V : : ヘ : : {: : :/:.::∧| ヽ! )人 : : :人 : : : / \! :. " ヽ : : : : :/イ{ :.ノ: : : :.\ :. :. \__///: :\______/: : : : : : : ヽ / //: : :|;|: : : : : : i: : : __: : : : ', :. / 、 {;{ |;| . : i/. : : : : : :| / `Y;{. . . .|;|. : : : /i: : : : : : : : :l
DWあたりのツールが使えるだけでなんかWebが作れる気になっている初心者が多すぎだろ。
>>226 このスレにふさわしい質問だ。
「"」で括られた文字列中に「"」を記述するときは、「\"」とするのだよ。
例えば <a href='./index.php'></a> というタグがあるとして ''の間の ./index.php を表示させる というふうにするにははどうすればいいでしょうか?
$test = array( "hoge" => 0 , "poge" => 0 , "moge" => 1 , . . "hohe" => 3 ) を $contents = array( 0 , 0 , 1 , . . 3 ) にしたい場合はどんなふうに描けばいいんでしょうか?
あるだろ
>>239 それがなかったんですよ。
$_SERVER['PHP_SELF']だと "/index.php"
$_SERVER['SERVER_NAME']だと "hogehoge.jp"
$_SERVER['DOCUMENT_ROOT']だと "/public_html/index.php"
ほかは何か違うし・・・
"
http:// "はともかく、"hogehoge.jp/~hoge"は取ってきたいんです。
242 :
238 :2008/01/11(金) 11:30:21 ID:???
こいつは「応用」という事を知らないみたいだな
244 :
nobodyさん :2008/01/11(金) 18:17:35 ID:mLMFZoBj
認証について質問です。 POSTでデータを送って暗号化などしてデータベースパスが一致したらログイン。 このソースで大丈夫なのかどうか不安です。 a.html→(ここ)→b.php (ここ)でデータを盗むことができたりするのでしょうか? これでいいならSSLの必要性がイマイチわかりません。 a.html <html> <head> <title>test</title> </head> <body> <form action="hogehoge.php" method="POST"> <input type="text" name="id"> <input type="password" name="pass"> <input type="submit" value="送信"> </form> </body> </html> b.php <?php $pass = $_POST['pass']; $pass = strip_tags($pass); $pass = htmlspecialchars($pass, ENT_QUOTES); $pass = md5($pass); $pass = substr($pass,0,10); -------データベースからmd5で暗号化されたデータを引き出して認証------------- ?>
sslじゃないなら平文で流れるよ
246 :
nobodyさん :2008/01/11(金) 18:21:32 ID:mLMFZoBj
sslにする
248 :
nobodyさん :2008/01/11(金) 18:29:13 ID:mLMFZoBj
250 :
nobodyさん :2008/01/11(金) 18:35:41 ID:mLMFZoBj
>>248 見落としてた…orz
え、じゃあ今までhttpsでやってなかった俺のパスワード&アドレスは
漏洩してる可能性あるってこと?
なんでデフォルトがhttpsじゃないんだよ(´・ω・`)
来週から初出勤の俺 PHPは参考書読む程度なんですが 開発現場ってどんな感じで作業進めるのでしょうか?
殺伐と
>>250 スレ違いになるが、JavaScriptでmd5に変換とかすれば
254 :
nobodyさん :2008/01/11(金) 21:04:07 ID:mLMFZoBj
>>253 なるほど
<input type="text" name="pass1">
<input type="hidden" name="pass2">
document.pass2.value = md5された文字
色々省略してますがこんな感じで飛ばせばOKということですね?
これでセキュリティに問題ないならやってみようと思います。
相手がJavaScript切っていたら? ていうか、質問者もそのレベルならセキュリティ意識する必要ないし(しても対処できないのが落ち) 、回答者もひどすぎる。 とにかくSSLにすればいい。証明書を第三者機関に発行してもらうのはウェブページの信頼性を保障してもらうため。 別に俺のことは俺が保障するっていうなら俺俺証明書でOKなわけ。 それじゃ普通は駄目だから金払う。
>>255 JavaScript切ってたら、mixiでいう「SSL(https)はこちら」を
選択しないのとそう変わらんだろうに
暗号化して送信するかしないかをユーザに任せるという意味ではね
SSLだって人によっては切ってるかも知れんぞw
>>254 その例、なんとなく勘違いしてそうだが、
入力されたパスワードをsubmit時にJavaScript側で
md5にしてからPOST送信すんの
分からんかったら調べるなりJavaScriptスレへ
258 :
238 :2008/01/12(土) 00:10:38 ID:???
移植予定先で$_SERVER['SERVER_NAME']を試してみると、 hogehoge.jp/~hoge/が取得できましたorz 何を見てたんだ俺は・・・ どうもご迷惑おかけしました。
259 :
238 :2008/01/12(土) 00:17:48 ID:???
違った。$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']でした。 どうもたびたび申し訳なく・・・
>>259 REQUEST_URI はやめといた方がいいんじゃね
素直に
substr($_SERVER['REQUEST_URI'], 0, strrpos($_SERVER['REQUEST_URI'], '/'))
とかじゃダメなん?
あーあ、SCRIPT_URI って書いたとおもったのに。
262 :
238 :2008/01/12(土) 01:23:53 ID:???
>>260-261 SCRIPT_URIは確かサーバの環境依存じゃなかったですか?
移植先はレンタルサーバなので、Apacheの設定を弄らせてもらえるか
微妙なんです。未だにどこに移植するか決まってないという。
自鯖にすれば設定し放題ですが、さすがに管理が・・・
/~hoge/句がつくかどうかも微妙ですし。
最悪、DBに絶対URLを格納しておいてそれを使うようにすると言う手を考えつきました。
まあとりあえずREQUEST_URIでやってみます。問題が起きたらDB方式に。
文字列エンコードすればXSSも何とか回避できるでしょうし。
ありがとうございました。
Windows版phq4.4.2なのですが、 GDが読み込まれません。 php.iniの設定箇所のコメントを外す以外に何か設定が必要でしょうか?
再起動する
265 :
263 :2008/01/12(土) 17:40:18 ID:???
>>264 ApacheはもちろんWindowsも再起動してみましたが反映されません。。。
php.ini以外にさわる箇所あるのでしょうか?
理由は? extension_dirの指定が間違ってるとか、GDの共有ライブラリが入ってないとか
反映されないってどこを見て言ってるの? php.ini はどこを変更したの?
268 :
263 :2008/01/13(日) 06:15:16 ID:???
レスありがとうございます。
>>266 extension_dirの指定はmbstringの設定が有効なので良いと思うのですが。
ライブラリはphp_gd2.dllですよね?それなら入っています…
>>267 反映についてはphpinfoにgdの項目が出てこなく、関数も使えないのでそう判断しています。
php.iniはextension_dirのコメントを外しました。
手順と確認に問題は無さそうなので、修正しているphp.iniと実際に使われているphp.iniが違うファイルなんじゃないかな? phpinfo()でどこのphp.iniを使っているか表示されるけど、それは一致してる?
PHPIniDir('c:\php');
271 :
263 :2008/01/13(日) 12:22:04 ID:???
272 :
263 :2008/01/13(日) 23:05:13 ID:???
>>269 ビンゴでした。
なぜかiniファイルの読込先がC:\windowsに。。。
ここは変更できるのでしょうか?
一応、この場所にiniファイルを置きましたところ、GDの読み込みには成功いたしました。
ありがとうございました。
なぜかとかって・・・
iniのおき場所と、それぞれのおき場所の優先順位とコンパイルオプションの話はマニュアルに何か書いてあったような気がする
PHPで、CSVファイルを取り込み、Postgresへ格納するの作ってるんですが、 100Mくらいのファイルを取り込むのに、時間が40分くらいかかって メモリーも2Gくらいを、PHP.iniに書かないと途中でとまるんですが、 PHPってスピードとか、メモリー使用量ってこんなもんでしょうか?
コードが悪い
メモリの使用量はPHPとはあまり関係なくプログラマが読み込ませたデータ量による 時間がかかっているのは激しくスワッピングしてるからだと思われ 普通はデータ量が大きいときは漸次処理して負荷を減らすもの
100,000 のように数字に「,」が入ってるときに、数字のみを取り出すにはどうすればいいですか?
ereg_replace(",", "", $var)でできました
281 :
nobodyさん :2008/01/16(水) 11:56:16 ID:sJoxzvRt
le.com/?aaa のことならたいてい index.php において空の $_GET['aaa'] mod_rewrite 使ってることもありえる
>>281 $_SERVER['QUERY_STRING']とか。
>>283 それはそれで、何でわざわざそんなことやってるのかって疑問が出来るな
アクセスログ解析用だろ
キーのみのクエリで何でアクセスログの話が?
287 :
281 :2008/01/17(木) 13:56:22 ID:???
レスありがとうございます
>>282 さんの
index.phpに空の$_GET[aaa]をおくと言うのを
試してみたのですが意味がわかっていないせいか何も変わりませんでした
もう少し詳しく説明お願いしていいですか?
お手数かけてすいません
置いてじゃなくて於いて。
クエリ文字列を取得するなら
>>283
よく読んでませんけど、まずApacheの話として、クライアントから/?aaaみたいなパスで リクエストされた場合、ファイル名がないのでウェルカムファイルがリクエストされたと 判断される。 /でリクエストすると/index.phpが読まれるのと同じ理屈で/?aaaの場合は 処理を行うスクリプトはindex.phpで、クエリとしてaaaが渡されると思う。 で、クエリは本来/?aaa=valueというようにフィールドとその値になってるけど、この 場合は値がないので、変数名は$_GET[’aaa’]となりデータは空の文字列 ということになるとめでたくね?データは空だから何も受け取ったことにはならないけど 連想配列のキーの有無で違いが出るので、!isset($_GET['aaa'])としてやると /?aaaなのか/?bbbなのかは区別できるような木がする
嫌がらせかw
291 :
nobodyさん :2008/01/17(木) 23:00:15 ID:AXahQPv7
>>291 どこからbbbが出てくるんだよw
?aaaは$_GET['aaa']として入ってくる
データ内容は確かnullのはず
issetでチェックはできるけどな
通常は って言い切るのはどうかと思うけどたいていmod_rewriteとかで$_GET['bbb']で受けるんじゃね もちろんbbbかどうかは知らないけど
mod_rewrite使うなら?をつける意味が無いな /aaa/とかにすると思うが
単にisset($_GET['aaa'])で存在チェックしてるだけでFAだろ。 何が問題なんだ?
phpのスクリプトを読んでいると ($mode ? 'OK' : 'NO') という分岐?が出てきたのですが この方法の名前は何というのでしょうか? 調べようにも名前が判らず困ってます
三項(条件)演算子
perl にもあるし、C/C++ にもあるし…あとは… 結構サポートしてる言語あるぞえ
レンタルサーバー(アイル)でセッションを使ってユーザ管理できる形で スケジューラー作ってます。 最近利用している人から、見ていたらお前のログイン状態が出てきたぞと 言われ、キャプチャされた内容が送られてきました。 セッションは session_start() ではじめて $_SESSION[id] $_SESSION[pwd] にデータを入れてます。セッションはブッキングすることがないと 聞いていたのですが、たった4人の利用でブッキングがあったため、 もしかすると iクラスタでは、クラスタリング環境となっており、 セッションの使用、またflock, fcntl 等のロックは機能しません。 symlink, mkdir 等での代用いただくようお願いします。 とレンタルサーバーにはかかれていましたが、クラスタリング環境で flock,fcntlが使えないことでこういう事が起きているのでしょうか? ここがはっきりしないと、別のサーバーに切り替えてもらえないし、 自分が選んだサーバーでもプランでもないので板挟みで状態で困ってます。
セッションは機能しませんってこれ以上なく明確に書いてるやん('A`)
>>300 DB使えるならDBでセッション管理すれば?
別にそんなに規模大きいもんでもないんでしょ?
303 :
296 :2008/01/21(月) 14:21:47 ID:???
304 :
244 :2008/01/21(月) 19:22:48 ID:5H6OPrCr
過去の話掘り返してスマナイ。
>>253 でmd5にして認証を行ったはいいが
HTTPヘッダ見たら暗号化した文が表示されてた。
これってこの文盗聴されてそのまま打たれたら結局意味ないじゃんって結果に。
参考にしたページ:
ttp://jsgt.org/mt/archives/01/000301.html Digest認証でここはやってますが
どうも不完全なまま終わってるようで続きが見当たりません。
実際にSSLを使わないで認証してる方はいないでしょうか?
自分しか使わないのでSSLの証明はいらないんですが、、、
305 :
nobodyさん :2008/01/21(月) 20:16:56 ID:5H6OPrCr
連投スマソ 結構大きなネトゲのサイトでburp suiteでHTTPヘッダを見てみた。 IDとパスがそのまま表示された…。 これってこの部分盗聴されたらログインされるはずだよな…?と思って mixiのhttpsでログインしてみた。 こちらは何も表示されなかった。 そのネトゲのスレ行ってみたらセキュアなしかよって散々叩かれてた。 こんなのもあるんですね。 一応報告まで。
>>304 そりゃまんまじゃ駄目。
ワンタイムパスワードにでもしないと。
308 :
nobodyさん :2008/01/22(火) 00:42:56 ID:Qziki4SA
すみません、phpを始めたいのにインストール段階で行き詰っちゃいました… すごく初心者なので、書き方おかしかったらすみません。 ・os windows vista ・希望 apache_2.2.6-win32-x86-no_sslをインストールしたい ・困ってる事 「このインストール パッケージを開くことができませんでした。 パッケージが存在し、アクセスできることを確認してください。 またはアプリケーション ベンダに問い合わせ、この Windows インストーラ パッケージが有効かどうかを確認してください。」 が出てインストールできない。 ・やった対策 vistaだと通常とは違うという事で色々と調べて「コマンドプロンプト」というやつを管理者の権限で開いてインストーラーを実行させました。 そうすると何回やっても上記のエラーメッセージが出ます。 なので「windows install cleanup」をダウンロードして開いてみましたが該当するものはなし。 無知なりに考えた原因は、何度も違うバージョンのapacheをインストール→アンインストールしたせいでインストーラが狂ったのかと…。 どうにかインストールしたいです。「ベンダ」に問い合わせる他に何かまだ出来る事があれば教えてほしいです。
>>308 このあたりが関係しているのかも。
http://www.apachefriends.org/jp/xampp-windows.html > Windows VistaではC:\Programfilesのフォルダのパーミッションが限定されております。
> その為、通常のインストールではインストールが成功しない場合があります。
> xampp用のフォルダをCドライブの直下か、C:\userの下にxamppというディレクトリを
> 作成してご利用いただくことをお勧めします。
XAMPPだと、インストーラを使うタイプと使わないタイプがあるから、こっちで
試してみたらどうかな。全部がセットになってるから便利だし。
今の時期は、出来ればVistaでやるのは避けた方が良い。
>>306 ワンタイムパスワードを考えてみました。
データベースにpass1とpass2のあるテーブルを作る。
pass1はユーザーが決めたパスワードをmd5した物。
ログインページにアクセスした時点で
ランダムな文字列を発行。(例 ZztMHpWSD)
全てのユーザーのpass2を更新する(pass1 + ZztMHpWSD)
<input type="text" name="pass">
<input type="hidden" name="rand_pass" value="(ランダムな文字列)">
submit押すと
md5_func(document.formname.pass.value)+document.formname.rand_pass.value;
これでpass1+ランダムな文字列が渡されました。
これで送られてきた物をpass2で一致すればOK。
この処理はできました。
----続く----
312 :
nobodyさん :2008/01/22(火) 11:56:30 ID:q9syKBOV
問題点 Aさんがログイン画面にアクセスしてログインの情報を入力してる最中に Bさんがアクセスしてきました。 その場合また新しいランダムな文字列が発行され データベースのpass2が更新されてAさんの hidden に入ってる物が違ってきます。 現在この状況でつまっております。 何か助言を頂けないでしょうか?
> 全てのユーザーのpass2を更新する(pass1 + ZztMHpWSD) すべてのユーザーのを更新する理由は何? ログインとかログアウトする時に一人のユーザーのみを 更新してはいけないの?
314 :
nobodyさん :2008/01/22(火) 12:12:27 ID:q9syKBOV
>>313 > すべてのユーザーのを更新する理由は何?
アクセスしてるユーザーがどのユーザーかわからないためです。
ログアウトした時に一人のユーザーを更新する場合
ログアウトする時にpass1+ランダムな文字列で更新
再ログインするためにランダムな文字列発行するわけにもいかないし、
ログアウトの時クッキーにランダムな文字列書き込んだ場合
他のパソコンでログインできなくなる。
一応こんな風に考えてます。
315 :
nobodyさん :2008/01/22(火) 12:28:18 ID:q9syKBOV
古い物上げてきたんで一応悩みをまとめておきますね。 ・ SSLをできれば使いたくない(証明とかいらない&節約) ・ HTTPヘッダを見るとパスワード丸見え(盗聴怖い) ・ md5で暗号化しても暗号化した物を盗聴されて打たれたら意味ない ・ ワンタイムパスワードを作って毎回パスワードを変更するが他のユーザー接続で失敗 こんなところです。
節約とセキュリティーをあげるのは相反するものだぞ。一般論として。 金属探知機を設置せずに、拳銃の持込を完全に防止したいみたいな意味だ。
317 :
nobodyさん :2008/01/22(火) 14:40:45 ID:q9syKBOV
>>316 私がしたいのは独自で作成した金属探知機を使用したいのです。
金をかければ有名ブランドの金属探知機で安心、安全でしょう。
私がほしいのは安全だけなのです。
未熟なので能力が伴うかどうかは別として。
ユーザに負担思いっきりかけていいならPGPの秘密鍵暗号鍵みたいな仕組みにすれば? 可能か不可能かって話なら可能だろ
319 :
308 :2008/01/22(火) 16:03:11 ID:???
>>309 ありがとうございます!
今職場なので、帰宅したら試してみます。
>>310 避けたい気持ちでいっぱいです。
一応使えている人がいる様なのでもう少しいじり倒してみます。
320 :
nobodyさん :2008/01/22(火) 17:21:38 ID:q9syKBOV
ざっとセキュリティ関連の記事をいくつか見てきたのですが
どうやらこのスレにいるレベルでは無理そうな感じがしてきました。
>>318 ユーザーに負担はやはりかけたくないですね…。
PGPをざっと見てどのような物かがわかったのですが
できればユーザーにはシンプルにログインさせてあげたいです。
(ID & PASS ぐらい)
とは言っても数人で使う程度の予定で、
一度ログインしたら自動ログインできるように設定したいので、
ログイン画面は
ID入力画面→(データベース内容変更)→pass入力画面→ログイン
この流れでいこうと思います。
これだったら全ユーザーのパスワードを変更しなくていいですし。
これでどうしても証明やユーザーの手間を削減する必要がでてきたら、SSL導入を考えます。
ありがとうございました。
ワンタイムパスワードなのに自動ログインてw
>>321 自動ログインは別の処理だろ?
>>320 素直にSSL入れておけ。
何に使うかよくわからんがSSLに慣れておく事も重要
323 :
nobodyさん :2008/01/24(木) 12:32:36 ID:NF7q/+V1
はじめまして。 別サーバにあるファイルの更新時間を表示させるには どうしたらいいのでしょうか?
別サーバにあるのが性的で、Webサーバ経由で読み出せるなら
get_headers("
http://www.hoge.jp/hoge.html ");
とやって、last-modifiedの値を見る
phpファイルなら、そのファイル自身にfilemtime(__FILE__)とかで更新時を出力させればいいと思う
326 :
323 :2008/01/24(木) 15:32:15 ID:NF7q/+V1
ありがとうございます。 試してみます。 いろいろ探してみたところ下のように”HTTPヘッダーから拾う”という方法を見つけました。 これで「Wed, 23 Jan 2008 00:00:00 GMT」と表示されるのを、 JSTにして、「6:15 1/24 Thu 」と表示したいのですが、整形の方法がわかりません。 どなたかご教授ください。よろしくお願いいたします。
327 :
323 :2008/01/24(木) 15:32:38 ID:NF7q/+V1
<?php
$URL="
http://対象ファイル ";
$purl=parse_url($URL);
if(!$purl["port"]) $purl["port"]=80;
//開く
$fp=fsockopen($purl["host"],$purl["port"]);
//リクエストを送る
if($purl["query"]){
fputs($fp,"GET ".$purl["path"]."?".$purl["query"]." HTTP/1.0\n");
}else{
fputs($fp,"GET ".$purl["path"]." HTTP/1.0\n");
}
fputs($fp,"Host: ".$purl["host"]."\n");
if($purl["user"]) fputs($fp,"Authorization: Basic ".base64_encode($purl["user"].":".$purl["pass"])."\n");
fputs($fp,"\n");
//HTTPステータスラインを取得
$buf=fgets($fp,1024);
if(!strstr($buf," 200 ")) return(FALSE);
//HTTPヘッダを取得
//$finfo["HTTPヘッダ名"] に内容が格納される
while(!feof($fp)) {
$buf=chop(fgets($fp,1024));
if(!$buf) break;
ereg("^([^:]*): *(.*)$",$buf,$sbuf);
$finfo[$sbuf[1]]=trim($sbuf[2]);
}
echo $finfo["Last-Modified"];
?>
329 :
323 :2008/01/24(木) 16:57:23 ID:NF7q/+V1
最後の行を echo date('G:i n/j D',strtotime($finfo["Last-Modified"])); としたら望みどおりの結果になりました!!! ありがとうございました。
俺は Last-Modified → Date → クライアントローカル って順にしてるな
はじめまして。超初心者用という事でわからない事があったので質問してみます YahooAPIを用いて画像検索を行い、検索された画像をクリックする事でその画像の類似画像を新たに検索して Webページに表示させるPHPを作成しているのですが、クリックされた画像の色情報を取得する方法がわかりません。 画像のRGB値を求めて、その値に近い画像を表示させるつもりで現在考えています。 色の取得自体は一応できてるのですが下に処理を書きます $im = imagecreatefromjpeg($content); $img_w = imagesx( $im ); $img_h = imagesy( $im ); $cnt = $img_w * $img_h; $r = array(); $g = array(); $b = array(); for( $i = 0 ; $i < $img_w ; $i ++ ){ for( $j = 0 ; $j < $img_h ; $j ++ ){ $rgb = imagecolorat($im, $i , $j ); $r[] = ($rgb >> 16) & 0xFF; $g[] = ($rgb >> 8) & 0xFF; $b[] = $rgb & 0xFF; } } $index_r = intval( array_sum( $r ) / $cnt); $index_g = intval( array_sum( $g ) / $cnt); $index_b = intval( array_sum( $b ) / $cnt); クリックされた画像に対してこの処理を行う方法がいまいちわかりません。 わからない事だらけなのですが何か助言を頂ければお願いします。 OS:WindowsXP PHP: Version 5.2.5 ApacheVersion:1.3.26
>>331 検索結果表示時に画像リンクを
img.php?src=hogehoge.jpg
こんな風にimg.phpを経由させれば
img.php内で画像のソース取得などできるけど
こういう風に出来ない場合は
javascriptとかで画像に対してクリックイベント設定して
そこから処理させるとかかな・・・・
333 :
331 :2008/01/28(月) 11:07:03 ID:???
>>332 遅くなりましたがレスありがとうございます。
事情があってjavascriptは使わずに処理をさせたいのですが
上の方法で少し考えてみます。
img.phpという別のphpを新たに作成してそこで処理をさせるみたいな感じでいいのでしょうか?
PHPはPerlと比較するとオブジェクト指向プログラミングが やり易いようになっているけれど、やはり、大規模な開発には 向かないとかいわれています。javaの方が良いと。 この理由は何処にあるのでしょうか。他のプログラムとの連携や モジュール関連なのでしょうか。
335 :
332 :2008/01/28(月) 11:46:04 ID:???
>>333 あーごめんちょっとぼけてた
<a href="hoge,php?src=hogehoge.jpg"><img src="hogehoge.jpg" /></a>
こういう風なリンクにしちゃえば
hogehoge.php内でどの画像がクリックされたとか解ると思うんだけどどうかな?
このhoge.phpにsrc=hogehoge.jpgを渡してやることによって
hoge.phpにはどの画像がクリックされたかわかるし
どの画像がクリックされたか解ればあとは上のコードでなんとかなると思うけど
336 :
331 :2008/01/28(月) 11:54:21 ID:???
>>334 レスありがとうございます。
PHPだけでしたいのは他にも理由はあるのですがjavascriptはまだ全然勉強してないので・・・
でもPHPと連動させて作成するものが多いようなのでこれから勉強していきます
>>335 レスありがとうございます。
hoge.phpでそんなことができたのですね。一度やってみます
親切に教えてくれてありがとうございます
>>337 それは多分JavaScriptでやってる
んで、PHPでやるなら
まずRSSをパースして画像のURLを抽出する
抽出した画像をDLしてローカルに保存するor抽出したURLをそのまま使用
IMGタグを生成時に一定サイズ以上はサムネイル化する処理を実行
表示デ終わり
>>338 有難うございました 早速実行してみたいと思います
お聞きしたいのですが、PHPを実行した時画面の左上に?が必ず表示されていて 困っているのですがどうすれば無くなるのでしょうか? 日本語で表示させたくてPHP本体の文字コードをUTF-8にして毎回保存しています。 これだと文字化けはせず日本語は表示されるのですが必ず?が表示されます。 PHPを保存する時の文字コードを変更するのではなく、php.iniの設定を変えなければならないのでしょうか? OSはWindowsXP。PHPはバージョンを確認すると5.2.5なのですが途中でバージョンアップしたのか iniファイルはPHPとPHP4の二つあります。Apacheは1.3.26です。 ただPHPの環境作りは別の人がやってしまったので今いちどこを修正すればいいのかわかりません。 なんとか解決する方法を教えてもらえないでしょうか
>>340 PHPのソースコードに変な記号を表示させる記述がないのであれば、
間違って?を書いてるとかの可能性が考えられる。
あと、実行後のhtmlのソースのどの部分に記述があるかによって、
推測する事になると思う。
<?php
echo "test!<br>";
と、あえて書いてみるとか。
<?php echo "test!<br>"; と書いてためしに実行してみましたが、?test!と表示されます。 色んなPHPで実行してみましたが必ず?がついてきます。 間違って?を書いているということは無いと思うのですが・・・
BOM
>>343 BOMというのは始めて知りました。ありがとうございます。
このBOMを削除するのにUTF-8nで保存すると直るようなのですが、普通のメモ帳ではUTF-8でしか保存できません。
function delete_bom($str)
{
if (ord($str{0}) == 0xef && ord($str{1}) == 0xbb && ord($str{2}) == 0xbf) {
$str = substr($str, 3);
}
return $str;
}
上のコードでBOMを削除できるそうなのですが。<?phpの処理の中で記述すればいいのでしょうか?
?が消えないのですが。本当にわからない事だらけで申し訳ありません
エディタでUTF-8のBOM無しにするかUTF-8Nにすればおk
>>346 ありがとうございます。まだ勉強し始めたばかりだったので(汗)
あれ?bom無しは駄目なのか? いつも秀丸使っててbom有りでスクリプト書いてたんだが…
逆、BOM有りがダメ 予期せぬエラーが起きる
あぁ、ごめん。逆だった… bom有りで書いてたぜ。 具体的にどんなエラーが起きるの?
基本的にEUCでbomは知らんかったんで秀丸でUTF-8で保存してみたけど?出ないな。 秀丸だと保存オプションもUTF-8Nとかもないしbom入らないのかな。 メモ帳でUTF-8で保存して実行したら ・ソtest!<br> みたいのは出た。
秀丸でもBOMオプションあるな。 あんまり古いのだとないかもしれんけど。 これはphpが読み込んだときに自動的に削るべきもんかもね。
秀丸、bom有り、bom無し で試してみた。 web 上では見た目上、変化無かったけど、 CLI で実行させたら、bom付きでは頭に 0x81, 0x45, 0xbf の3バイトがくっついてきた。
>>353 そのくっついてくるのがアレ。
BOMつきUTF-8でファイル冒頭に
<?php
header("Content-Type: text/html; charset=UTF-8"); // 例。
なんてのを書くと「ヘッダ送ったあとでヘッダ変えたいとか、無理」と
PHPさんが優しく語りかけてくれる。
なるほど。解ったよ。アンガト
356 :
354 :2008/02/06(水) 00:24:06 ID:???
書いてから気づいた。
> 頭に 0x81, 0x45, 0xbf の3バイト
0xef 0xbb 0xbf の3バイト(
>>344 参照)、じゃないのね。
357 :
nobodyさん :2008/02/07(木) 16:59:49 ID:d+qc2qYD
チェックボックスでチェックされていたらチェックさせたいです POSTのデータと一致してるかどうかでforeach書いてるんですけど なんとなく無駄な感じがしてます… いい書き方ってありますか? foreach ( $hoge as $k => $v ) { $checked = ""; if (isset($_POST['hoge'])) { foreach ( $_POST['hoge'] as $key ) { if ($key == $v) { $checked = " checked=\"checked\""; } } } echo "<input name=\"hoge[]\" type=\"checkbox\"$checked value=\"$v\" />\n"; }
>>357 こーかな?判定は一行にもできるけど逆に見づらいし。
foreach ( $hoge as $k => $v ) {
$checked = "";
if( is_array($_POST['hoge']) && array_search($v, $_POST['hoge']) != FALSE ){
$checked = " checked=\"checked\"";
}
echo "<input name=\"hoge[]\" type=\"checkbox\"$checked value=\"$v\" />\n";
}
でも$v素通りはあんまよくないな。
360 :
357 :2008/02/08(金) 13:26:21 ID:???
>>358 array_searchなんてあったんですね!
ありがとうございます
>>359 素通りとは…?
$v を validate しろって事だよ。 359 はクロスサイトスクリプティングの可能性を示唆してるんだろ。
362 :
357 :2008/02/08(金) 17:52:07 ID:???
なるほど。 これは例なのでいれてないだけです。 $vはこっちで作成してる配列なのにな〜と思って。 ちなみに358は != FALSE ではなく !== FALSE ですね
それが確実。
つーか何で毎回is_arrayでチェックするんだよ
フォームで入力した内容に " が含まれる場合、 それをそのまま出力したら\"となるのですが、 どうすれば\をつけずに表示や保存できるんですか?
magic_quote_gpcをoffにする
エー それしか方法ないのですか?
あるよ
お願いします
どうもです!解決しました。 stripcslashes(htmlspecialchars())っていう風につかったんだけどこれでいいのかな
ああ、phpには "はフォームを通すと\\\"として送られてくるんですね だから先に勝手につけられたスラッシュを消して htmlspecialchars(stripcslashes($a, ENT_QUOTES)) とやれば"も'もHTML上できちんと表示できるようになりますね 勉強になりました
375 :
nobodyさん :2008/02/10(日) 22:35:31 ID:rhutwfEM
PHPないにプリントタグを使いたいんですが、 <BODY> <?php print <table> print <tr> <td>print"値"</td> <td>print"値2"</td> <td>print"演算"</td> <td>print"答"</td> print </tr> print </table> ?> </BODY> </HTML> だと、エラーがでます。だれかご教授ください・・・
ワロタw
378 :
nobodyさん :2008/02/10(日) 22:40:35 ID:rhutwfEM
>>376 すいません、テーブルタグでした。
申し訳ありませんが、参考ページを教えてくれますか?
380 :
nobodyさん :2008/02/10(日) 22:48:34 ID:rhutwfEM
基礎ってレベルじゃねえぞww
糞ってレベルだ
ひょっとしてこういう事がしたいのか? だとしたら文法根本的に間違えてるだろうに。 <BODY> <table> <tr> <td><?php print"値";?></td> <td><?php print"値2";?></td> <td><?php print"演算";?></td> <td><?php print"答";?></td> </tr> </table> </BODY> </HTML>
なんというか…wwwwwww 解った後でもう一度このスレに来て自分の書き込み見てみろw
携帯とPCの振り分けをしたく思い
http://blogn.hustle-user.com/e19.htmlを参考にして 、
index.htmlをindex.phpにリネームして、先頭に
<?php
$title="○○";
$page_e='
http://www. ○○/m/index.html';
$page_j='
http://www. ○○/m/index.html';
$page_i='
http://www. ○○/m/index.html';
$i=$_SERVER['HTTP_USER_AGENT'];
require_once('agent.txt');
?>
としました。そして携帯からアクセスしたところ無事振り分けることが出来ました。
しかしPCからみたら外部のcssを読み込んでいないようでページレイアウトが崩れてしまいました。
相対パスなのがいけないと思って、
<link href="
http:// ○○/css/global.css" rel="stylesheet" type="text/css" />
と、絶対パスに書き換えましたが改善しませんでした。
そしてさらにわからないことに、ブラウザ(Sleipnir)で何回も読み込んでいると
5回に一階ぐらいきちんと読み込んで表示されるのです。
どういうことなのでしょうか。もしかしてphpの問題じゃなくhtmlの問題でしたら板違い申し訳ありません。
問題の切り分けオヌヌメ
そのコードでどうやったら振り分けられる方が興味あるなw
388 :
385 :2008/02/11(月) 05:49:50 ID:???
>>386 問題の切り分けですか。
まずCSSのパスは間違ってませんでした。
htmlや画像のリンクは相対パスでも問題なく通ってるんで
もしかしたらパスの問題ではないんでしょうか?
となると。。文字コードとかでしょうか・・?
ちなみにphpもcssもS-Jis、改行コードはCR+LFでした。
>>387 ふ、振り分けられないですか?
サイトを参考にしつつやってみたのですが・・
俺は
>>387 では無いが。
page_e, page_j, page_i 全部URLが一緒な件
>>389 いや、それは別にそういう作り方もあるから別にいいけど
そもそも参考したっていうサイトの内容が突っ込みどころが多すぎて…
>>388 そこのサイトのはあんま参考にならんから別の探せw
あと火狐+火虫いれてCSSが適用されてるか確認しろ
393 :
385 :2008/02/11(月) 17:22:49 ID:???
返事が遅くなってしまい申し訳ありません。
>>389 あ、それはケータイのキャリア別に振りわけていないからです。。。
基本はみんなパソコンのメインサイトのindex.phpにアクセスしてもらって
ケータイの人は別のサイトに飛んでもらうってことで。。
なんか参考にしたサイトがまずかったようで。。。
もしおすすめなどあれば教えて頂けると嬉しいです。
>>392 firefoxはいれてないんで、今からいれて確認してみます。
ところで、火虫とは・・・?
> ところで、火虫とは・・・? 水虫のライバル。
火虫=FireBug
396 :
385 :2008/02/11(月) 17:59:06 ID:???
firefoxでみたところ問題なく見れました! となると、IE側の問題になるのでしょうか? そして火虫はわかりませんでした><
397 :
385 :2008/02/11(月) 18:13:19 ID:???
firefoxのアドオンでしたか。ありがとうございました。
fopen追記モード('a')で開いたファイルに追記したいとき どうすれば改行してつなげていけますか? たとえば $fh = fopen($file, 'a'); fwrite($fh, "test\n"); としても改行してつないでくれません
改行してつなげるんだから、 fwrite($fh, "\n"); fwrite($fh, "test"); だろw
>>399 それでもできてませんよ
ためしてください
<?
$file = "test.txt";
$fh = fopen($file, 'a');
fwrite($fh, "\n");
fwrite($fh, "test");
fclose($fh);
?>
いやあ納得いきませんね
いちおうtest\nとやって書き込んで、ファイルを見ると最後は改行されている。
なのに書き込むときはなぜ改行されたところから始まらないのですか?
\r\nではどうだい? もしくは 'ab'
あごめんabは勘違い。
だめですね
あれ、いや できてました どうもでした
405 :
385 :2008/02/11(月) 23:42:52 ID:???
解決しました!! CSSの文字コードをきちんとしていなかったのが問題だったようです。 CSSの先頭に @charset "shift_jis"; といれると解決しました。 phpじゃなかったですね。申し訳ないです。
>>385 ,398
,......,___ ___ お前初めてかここは?
{ r-}"''; (,- ,_'',; 力抜けよ
__ノYv"-ァ'=;} ,_、 Y' リ''ー
ヽー-ハ '、 / キ}、 {"ー {⌒
ト ハ } ,. -ー─-- 、___ / ハノ`{ {
! ! !__! ,-、_ ,,( ,  ̄`ー、 /"''ー;ー'"
|___|! !ー-ニー、;、;'""ノ';{ iー ヽ=ニ=),..- '"
K \ヽ !`ーニ'-、{ (e 人 |' ̄ ̄/`ー! | / /⌒
\ヽ !、ヽ, "")ー-'"| ! | | /! |___{,、 / /
\"'ヽ'ー-" _! || } ー─| | / ヽ/ /
ニ=ー- `!!!' ''''ー'"{ | | / /`ー|\/
ーーーー' _ | ./ ヽ__ / | !
すみません下らない質問なのですが <?php $mysql=mysql_connect("localhost","user","password"); if(mysql_select_db("dbname", $mysql)){ print "OK"; }else{ print "NG"; } ?> このようなソースを書いて(user passはサーバーのもの) PHPとMYSQLがちゃんと動いているのか確認をしようとしたのですが 画面が真っ白になってエラーも帰ってきません。 PHP php-5.1.6-1.6 mysql mysql-5.0.27-1.fc5 FedoraCore5で php-mbstring php-mysql php-gd php-devel mysql-serverなども全部入れています。 解決方法ご指南ください
>>407 display_errors = on
それとコンソールを試してみて パスワードが通っていない感じのエラーが出ていました ただ、パスワードは合っていて コンソールで mysql -u user -pでログインが出来ている状態です /etc/hosts にもデータベース名は記述してあり(localhost) なんで通らないのかわからなくなっています 今まで使っていたときは大丈夫で 突然この状態になってしまいました。 どなたかお願いします…
それだけの情報で聞いたって誰も分からない
すみません、質問です。
PHPには、.NET Framework の ADO.NET のように、自作した csv ファイルに SQL 文で
データを抽出することは可能なのでしょうか。
以下のサイトのような感じで動かす場合です。
ttp://park5.wakwak.com/~weblab/selectTextFile.html 一般的なテキストファイルを開いたり、書き込んだりする方法とは別という意味です。
こういった方法以外でという意味です。
$fh = fopen("csv.txt", "r");
$line = fgets($fh, 1024);
// ここで$lineの条件を調べる。
fclose($fh);
ヒントとなるキーワードでもいいので、お願いします。
PEAR::Structures_DataGrid_DataSource_CSV ・・か?
>>410 よく情報が足りないといわれるのですが
どこら辺が足りないですか
>>407でバージョンやOSも書いてますが
エラーはサーバーから離れていたので書けなかったですが
後学のためにもお願いします
>>416 よくわからんが、こんなコードがある時点でろくなもんじゃない
if(file_exists("B:\\")){
echo "<center><a href='./$this_file?dir=B:\\'>B:\\</a></center>";
} else {}
if(file_exists("C:\\")){
echo "<center><a href='./$this_file?dir=C:\\'>C:\\</a></center>";
} else {}
if (file_exists("D:\\")){
echo "<center><a href='./$this_file?dir=D:\\'>D:\\</a></center>";
} else {}
if (file_exists("E:\\")){
echo "<center><a href='./$this_file?dir=E:\\'>E:\\</a></center>";
} else {}
if (file_exists("F:\\")){
echo "<center><a href='./$this_file?dir=F:\\'>F:\\</a></center>";
} else {}
if (file_exists("G:\\")){
echo "<center><a href='./$this_file?dir=G:\\'>G:\\</a></center>";
} else {}
if (file_exists("H:\\")){
echo "<center><a href='./$this_file?dir=H:\\'>H:\\</a></center>";
} else {}
ShiftJISのCSV形式を読んで、EUC文字コードに変換したいんですが、 Windowsの拡張漢字(IBM拡張やNEC拡張)や、外字領域も きっちり対応してくれるような、関数とかないんでしょうか?
そんなマニアックな文字まで対応してる関数はない
420 :
nobodyさん :2008/02/21(木) 04:46:45 ID:uBvv/k1H
すみません、質問です。。。 XAMPPをインストール後に以下の手順でエラーがでてしまうのですが、何が原因なのでしょうか??? 1. Terminal shellに行って、システム管理者ルートでログインします。 sudo su 2. XAMPPをスタートするには、このコマンドをコールしてください: /Applications/xampp/xamppfiles/mampp start ここで、このような感じのエラーメッセージがでていまいます。 (No such file or directory, errno = 2) XAMPP: Error 133! Couln't start ProFTPD! ちなみにこの段階でXAMPP Control Panelを起動しようとすると「このシステムとは互換性がないためアプリケーションを起動できません」とメッセージが出てしまいます。 OSはMacOSX.2.8で、インストールしたのがXAMPP Mac OS X 0.7.2です。PHP使用以前の問題で恐縮ですがとても困っていますのでどなたかよろしくおねがいします。
This version is for Mac OS X 10.4 (Intel&PPC) and higher.
422 :
420 :2008/02/21(木) 15:40:03 ID:uBvv/k1H
ガーン。。。ということはXAMPPは使えないのですネ。 ありがとうございました。。。
xamppなんて使うなや
それをいうのなら、Macなんて使うなよ。が正しい。
425 :
nobodyさん :2008/02/21(木) 22:15:59 ID:FbPK8kbc
Winよりはマシだけどな(PHPインストール環境として)
428 :
nobodyさん :2008/02/21(木) 22:29:31 ID:FbPK8kbc
>>427 sjis,EUC,utf-8に変更したんですが、何も変わりません。。。
意味がわからん
つ mb_decode_mimeheader, mb_internal_encoding
431 :
nobodyさん :2008/02/21(木) 22:56:44 ID:FbPK8kbc
すみません。意味不明で。。。 とりあえず33行目から変更してみたんですが、今度はなにも表示されなくなってしまいました。 33 switch(strtolower($structure->ctype_primary)){ 34 case "text": // シングルパート(テキストのみ) 35 $diary_body = $structure->body; 36 $diary_body = mb_decode_mimeheader( $diary_body , 'ISO-2022-JP'); あと言い忘れたんですけど、スクリプトはSJIS、DBもSJISでやってます。
本文ならmimeheaderじゃねーし。 header見て文字コードが何か確かめてSJISに変換しなされ
あとスクリプトSJISで書くのは今すぐやめろ
434 :
nobodyさん :2008/02/21(木) 23:14:40 ID:FbPK8kbc
SJISで書いちゃ駄目なんですか!?
すみません!!
あと
>>432 さんの書き込みの意味がわかないんですが、具体的にはどうすればいいんでしょうか?
435 :
nobodyさん :2008/02/21(木) 23:57:05 ID:FbPK8kbc
自己解決できました。 ご迷惑欠けて申し訳ありませんでした。
437 :
nobodyさん :2008/02/26(火) 22:29:16 ID:8JcMjBPY
for ($i=0, $n=100000000; $i<$n; $i++ ) { $str = $i; } こうすると$strには0〜99999999が入りますが、a〜zzzzzzzzまでを$strに入れるにはどう書けばよいのでしょうか?
アルファベット進数?つまり26進数とかになるのか。 aを0、bを1、cを2・・・て対応させればとりあえず入るな。
for ($i='a', $n='zzzzzzzz'; $i<=$n; $i++ ) { $str[] = $i; }
1桁増やすごとに計算量が莫大に増加していく恐怖を味わうとよいわ
>>439 ネタかと思ってやってみたら本当に動きました
文字列をプラスするとこういうことになるんですね
ありがとうございました
質問です! 「form.html内のinputタグで送信した値をpost.php内の<?= $_post["abc"] ?>で表示させる。」 ですが、 ↓ 「phpファイルではなく、htmlファイル内で表示させる」 にはどうすればいいのでしょうか? 1回の入力で、複数ページ共通ヘッダの「更新日」が変更できたらいいな、と考えております。 きっと超基本的な事柄なのでしょうけれど、ネット上でもなかなか見つからないので...。 よろしくお願いします。
Webサーバの設定で拡張子「.html」もphpで動くようにして<?= $_post["abc"] ?>
444>> なるほど、設定が必要なんですね。 助かりました。 ありがとうございます。
>>446 ありがとうございます。
勉強してみます!
ど素人の質問です。
以下のPHPを作ったところ、画面が真っ白になりました。
真っ白=エラー無しと思い、tablenameを確認したところデータが入っていませんでした。
>>407 と同じエラーかと思い、
>>408 を確認したところONになっていました。
自分では原因がわからないため、どなたかご指摘願えないでしょうか。
<作っているつもりのもの>
別ページのフォームから送信(reg)されたデータを、データベースに入れるPHP。
環境…SQL=PostgreSQL OS=Linux PHP=5.2.5
確認…FireFox
$con = pg_connect('dbname host user password');
$a = $_POST["a"];$b =$_POST["b"];$c = $_POST["c"];
if(isset($_POST["reg"])){
$sql = "select max(log) from tablename";
$result = pg_query($con,$sql);
$array = pg_fetch_array($result);
$new_log_no = $array[0] + 1;
$sql = "select current_timestamp";
$result_date = pg_query($con,$sql);
$in_date = pg_fetch_array($result_date);
if(isset($_POST["b"])){ $d = $b; } else { $d = $c; }
$sql = "insert into tablename (log,a,d,_in_date)
values('$new_log_no','$a','$d','$in_date')";}
else{ header("Location: menu.php"); }
if(!$result){ echo "送信に失敗しました";}
Apacheのログは? あとプログラムのどこまで実行したら真っ白になるか切り分けてみたら?
>>449 レスありがとうございます。
AccessLogはこうなっていました。
127.0.0.1 - username [28/Feb/2008:00:59:35 +0900] "GET /test/in.php HTTP/1.1" 200 555
127.0.0.1 - username [28/Feb/2008:00:59:41 +0900] "POST /test/in_date.php HTTP/1.1" 200 5
in.phpがフォーム、in_dateが問題のPHPです。
よくわからないですが、データベースに問い合わせていない?気がするので調べてみます。
php として動作してないだけじゃ? httpd.conf とか確認してみたら?
452 :
448 :2008/02/28(木) 02:15:26 ID:???
>>451 httpd.confは本を参考に次のように設定追加してます。
AddType application/x-httpd-php .php
あとは、デバッグの基本中の基本。チェックライト入れまくる
つーか、LoadModuleしてるのか?
455 :
448 :2008/02/28(木) 19:24:05 ID:???
亀レスになってしまい申し訳ありません。
$sql = "insert into tablename (log,a,d,_in_date)
values('$new_log_no','$a','$d','$in_date')";}
の部分のSQLに対し
pg_query($con,$sql);
を設定するとテーブルにデータを追加することが出来ました。
しかし作成されたデータは中身が空でしたorz
insertが動いてるのでPHPとデータベースの連携は取れてると思います。
>>454 Loaded Modulesを調べた所次の通りの結果でした。
mod_php5, mod_setenvif, mod_so, mod_auth, mod_access,
mod_alias, mod_userdir, mod_actions, mod_imap, mod_asis,
mod_cgi, mod_dir, mod_autoindex, mod_include, mod_status,
Momod_negotiation, mod_mime, mod_log_config, mod_env, http_core
つーか、まずはHTMLしかないphpを書いて試すとか 白紙のときにブラウザの機能でソース見るとどうなってるとか いろいろやってんのかな
だいぶ前にログナンバーを引っ張り出して重複せずに+1したいと 言っていたものですがa+モードとファイルロックのタイミングで 何とか実現できました。 その後に続くwモードのファイルーオープンで ログ数を調整しようと思ったのですが この処理を付けるとログが全部消えてしまいます。 何か間違えていますか?
//指定行数以上のログの削除 $delfilename = ('card-walin.txt'); $dellines = file($delfilename); $delcountlines = count($dellines); $yojyou = $delcountlines - 2; $delhandle = fopen($filename, "w"); $delnewlog = ""; flock($delhandle,LOCK_EX); for ($i = $delcountlines; $i <= $yojyou; $i--) { array_unshift($delnewlog, $dellines[$i]); } fwrite($delhandle,$delnewlog); flock($delhandle,LOCK_UN); fclose($delhandle);
すいません、これで。 ログ二行以上ならログの先頭から余剰分消していくと言う感じで //指定行数以上のログの削除 $delfilename = ('card-walin.txt'); $dellines = file($delfilename); $delcountlines = count($dellines); if ($delcountlines > 2) { $yojyou = $delcountlines - 2; } else { $yojyou = 0; } $delhandle = fopen($delfilename, "w"); flock($delhandle,LOCK_EX); $delnewlog = ""; for ($i = $delcountlines; $i <= $yojyou; $i--) { fwrite($delnewlog, $dellines[$i]); } flock($delhandle,LOCK_UN); fclose($delhandle);
461 :
nobodyさん :2008/03/05(水) 16:42:58 ID:bSWg3SQN
実行スクリプトまでのサーバーのフルパスを下記のように取っております この書き方だとファイル名test.phpを他の名前にするたびに$this_script_nameを書換えないといけません ファイル名を書換えてもソースを変えずにフルパスを取得する書き方を教えてください $this_script_name = 'test.php'; $full_path = ereg_replace($this_script_name ,'' ,$_SERVER['SCRIPT_FILENAME']);
462 :
nobodyさん :2008/03/05(水) 16:58:07 ID:OQixiW/q
レンタルサーバ・無料スペースに依存せずにPEARを使いたいのですが・・・ ググってみると”必要ファイルをコピーして ini_set や .htaccess を使えば良い” との事ですが、どこまでが必要ファイルなのか良く分かりませんでした (ローカルにインストールしたPEARディレクトリ丸ごとホームディレクトリにコピーなのか installコマンドでダウンロードしたファイルだけコピーなのか) 質問は最初の一行の通りなのですがPEARを使うにはどのファイルが必要なのでしょうか?
464 :
nobodyさん :2008/03/05(水) 17:16:55 ID:bSWg3SQN
>>463 おおお できました
これだけで出来るとわ・・・
ありがとうございました
掲示板の削除なんですが下記操作してからファイルロックかけて書き込むと 場合によっては重複しませんか? if ($_POST['delete']) { for ($i = 0; $i < count($lines); $i++) { $items = explode("\t", $lines[$i]); if ($items[0] == $_POST['delradio'] && $items[4] == $_POST['delkey2'] || $items[0] == $_POST['delradio'] && 'masterpass' == $_POST['delkey2']) { array_splice($lines, $i, 1); } } }
>>465 if (isset($_POST['delete']) && $_POST['delete']) {
foreach ($lines as $key => $value) {
$items = explode("\t", $value);
if ($items[0] == $_POST['delradio'] && ($items[4] == $_POST['delkey2'] || 'masterpass' == $_POST['delkey2'])) {
unset($lines[$key]);
}
}
}
書き込みの部分を見ないとなんとも言えない
467 :
466 :2008/03/08(土) 11:35:25 ID:???
if($_POST['deletion']){ $deletionlogname = ('card-walin.txt'); $deletionloglines = file($deletionlogname); $deletioncountloglines = count($deletionloglines); $deletionlognumbers = $deletioncountloglines - 1; $deletionfopen = fopen($deletionlogname, "w"); flock($deletionfopen,LOCK_EX); for($i=0; $i<$deletionlognumbers; $i++){ $deletionlogitems = explode("\t", $deletionloglines[$i]); if($deletionlogitems[0]==$_POST['deletionradio'] && $deletionlogitems[3]==$_POST['deletionkey'] || $deletionlogitems[0]==$_POST['deletionradio'] && 'masterpass'==$_POST['deletionkey']){ continue; }else{ fwrite($deletionfopen,$deletionloglines[$i]); } } flock($deletionfopen,LOCK_UN); fclose($deletionfopen); }
$deletionlogname = ('card-walin.txt'); 何これ
469 :
465 :2008/03/08(土) 11:42:09 ID:???
>>467 は
>>465 が書いたものです、アンカー打ち間違えた・・・・・
んでこれは記事の固有IDとパスが一致した行を削除と言う流れで
書いてるんですがどうも訳わからん記事まで削除されてしまいます。
>>465 の質問とあわせてアドバイス頂けないでしょうか?
470 :
465 :2008/03/08(土) 11:43:33 ID:???
>>468 ログの名前です、
変数名の英語的意味めちゃくちゃなのは
とりあえず別の変数と重ならなくさせるためなので
ご勘弁を。
パスワードがどれかすら分からんし
472 :
465 :2008/03/08(土) 11:44:56 ID:???
$number\t$name\t$comment\t$deletionkey\t$time\n ログの並びはこんな感じです。
473 :
465 :2008/03/08(土) 11:46:30 ID:???
$deletionlogitems[0]がパスワード、 POST['deletionradio']が記事の固有IDになります、 説明不足ですいません。
なんでログの件数ー1だけforでループしてんの?
475 :
465 :2008/03/08(土) 11:56:53 ID:???
>>474 その部分もしログが0だった場合とか書いてませんね、迂闊でした。
ログの記事数のカウントが0から始まるのでそうやってみたのですが・・・・・
訳分からん記事ってどういうの?
477 :
465 :2008/03/08(土) 12:06:56 ID:???
関係ない別の固有IDの記事まで消えるんですよね、 例えば記事が3つあって、3つめの記事で固有ID3の記事を削除したら 1つめの記事も同時に消えたりします。
1つめの記事が消えないこともあんの?
479 :
465 :2008/03/08(土) 12:17:38 ID:???
>>478 今試したら記事3つのログで2つめの記事消したら
3の記事も同時に消えました。
つかその後、削除ボタン押したら全部消えたw
どうも記事固有IDとパスワード一致しなかった場合書き換えしないと言う
処理が抜けてたようです。
ただこれを直しても記事の同時消えが直る気がしない・・・・
ロジック的には大体上にあげたプログラムである程度あってるのでしょうかね。
データベースにおいて、データは物理的に削除するのではなく、 フラグ変更することをお薦めする。
481 :
465 :2008/03/08(土) 12:30:46 ID:???
>>480 表示するかしないかで処理するということですか。
>>481 データベースの場合だ
ファイルの場合は消した方がいいよ
速度変わってくるし
じゃ別に今言うべき話じゃないだろw
まず ||と&&の使い方を覚えよう 466でも書いたけど(最初のifで要らん部分あるけどw) ループ中にある if ($items[0] == $_POST['delradio'] && $items[4] == $_POST['delkey2'] || $items[0] == $_POST['delradio'] && 'masterpass' == $_POST['delkey2']) { これは変です(処理的には通るけど) if ($items[0] == $_POST['delradio'] && ($items[4] == $_POST['delkey2'] || 'masterpass' == $_POST['delkey2'])) { やりたい事は多分これ んで、POST内容は意図したものがきてるの?
487 :
465 :2008/03/08(土) 16:30:22 ID:???
なにやらすごい間違いをしてました・・・・・・・・・ $items[4]がパス格納部じゃなくて$items[3]でした・・・・・・・・ 今から皆さんにご指摘頂いた部分の修正に入ります、 本当にすいませんでした。
489 :
465 :2008/03/08(土) 16:38:20 ID:???
なんだか喧嘩させてしまったようで申し訳ない・・・・・
何度も投稿すいません、掲示板で書き込んだ後ブラウザの更新ボタン押すと もう一度書き込まれてしまうのですがこれを防止するのは2重書き込み防止処理だけでいいのでしょうか? これだとたまに別の人が書き込んだ後に更新押した場合 書き込まれちゃいますよね。 皆さん過去ログの内容走査処理したりしてるのでしょうか?
>>491 書き込んだ後ブラウザを強制的に閉じるようにしたら更新できなくなるよ
そんな〜、ドラえも〜ん!
a.html←フォーム
b.php←post先
c.php←投稿完了しました表示
b.phpで投稿完了したら
header('Location :
http://example.com/c.php ');
これでa.htmlまで戻るとかで戻らない限り2重投稿はある程度防げる
なるほど、そういうことでしたか、取り乱しました。 html作成せずにphp1つだけで全部やろうとしてもややこしそうですね・・・・・
>>495 別にhtml作らなくてもできるけど
ファイルは分けたほうが後々良いよ
>>495 だまされるな!
ドラえもん呼ぶのが正解だ
htmlってどうやって作るんでしたっけ? なんかリファレンス読んでも見つからないのですが。
499 :
nobodyさん :2008/03/09(日) 01:35:03 ID:BZEq18rG
target.phpをインラインフレームで表示するためのページをget.phpとします
その際にをtarget.phpへ送るリファラを
http://example.com とするにはどうしたらいいのでしょうか。
過去ログを探して、
ヘッダに ""Referer:
http://example.com\r\n " を追加すればいいと書いてあったのですが、
どのように追加したらいいのかがわかりません
location みたいな書き方が思い浮かんだのでやってみましたができませんでした。
正しいやり方を教えてください。お願いします。
-------------------------------------
【get.php】
<?php
header("Referer:
http://example.com\r\n ");
?>
<iframe src="target.php">
</iframe>
-------------------------------
【target.php】
<?php
echo $_SERVER["HTTP_REFERER"];
?>
-------------------------------
get.phpの実行結果
http://****.jp/get.php
>>499 【get.php】
<?php
echo '<iframe src="target.php?referer='.$_SERVER["HTTP_REFERER"].'"></iframe>';
?>
【target.php】
<?php
echo $_GET["referer"];
?>
501 :
nobodyさん :2008/03/09(日) 02:31:20 ID:BZEq18rG
>>500 せっかく答えていただいたのに恐縮ですが、
それはget.phpで取得したリファラをtarget.phpへgetメソッドで渡す方法ですよね
私が知りたいのは、
get.phpでtarget.phpを開くけれども、
target.phpで取得されるリファラはget.phpではなく、
http://example.com にしたいということなのです
印象の良くない言葉なので使いたくはなかったのですが、つまり、リファラ偽装ということです
書き方悪くてすいません
>>501 http://example.com これは固定値かそれともget.phpで取得できる値かどっち?
get.phpで取得するリファラの値なら方法は無いよ?
get,php内でgetのリクエストをtarget.phpに宛てに投げて
その時のヘッダにリファラ偽装して渡すとかなら可能だけど
503 :
nobodyさん :2008/03/09(日) 03:08:23 ID:BZEq18rG
>>502 説明不足で本当にすいません
固定値です
>>503 ファイルに対してアクセスあった場合
強制的に.htaccessとかでSetEnvとかかなぁ・・・
もしiframeのが別のサイトなら
getのリクエスト投げた方が早い
変数に0入れてその後の分岐にNULLかどうかとか入れたら 0はNULLやfalseと判定されますか? その変数を変数-1としても-1とはならない?
===で比較すれば判定されない。 変数=0 変数=変数−1としたら変数の中身は−1になる。
型の自動変換に頼った比較は避けた方がベター。
どうもすいません、ありがとうございました。
509 :
nobodyさん :2008/03/09(日) 14:05:48 ID:BZEq18rG
>>504 いろいろなアドバイスありがとうございます
target.phpが別のサイトなら、
target.phpのソースは
<?php
echo $_SERVER["HTTP_REFERER"];
?>
なのは弄りようがないわけですが、
target.phpの $_SERVER["HTTP_REFERER"]の値を
http://example.comであると認識させるためには 、
get.phpからどうやってgetのリクエストを投げればいいのでしょうか
511 :
nobodyさん :2008/03/09(日) 14:34:13 ID:BZEq18rG
>>510 ありがとうございます
つまり、getでリクエスト投げても、相手で表示される環境変数は変わらないわけですよね
どうすれば
get.phpでインラインフレームでtarget.phpを表示し、
target.phpの $_SERVER["HTTP_REFERER"]の値を
http://example.comtにできるのでしょうか やり方がさっぱりわからないのです
>>511 getでリクエスト投げる時にリファラ偽装すれば
リファラには固定値を入れる事ができる
だがインラインフレームでやるのは無理
それをインラインフレームでやる必要あるの?
どうしてもやりたいなら
.htaccessにSetEnvってのがあって
それを使ってtarget.phpにアクセスがあった場合
強制的にリファラを書き換えてやれば良い
513 :
nobodyさん :2008/03/09(日) 16:02:31 ID:BZEq18rG
>>512 インラインフレームでしようとしていた理由は、
自分がやりたいことを考えた時に一番実現しやすそうだと思ったからです
それが無理ならばインラインフレームでやることはありません
>getでリクエスト投げる時にリファラ偽装すれば
ここのやり方を教えてもらえないでしょうか
getはわかりますが、リファラ偽装の部分がわからないのです
>>513 pearのhttp_requestかcurlが楽じゃないかな
普通にfsockopenとかでopenして投げる事もできるけど
<?php
$request .= "GET / HTTP/1.0\r\n";
$request .= "Host: localhost.jp\r\n";
$request .= "Content-Type: application/x-www-form-urlencoded\r\n";
$request .= "Accept: */*\r\n" .
"Referer:
http://hogehoge.jp/\r\n " .
"User-Agent: DoCoMo/2.0 Fa2(c100;TB;W28H15)\r\n";
$request .= "\r\n";
$request .= "\r\n";
$fp = fsockopen("yahoo.co.jp", 80, $errno, $errstr, 30);
fputs($fp, $request);
$response = "";
while (!feof($fp)) {
echo fgets($fp, 4096);
}
fclose($fp);
?>
こんな感じでやふーのトップをもってこれる
515 :
nobodyさん :2008/03/09(日) 16:49:24 ID:BZEq18rG
>>514 ありがとうございます
私のくどい質問に回答続けてくれた方に感謝します
516 :
nobodyさん :2008/03/10(月) 01:54:10 ID:HGPlOVh9
PHP + MySQL でスレッド式掲示板を作りました。 スレッド毎にテーブルを作成し、そのテーブルにコメント(&投稿者名など)を記録、 すべてのテーブルを管理するテーブルに最終投稿日時などを記録して、スレッド順位などを決めます。 以下、コメントを投稿した時の部分のスクリプト。 $comm = addslashes($_POST['comm']); //コメント $id = addslashes($_POST['id']); //テーブルID $name = addslashes($_POST['name']); //投稿者名 if($_POST['sage'] == NULL){$sage = 0;} else {$sage = 1;} if($name == NULL){$page_disp = "名前を入力してください。"; } else { if($comm == NULL){$page_disp = "本文を入力してください。"; } else { insert_comment($id,$name,$comm,&$seq,$res_dbcon,&$result); //スレッド(テーブル)にコメントを書き込み if($result == FALSE){$page_disp = "投稿に失敗しました。"; } else { update_temp_table($id,$sage,$seq,$res_dbcon,$result);//管理テーブルに投稿日時などを記録 $page_disp = "投稿しました。";}}} PCからのアクセスと、DOCOMO、auからは期待した通りの動作をしていますが、softbank携帯からのみ、動作がおかしくなっています。 症状としては、$name、$commといった変数を受け取れず(?)、テーブルには各カラムのNULLになったレコードが追加される。 テーブルの更新、レコードの追加は行われているので、CURRENT TIMESTAMPなどはちゃんと入っている。 管理テーブルは更新されているので、各変数のNULLのチェックは通過している。 という状態です。スクリプト上におかしい箇所などあるでしょうか? ちなみにPHP、MySQLの勉強は先月始めたばかりで、この掲示板のスクリプトは、本などを読んで作ったオリジナルのものです。 よろしくお願いいたします。
すみません。サブルーチンの中身を書いてなかったです。 function insert_comment($tbl_id,$name,$comm,$seq,$dbcon,$result){//コメント追加 $l_sql = "SELECT count( * ) FROM `".$tbl_id."`"; $l_result = mysql_query($l_sql,$dbcon); $l_row = mysql_fetch_array($l_result); $seq = $l_row[0] + 1; $f_host = gethostbyaddr(getenv("REMOTE_ADDR")); $sql = "insert into `".$tbl_id."` (c_seq, c_time, c_name, c_comm, c_host, c_del_flg) VALUES (".$seq.", NOW( ), '".$name."', '".$comm."', '".$f_host."', '0' )"; $result = mysql_query($sql,$dbcon); } function update_temp_table($tbl_id,$sage,$seq,$f_dbcon,$f_result){//スレッド更新(管理テーブル更新) if($seq == 300){ $del_flg = 1;} else { $del_flg = 0;} //規定レス数に達したスレは終了 $sql = "update t_temp_table set c_count_comment = ".$seq." , c_del_flg = '".$del_flg."' where c_table_id = ".$tbl_id; $f_result = mysql_query($sql,$f_dbcon); }
>>516 softbankのチェックした機種は何?
多分表示側の問題だとは思うけど
それと、1スレッド1テーブルはやめた方が良い
ファイルベースの設計なら1スレッド1ファイルの方が良いが・・・
519 :
516 :2008/03/10(月) 02:40:11 ID:???
機種はちょっと分からないんですよね。 ログ見てみたらソフトバンクだな、ってのが分かったというだけで。 しかも、その方が問い合わせフォームからメールも送ってくれたんだけど、 それがまた見事に文字化けしていて全く見れない状態です。 (これもまたDOCOMO、auは正常動作。) 1スレッド1テーブルが良くないというのは、パフォーマンスとかCPU占有とかいう話でしょうか? 素人考えで、一つのテーブルのみが異常にレコード数多くなるよりいいかな、と思ったのですが…
ちょ,それはない
>>519 旧Vodafone機種とかにはまともに送れないのとかあるからねー
そこらへんが携帯対応のめんどくさい所
1つ要素追加しようとした時に全部のテーブル構造変えるほうが手間
あとデフォ設定でCPUがP4の3Gでメモリ2Gなマシンでも
1テーブル2000万件とかいれても平気だから1テーブルに入れろ
DB設計は色々と勉強した方が良いよ
超初心者用ってあるのに全然わからない。・゚・(ノД`)・゚・。 2ヶ月ぐらいやってるけどなにをどうやっていいやら・・・ とりあえずHTMLを少しやってたのでPHPに挑戦してみたんだが 難しい。そして、どう使うのかがよくわからん。 PHPスーパーサンプル集って本を買って本の進行通りにやってるが だからなに?って感じでおわってしまう。 まず最初にこんにちはを画面に表示させた。うむ。 フォームはあらゆるところで使われるので重要ということで フォームもやってみた。うむ。 いま、フォームで送信されたデータを関数で色々条件をつける もしくは処理をするってのやってるんだけど、それも具体的によくわからん。 説明には、パスワードを入力とか普段サイトで使ってるようなことで使う みたいなことは書いてあったけど、実際自分でつかえるかなーと疑問。 何をどうしたらいいか、もっと分かりやすい本、もしくはページはないか しってたらお願いします。できれば、私はこう使ったというのを実体験で いってくれると分かりやすいです。m(_ _)m
>>523 すごくよかったですm(_ _)m
私が買った本より説明が分かりやすく理解しやすかったです。
とりあえず、このページを読破し実際にやってみようと思います。
525 :
nobodyさん :2008/03/11(火) 03:36:14 ID:xCa4blgr
すません。ある関数の返り値をvar_dumpしたら object(stdClass)(1) { ["array"]=> "test"} みたいな感じでオブジェクトで返ってきました。 配列arrayの中の"test"という文字列を取り出すためにはどうしたらよいのでしょうか? ちなみにjson_decode()です。upgrade.phpを利用してassocをTRUEにしているのに配列ではなくオブジェクトで返されてしまって困っています。
$obj->array
527 :
nobodyさん :2008/03/11(火) 15:31:16 ID:xCa4blgr
528 :
nobodyさん :2008/03/11(火) 20:58:03 ID:LKhchWrt
PHP5のsimplexml_load_fileを使ってWordPressのRSSフィードを読み込もうと しているのですが、フィード内の <content:encoded> といったエレメントが 読み込まれません。 どうも「:」がエレメント名に含まれていると、PHPはそれを見落としてしまうよう なのですが、同じような経験をされた方いらっしゃいますでしょうか?
PHPって有名なプログラミングですよね? 今度の4月から大学(情報工学科)に通うんですけど 教授とかに聞いても大丈夫ですよね?
そうそう、有名なプログラミングだよ。
PHP で HTML のブロックをコメントアウトコメントアウトするのって ↓でええんか? <?php if(false){ ?> … <?php } ?>
<?php if(false): ?> ... <?php endif; ?> なんでこの書き方って普及してないの?
くだしつで失礼します。 外部からのアクセスでPHPに情報を送り、それをPHPが一度Textファイルに保持した上で 他のアクセスがPHPからそれを受け取るという処理を行っています。 チェックは連続して行っていて情報が無ければ「NoEntry」という結果を返しています。 (保持した情報は消えます) (処理中、データはロックしています) 今現在そのチェック処理を2秒に1回の頻度で行っているのですが、 一般論の範囲でPHPはどれくらいの負荷までなら普通に耐えられるのでしょうか? 可能であれば上記のチェック処理を1秒に2・3回行いたいと思っています。 使用しているサーバはさくらインターネットのプレミアムコースです。 PHPのバージョンは、、すみません。詳しく分からないのですが初心者解説サイトの命令のみ使っています。 2秒に1回のチェックですが、実際にデータを保持し送信するペースは1時間に1回ほどです。
>>534 チェックの方法にもよると思うけど
file_existsかなんかでチェックしてるって事?
よく分からんけどcronみたいな定期的な処理実行を無限ループでやってるということか? 他のアクセスがあった時点でファイルがあるかチェックするんじゃだめなの?
すみませんでした。補足します。 繰り返しアクセスしているのは外部のプログラムで、PHPはそれに対して反応を返しています。 PHP内部では繰り返しの処理はしていません。 SaveパラメータでHTTPアクセスされると「A」という文字をPHPが記録します。 LoadパラメータでHTTPアクセスされると、今PHPが保持してる「A」という文字をEchoで返し、「A」は消します。 この時、保持している文字がなければ「NoEntry」を返します。 現状2秒に一度Loadパラメータでアクセスしています。(文字があるかチェック) その間に複数のSaveパラメータでアクセスされると「A,B,C」と同時に保持して、 Loadパラメータが来るごとに、古いものから順に1文字ずつ返します。 ただ通常、1時間に1〜2回、多くても10回ほどのSaveパラメータのアクセスしか無いため ほとんどはLoadパラメータのアクセスを受信し続けている状態です。 このLoadパラメータを、現状の2秒に1度から、1秒間に2〜3回にしたいなと考えております。
>>537 そのLoadパラメータとやらの書き方次第だと
多分問題は無いと思うけどねー
処理負荷にもよるけど2,3リクエスト/秒なんて余裕だから大丈夫かと
540 :
534 :2008/03/12(水) 11:52:49 ID:???
なるほど、助かります。ありがとうございました! やはりPHPの性能はCGIとは比べものになりませんね。
phpで出力した内容をhtmlで出力するのって 普通にfwriteとかで作成すればいいのでしょうか?
file_put_contentsでおk
>>541 ファイルに書き出したいなら
>>542 のを使えば良い
表示させるだけならechoなりでhtml書いたのを表示すればいい
どうもありがとうございました、助かりました。
545 :
nobodyさん :2008/03/14(金) 16:59:59 ID:P2EP3hdl
simplexml_load_fileを使い必要な部分を抜き出し下記のようなオブジェクトを取得しましたが ループ文を使い値と属性を取得しようとすると、$nameという配列を作る行で Warning: Illegal offset type となります。オブジェクトの属性と値の取り方を間違えているのでしょうか? $xml SimpleXMLElement Object ( [id] => 2 [title] => hogehoge [spec] => 500 ) foreach($xml as $a => $b) { if ($a == 'id') { $id = $b; } if ($a == 'title') { $title = $b; } } $name[$id] = $title; ←エラー
>>545 print_rよりver_dumpのがオススメ
$idと$titleをdumpする事をおすすめする
var_dump($id,$title);
てかそのループしなくても良いと思うんだが?
$name[$xml->id] = $xml->title;
547 :
nobodyさん :2008/03/14(金) 19:16:02 ID:P2EP3hdl
>>546 ありがとうございます
$name[$xml->id] = $xml->title;
これだと同じエラー内容となりました
ver_dumpしたところ下記のように出てきたのですが、さらにオブジェクトが続いているということでしょうか?
object(SimpleXMLElement)#9 (1) {
[0]=>
string(1) "2"
}
object(SimpleXMLElement)#8 (1) {
[0]=>
string(8) "hogehoge"
}
最近は、YAMLとJSONばっかりで XMLを使っていない。使おうとも思わない。 つかうのは外部とのシステムでXMLを 使うことを強制された場合ぐらいだな。
549 :
nobodyさん :2008/03/14(金) 20:27:50 ID:i8C7NkG0
質問です。 よければ教えてください。 echo 45 * 1.4; echo "<br>"; $a = floor(45 * 1.4); echo $a; echo "<br>"; というプログラムで、結果が 63 62 となるんですけど、原因がわかりません… 63が正解なのですが、なぜなんでしょう? 実際は変数が入るので、結果も変動して小数点以下の数値も出るのでfloorしていますが、 なぜかこの数値の時だけ結果にずれが…
>>550 典型的な、浮動小数点誤差の問題だね。
一般的にコンピュータは数値を二進数に変換して処理する。
1.4という数値は二進数では近い数字は表現できても、
1.4そのものは表現できない数値なんだ。(小数点以下が無限に続く)
よって 45 × 1.3999・・・という計算になる。
当然答えも62.9999・・・になる。
あとはechoのとき、62.9999・・・というほぼ63という値なら、
それを63にして表示しているということだろう。
公式サイトにも書いてあるが。
http://www.php.net/manual/ja/language.types.float.php
552 :
549 :2008/03/15(土) 12:13:27 ID:???
聞く場所違いましたかな・・・汗 他で聞いてみます 失礼しました。
for内でもう一度forつかうと$iの値が干渉しあうのですが $iって$aとかにする事は可能でしょうか?
$A = file_get_contents("ファイル"); としてるだけなのに標準出力にファイルの内容が表示される@さくら エロい人解決方法を教えてください。
>>554 頑張って$iだけを使うように工夫するのが定石
<br/>\nってどういう意味? なんで改行が二つあるの?
それぞれ違う改行。 意味を調べろ。
>>556 >>557 ちょっとログ分の画像掲示板のhtml出力しつつ
その1ページ分にすべてのページへのリンクを作ったりと複雑なので
whileで代用しました、ありがとうございました。
後、もう一つ聞きたいのですが
.=で処理したデータを継ぎ足していってhtml出力すると
ソースで改行が■になったりしてしまいます。
後々の事を考えて見栄えよく整形したいのですが
どんな要因が考えられるのでしょうか?
>>560 > どんな要因が考えられるのでしょうか?
メモ帳でLF改行を見てるだけ、とか。
>>561 すいません、まさにそのとおりなんですがtxtファイルに
phpproの講座のとおりEUC-JPとLFで設定してます。
改行をCR/LFにしたらちゃんと見えたんですが
EUC-JPとLFだとwindows使いには不便なのでしょうか?
後、ログにtxtファイルを使うと外部から見えてしまうと聞いたのですが
何がお勧めなのでしょうか?
>>562 ログにtxt〜とか媒体が問題じゃないよ。
ドキュメントルート以下におけば外部から見られる危険性は当然ある。
あれ?そうでしたか。 過去cgiとかにしとけといわれた思い出があるんですが。
>>564 その説は、ごく限られた人しか .htaccess でごにょごにょできなかった時代とか
.htaccess の書き方を説明するのがめんどくさいとかの産物なので、
せめて .log とか .dat で終わる名前のファイルにして deny from all に設定。
というか、
>>563 。
>>561 前半は Shift_JIS の地雷を踏みまくるほうがよっぽど不便だと思う。
566 :
565 :2008/03/16(日) 02:23:29 ID:???
htmlの投稿フォームからphpにデータ送ると phpの中身がテキストデータとして開かれててしまいます。 phpに同じフォームデータを書いて送信したら普通に処理できてたんですが どうしたものでしょうか?
日本語でおk?
html出力した内容に含まれてる投稿フォームから phpにその内容を飛ばして処理しております。 本文がない場合、名前&パスワードをクッキーをセットして 1行目のフォームに送り返してるんですが名前欄に何も出ません。 名前欄のvalue値に phpプログラムを使用して受け取ったクッキーを表示するコードを書いてるんですが 1行目フォームのようにhtmlファイルにphpコード書いても意味なかったでしたっけ?
570 :
569 :2008/03/16(日) 19:19:19 ID:???
ややこしくなってしまいました、 要するにログをhtml出力したファイル内にあるフォームに クッキーの受け渡しってできるんですか? 書き込みを処理するphpからクッキー発行しただけでは駄目なんですよね?
できるよ
572 :
569 :2008/03/16(日) 19:44:08 ID:???
すいません、お手数ですがどのようにすればよいのでしょうか?
>>569 を書き込んでから今までログをhtmlで出力する掲示板のサンプルを見回ってたら
<input value="">のvalue記述さえ無しにクッキーが表示されてるものが
あってどんな方法を使ってるか知りたくて。
名前欄に何も出ないっていう現在のコードを出してみて。入力と共に。
574 :
nobodyさん :2008/03/16(日) 23:54:38 ID:??? BE:147567375-2BP(1)
>>569 出力されたhtmlファイルの拡張子はphp?それともhtml?
出力されたファイルがhtmlであれば
サーバの設定が基本的な設定のままなら
cookieなんて出せないやんJavaScriptとか使えば別だが
phpであれば
<input value="<?php echo $_COOKIE['name'];?>">
とかすれば出るが
拡張子はhtmlです、
それで元々作っていたのは総phpで<input value="<?php echo $_COOKIE['name'];?>"> が出来てて
htmlにデータ書き出すようにしてからそれが通用しなくなったので混乱しておりました。
ただここだと
http://3d.skr.jp/3d/ 出来てるのはなぜなんでしょう?
576 :
nobodyさん :2008/03/17(月) 00:10:47 ID:??? BE:303567089-2BP(1)
>>575 そこはjavascriptでクッキーをセットしてる
なるほど、万人には無理ですかhtmlでは。 とりあえずクッキーの部分は飛ばして別の部分作ります。
578 :
nobodyさん :2008/03/17(月) 00:27:11 ID:??? BE:84324645-2BP(1)
function l(e){ var P=getCookie("pwdc"),N=getCookie("namec"),i; with (document) { for(i=0;i<forms.length;i++){ if(forms[i].pwd) with(forms[i]){ pwd.value=P; } if(forms[i].name) with(forms[i]){ name.value=N; } } } }; onload=l; function getCookie(key, tmp1, tmp2, xx1, xx2, xx3) { tmp1 = " " + document.cookie + ";"; xx1 = xx2 = 0; len = tmp1.length; while (xx1 < len) { xx2 = tmp1.indexOf(";", xx1); tmp2 = tmp1.substring(xx1 + 1, xx2); xx3 = tmp2.indexOf("="); if (tmp2.substring(0, xx3) == key) { return(unescape(tmp2.substring(xx3 + 1, xx2 - xx1 - 1))); } xx1 = xx2 + 1; } return(""); } こんな感じだな適度に直せばいける
579 :
nobodyさん :2008/03/18(火) 16:47:11 ID:npoe+Lzf
ちなみにこちらの環境で実行したら後者も正しく表示された mb関係かhtmlspecialcharsの文字コードの設定か? 文字化け文字列も出すと何かわかるかも
582 :
579 :2008/03/18(火) 18:00:26 ID:npoe+Lzf
レスありがとうございます。 、「、ハ、ソ、ホヌッホマ。ァ22コヘ、ヌ、ケ とでます。
583 :
nobodyさん :2008/03/18(火) 18:15:19 ID:sNjVpZ9l
WordPressで困っています。 サイドバーをカスタムしたくてsidebar.phpを弄っているのですが、カレンダーなどを取り除いてアバウトやその他をとりつけたいのですが、 どう記述するべいいのかわかりません。 カレンダーを消すことには成功したのですが、他のコンテンツをサイドバーに入れるには何を記述すればいのでしょうか。
>>579 ブラウザ上で右クリック→エンコード→日本語 (EUC)
でおk
ま、もう解決しちゃってるだろうけどw
586 :
579 :2008/03/18(火) 23:02:38 ID:npoe+Lzf
>>585 全然解決できてなかったのでこのスレにはりついてしましたw
ありがとうございます!うまくいきました!
587 :
nobodyさん :2008/03/19(水) 16:39:46 ID:4H6o0Qo6
そうです
589 :
587 :2008/03/19(水) 16:50:22 ID:4H6o0Qo6
>>588 ありがとうございます
プロパティでファイルを確認してみると「PHPファイル」となっていますが、
どのようにすれば認識されるのでしょうか?
Apacheの設定です
591 :
nobodyさん :2008/03/19(水) 19:12:29 ID:TVI3fNbM
フォームに"設定"というボタンが3つあるのですが これが押された時にどのボタンかを識別する方法を教えてくださいえろいひと
$data1 = @$_POST["data1"]; if (!strlen($data1)) { echo "<p>(strlen)データが入力されていません"; } else { echo "<p>(strlen)入力された内容:".$data1; } if (empty($data1)) { echo "<p>(empty)データが入力されていません"; } else { echo "<p>(empty)入力された内容:".$data1; } strlen()とempty()はどのように使い分けるんでしょうか? echoとprintみたいに理解したらいいですか?
echoとprintをどのように理解しているのかが気になる
596 :
nobodyさん :2008/03/19(水) 21:42:26 ID:R0ivO4NX
メインループとは何でしょうか? どこにあるものですか?
<?phpから?>
普通はそんなプログラムやらない
よし!ここなら俺でも答えられる 何でも質問してくれ
>>591 同一のname指定してきた内容で判断とか
別々のname指定してどの値がセットされてるかで確認したりとかかな
>>593 emptyは内容があるか調べるもの
strlenは文字列の長さを調べるもの
用途は全然違う
>>593 ついでに、issetと if($data)・・・ についても教えてください
602 :
nobodyさん :2008/03/20(木) 15:30:03 ID:c6Zuq6MM
商品一覧、価格表が掲載されているページを CSVアップロードで更新できるようなフリーの phpやCGIはないでしょうか? ご紹介頂きたいのです。お願い致します。
それくらい自分で作れないの?
604 :
nobodyさん :2008/03/20(木) 15:42:11 ID:c6Zuq6MM
>>603 面目ないです。
超初心者用スレでしか聞けないので書いたのです。
面白くないです。 に見えた
>>602 作れなかったり改造できなかったりする場合はASPサービス使えば?
Eコマース系のサービスいっぱいあるし
607 :
nobodyさん :2008/03/20(木) 23:38:33 ID:WvTnOLdh
phpの勉強をしていて、以下のように書きました。 formで送った名前を表示するようにしたいですが、うまくいきません。 グローバル変数が間違ってるのでしょうか? 詳しい方、お願いします send.html↓ <html> <head><title>send</title></head> <body> <form action="receivename.php" method="post">名前<input type="text" name="namae"><br> <input type="submit" value="送信"><br> </form> </body> </html> receivename.php↓ <html> <body> <?php print ($_post['namae']) ; ?> さん。どうも<br> </body> </html>
>>607 print ($_POST['namae']) ;
PHPのheader('HTTP/1.0 404 Not Found')ではヘッダのみをブラウザに返しますが、 JSPのresponse.sendError(response.SC_NOT_FOUND)のように、 Webサーバが標準で持っているエラーページを返すようにはできますか? 環境はApache 2.2 + PHP 4.4です。
>>612 レスありがとうございます。
探す気になりました。
HTTPヘッダがすでに送信済みであるかどうかを調べる方法はありますか?
616 :
615 :2008/03/22(土) 01:52:38 ID:???
すみません、解決しました。
URIセーフなbase64かな?
その程度ならライブラリなど探さずとも、PGのアイデア次第でどうにでもなるだろ つか自作のレベルの話だ
>>618 そんな感じなんですがbase64より圧縮率の高い方式です
>>619 汎用性あるが技術的難易度高いと思ってます。
勘違いです。まさに
>>618 さんの言うようなものです。
>>617-622 dCiuVMD3lqo
これって何を圧縮してるの?デコードしても意味不明なんだが。
圧縮というか固有のIDでしょ どういう風に出してるかはしらないけどハッシュ値には違いない
625 :
617 :2008/03/22(土) 20:13:30 ID:???
md5より今っぽい感じ
ふーん、そんな文字数(大文字小文字区別するけど)でユニークな値が出せるんだね
何通りあると思ってるんだよ。 頭大丈夫か?
md5 -> 128ビット = 3.4E38 通り youtubeのハッシュの仕様は知らんけど(26+26+10)^11 = 5.2E19通り 頭大丈夫か?
その62進数にするのに良い方法は?
とりあえず uniqid でも使っておけば?
PHPというか、WEBアプリの質問です。 ニコニコ動画なんですが、Cookieを削除して、PCを再起動してもログイン状態が保持されています。 ブラウザを閉じているからセッションでもないし、Cookieでもないとなると、 どういう方法でクライアントを識別しているのでしょうか?
>>632 クッキー削除しきれてないんじゃね?
ニコ動の事詳しく調べてないからあれだけど
ほかに方法といったら
たぶんやらないと思うが
IP,ブラウザの一致とかぐらいだろうし
634 :
632 :2008/03/26(水) 18:11:39 ID:???
>>633 やっぱり一般的な方法ではできないですよね。
ありがとうございました。
ニコ動はクッキー使ったごく一般的な方法だよ ログイン状態が残ったのはクッキーが削除できてなかっただけ
PHP Version 5.2.4 test.html から test.php にフォームからPOSTで値を渡して スーパーグローバル変数$_POST["xxx"]で値を受け取るという動作がなぜか出来ません・・・ エラーも吐かずに遷移したページが空白で開きます php.iniの設定にスーパーグローバル変数のオン、オフを切り替える設定があるのでしょうか? どこをいじれば良いのか詰まってしまいました
register_globals
こっちか variables_order
>>637 レスありがとうございます
何かの具合でphp.iniをいじらずに解決してしまいましたが
variables_orderについてちょっと勉強しようと思いますm(_ _)m
640 :
nobodyさん :2008/04/10(木) 13:40:02 ID:IwYW1Fis
お知恵を貸していただきたいのですが。 今日の日付を得て、日曜日(もしくは月曜日)始めで一週間とした場合の、 その週の頭の日付を得るという感じのことはできますか? 例えば今日だったら4月10日ですので、その週の頭の日曜日は4月6日で 「20080406」というように出力する感じです。 また今月の4月3日の場合は「20080330」で値を出力したいんですが。 よろしくお願いします。
641 :
640 :2008/04/10(木) 14:02:15 ID:???
週またぎ以外は <?php $week_head_date = date("Ymd") - date("w"); print $week_head_date; ?> でできました。
642 :
640 :2008/04/10(木) 14:54:01 ID:???
たびたびすいません。 641に書いた記述で月をまたぐ場合もOKなのでしょうか? 上記記述で640に書いた >4月3日の場合は「20080330」で値を出力したい が実現できるかどうか教えていただければ幸いです。
strtotime("last Sunday")
644 :
640 :2008/04/11(金) 09:19:52 ID:???
>>643 ありがとうございました。
そんな簡単でいいとは…。
645 :
nobodyさん :2008/04/12(土) 12:53:46 ID:4H+Fs9R3
iniファイルの内容を修正する関数ってありますか?
iniファイルは普通動的に書き換えるもんじゃないよ
>>646 さすがに無理でしたか。
じゃあ、自力で修正します
648 :
nobodyさん :2008/04/12(土) 15:01:22 ID:MYUBBi8A
素人ですが教えて下さい。 エスケープ処理とSQLインジェクション対策について良く理解できていないのですが、 現在php.iniのmagic_quotes_gpcがonになっていてエスケープ処理が行われます。 これによりフォーム入力されたデータに\が付いているのですが、そもそもこのエスケープ処理 は、DBに\が付いたまま書き込ませるためにあるのでしょうか? stripcslashes関数などで\を除去してから書き込んだら意味がないのでしょうか?? よろしくお願いします。
offにして自分でエスケープしましょう。というかプレースホルダ使いましょう。
650 :
nobodyさん :2008/04/12(土) 18:39:37 ID:4d6dvCtN
ある処理をしたらメールを送るようにしたいのですが、うまくいきません apache2.2.4 PHP 5.2.3 ArGOsoft OS windows xp という環境です。 IMAPを使ってメールを送るというのは分かってきましたがモジュールの追加が出来ないようです php.iniよりextention=php_IMAP.dllの「;」も外し、apacheも再起動しましたが get_extension_funcs("imap");で使えるか調べるとダメみたいです なにが足りないのでしょうか?
windows版PHPなんて触る気ないのでよく知らないが、普通にmail / mb_send_mailで送信できないん?
652 :
名無しさん@アイコンいっぱい。 :2008/04/12(土) 19:25:23 ID:QH24pWr1
653 :
650 :2008/04/12(土) 19:47:17 ID:???
>>651 やってみましたがmb_send_mailの前に
mb_language("Japanese");を入れているのですが、mb_languageですでにコケてます・・・
mbstringが入ってないってこと? それならmailで、日本語は自分でエンコードする。
655 :
nobodyさん :2008/04/14(月) 18:50:19 ID:zmu1J1y2
画像掲示板スクリプトを改造していて、PHPマニュアル等を調べてもズバリな回答にたどり つけなかったため質問させてください (使っている PHPのバージョンは 5.2.5 です) 画像ファイルのデータサイズを取得、3桁区切りさせたくて以下のように書いて成功しました 掲示板PHPスクリプト内で ― (α) $sizeorg = filesize($img) $size = number_format($sizeorg) HTMLテンプレート側に {$size} ですが、(α)の書き方をもう少しスマートに、雰囲気的には $size = number_format(filesize($img)) のようにまとめたく、参考になりそうな情報を教えていただければありがたいのですが どうぞよろしくお願いいたします
$size = number_format(filesize($img)) でいいんじゃ?
テンプレートってSmarty? 俺の場合number_formatを修飾子にしちゃってる(結構常識?) $smarty->register_modifier("number_format","number_format"); で {$sizeorg|number_format} が俺的にはスマート 表示の問題をテンプレートで完結できるからね
修飾子にしなくても普通にPHP関数として呼び出せばいいんじゃ?
659 :
655 :2008/04/14(月) 22:17:10 ID:xlgR9yha
>>656 そのようにやってみたのですがエラーを吐いてしまいまして先の質問のように書いたのですが、
もう一度試しましたらエラーなく出力させることができました
# mistipo でもしていたのでしょうか…orz
>>657 自分の場合のテンプレートは画像掲示板のために用意されている HTML になります
何はともあれ、教えていただいた方法も面白そうですので勉強のため試してみたいと思います
>>658 の方も含めて早々にご回答いただきまして、みなさんありがとうございました!
660 :
655 :2008/04/14(月) 22:19:17 ID:???
あぁ… ×mistipo ってなんなんだ… ○typo : タイプミス 最後まで失礼しました…○...| ̄|_
pear が古いのでUPしようとしたが・・・
pear upgrade -f -o
http://pear.php.net/get/PEAR-1.3.6.tgz downloading PEAR-1.3.6.tgz ...
Starting to download PEAR-1.3.6.tgz (106,880 bytes)
.........done: 106,880 bytes
HTTP error, got response: HTTP/1.1 410 Gone
Didn't receive 200 OK from remote server. (HTTP/1.1 410 Gone)
なぜ??変なレスポンスヘッダかえってくる??
セッション変数ってクライアント側の環境やブラウザに依存するのでしょうか?
しませんよ
XSLを扱いたいのですが、 Fatal error: Class 'XSLTProcessor' not found in 場所 と出力されてしまいます。(クラスが見つからないということですよね。 これはどう足掻いてもXSLは使えないということなのでしょうか。 もし解決策があれば教えてください。 PHPのバージョンは5.2.3、phpinfo()のConfigure Commandの中で「xsl」を含むものは、 '--with-xslt-sablot'と'--enable-xslt'です。 それ以外にxslを含むところはありませんでした。 よろしくお願いします。
667 :
665 :2008/04/19(土) 20:22:57 ID:???
>>666 ありがとうございます、それについて詳しく調べていたら、
「configureに引数--with-xsl[=DIR] を追加すること」
は管理者でないとできないようなことが分かったので、メールしてみることにします。
ありがとうございました。
668 :
nobodyさん :2008/04/20(日) 00:58:45 ID:eoYRqpAs
http://pc11.2ch.net/test/read.cgi/hp/1205922529/198 より移動してきました(向こうでの質問は打ちきっています)。
[やりたいこと]
UTF-8のローマ数字「D」をeucJP-winに変換したい。
[やったこと]
mb_convert_encodingを使い、EUC-JPのエンコードにてHTMLタグと一緒にprintする、具体的には:
print "<td>".htmlspecialchars(mb_convert_encoding("D", "eucJP-win", "UTF-8") )."</td>";
を行う
[現状]
該当部分の出力が「場・/td>」となり、意図した表示になりません。
[その他]
http://pc11.2ch.net/test/read.cgi/hp/1205922529/197 によれば、
>EUCでのDは0xFCF5。
>が、
>mb_convert_encoding("D", "eucJP-win", "UTF-8");
>を通すと0xF3F7が返ってくる。
ということで、このままのやり方ではでは埓が開きそうもありません。
なにかいい方法はありますでしょうか。
やりたいことできてるやん! 一部だけ文字コードを変えるってことは変換したvは文字化けした状態で表示される。 文字化けした文字によっては次の文字の一部を一つの文字とみなされ、「場・/td>」みたいなことになる。 意図した表示って、どんな結果を求めているのかを具体的に書けって。
いとおかしい表示かな?
UTF-8 な 'D' を eucJP-win に mb_convert_encoding() して print "<td>\xFC\xF5</td>" と等価な状態にしたいんだけど そうならないのでどうしたもんですかね、という質問なんでしょう。 確かに 0xFCF5 にならんね。
>>671 いや、そんな質問じゃないでしょう。
そんな表示を期待してるとしたらちょっと頭おかしいんじゃないですか?
文字化けって言葉を聞いたことくらいあるでしょうし。
673 :
187 :2008/04/20(日) 11:41:36 ID:aetxNfgk
>669 「D」と表示したいのに「場・/td>」となる、ということです。 >671 そうなんです。あれから再びネットでも調べているんですが、 どうにもわかりません。 >672 すみませんが、お返事の内容がよく分かりません。
674 :
187 :2008/04/20(日) 12:01:37 ID:???
187です。 先ほど、こちらに移動する前のスレッドに、移動後に書き込まれていた方法を 試したところ、意図した結果で表示することができました。 (具体的には、PHP側でeucJP-winに変換せず、UTF-8のままレスポンスし、 デコードはブラウザーに任せる) なので、今回の質問は、これにて終了させていただきます。 お答えいただいた皆様、ありがとうございました。
675 :
nobodyさん :2008/04/20(日) 12:10:35 ID:nhn/o6zf
SQLite+PHPに関する質問です。 以下のようなスクリプトを作り、dbAccessでSQLiteと接続し、 dbCloseで切断するようにしたのですが、「sqlite_close() expects parameter 1 to be resource, n・・・」 というエラーがでてうまく切断できません。 どのような原因かわかりますでしょうか? dbAccess内にsqlite_close()を入れた場合はエラーは吐きませんでした。 function dbAccess() { $con = sqlite_open("DB/database"); } function dbClose() { global $con; sqlite_close($con); }
function dbAccess() { global $con; $con = sqlite_open("DB/database"); }
>>675 どのような原因って、エラーくらいちゃんと読もうな。
あと検索ってことも知ってるか?
そのエラー文をそのままググったらええのに。
>>677 検索はしましたがそれでも理解できなかったもので。すみません。
>>676 dbAccessとdbCloseの両方でglobal指定をしなければいけなかったのですね。
ありがとうございました。
680 :
nobodyさん :2008/04/20(日) 13:03:57 ID:sof1Taef
文章の中から正規表現を使って文字列を置換したいんですが、 あてはまるものすべてを置換するんじゃなく、一番初めにマッチしたものだけを置換したいんです。 どういう関数を使えばいいのでしょうか?
>>672 それぞれの文字コード中に存在しない文字に変換しようというなら妙な話だけど、
Dなどの小文字のローマ数字は、EUC(JIS X 0213)でも存在している。
nkfやブラウザでは問題無く相互変換出来るしね。
それらを前提として、phpでは変換出来ないの?というのが質問の主旨だろ。
回答としては、現状はmbstringでは未対応のようなので、
手動でやるかnkfなどを使って変換。
文字化け=当然発生するものだから仕方無いと思考停止するのは良くないね。
>>683 文字化けについてよくわかってないのも良くないね
685 :
671 :2008/04/20(日) 17:12:35 ID:???
質問者さんの悩み事は「変換しない」で解決したようですが。 <?php // ソースは UTF-8 で記述 header('Content-Type: text/plain; charset=EUC-JP'); echo "<td>\xFC\xF5</td>\n"; echo '<td>' . mb_convert_encoding('D', 'eucJP-win', 'UTF-8') . "</td>\n"; ?> 同じ表示が2行続くことを期待するのは別におかしくないと思いますよ。
686 :
nobodyさん :2008/04/20(日) 19:45:50 ID:QNOTdt2p
age
687 :
663 :2008/04/21(月) 10:29:11 ID:???
>>664 ありがとうございます。
最近、PHPを学習して会社のサイトをPHP化しているのですが、気が付くと
セッション変数に頼りすぎてて心配になってました。
688 :
nobodyさん :2008/04/21(月) 23:07:39 ID:e+YqWj3Y
win9x、php5、apache2です。 phpに、Cの同じファイルからしか呼び出せなくなる static関数の機能はあるでしょうか。 あるなら、どのように記述したらいいのでしょうか。
ないよ。 クラスのメソッドってことならあるけど、関数はグローバルになってしまう。 関数内で制御したらそれっぽくできなくもない。
690 :
nobodyさん :2008/04/22(火) 00:15:18 ID:1qEh3co+
セッションをGETじゃなくて、POSTできます? クッキーなしで、アドレス部分に表示もしないで セッション回したいのです。
GETと同じようにやれば可
692 :
688 :2008/04/22(火) 10:12:20 ID:???
>>689 わかりました。ありがとうございました。
こちらで質問していいのかどうかわかりませんが、PHPのオープンソースで管理画面が携帯対応のblogってありますか?
auto_link関数なんて知らん
$proto = ereg_replace("(https?|ftp|news)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)","<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>",$proto); すいません、その定義関数の中身はこちらです。
https? ↓ h?ttps?
厚かましいお願いなのですがその意味を教えていただけないでしょうか? 検索してもいまいち核心がでてこないといいますか・・・・・・・ これphpのコマンドですよね?
$proto = ereg_replace("(h?ttps?|ftp|news)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)","<a href=\"h\\1\\2\" target=\"_blank\">h\\1\\2</a>",$proto); 教えていただいたやり方とh付け足す方法でやりたい事は出来ております。
php特有じゃない 「正規表現」で調べてみ
ttp → http になって喜ぶのはいいけど http → hhttp ftp → hftp news → 略 これが「やりたい事」なのか冷静に考えてみよう。
>>700 ありがとうございます、調べてみます。
>>701 そうだった・・・・全種類にh付くんですよねこのままじゃ。
この形式による動作の分類は正規表現を学べは問題なくできることなんでしょうか?
(h?ttps?|ftp|news)→(h?ttps?|) もしかしてこれでおけでしょうか? 他のリンクをしないとすると。
ftp も news も gopher も archie もリンクなしでよければ (h?ttps?|ftp|news) → h?(ttps?) // h? をカッコから出す にすればいいと思うよ。 PHP や正規表現と無関係な話になるけど、ttp でアドレスを貼った人は 勝手に http で貼ったのと同じ結果に書き換えられたらどう思うんだろうね。
h1文字をつけるケースは1通りなんだから、
URLとして有効だったらあとは
ttp:// だけで直接比較すればいいだろう
>>704 >>705 やはりそうでしたか、本当に助かりました。
うちの掲示板は広告に対する禁止ワードの効果がほとんどなかったので
httpを禁止ワードにしてリンクはttpで書き込んでもらうようにしたら1件も広告つかなくなりました。
なので今まで基本コピペで飛んで貰うような状況だったのですが
今回自動リンク出来たら訪問者も楽だろうと言う事で質問してみました。
訪問者がリンク張りたくないものに関してはまた規約に赤で方法を明記したいと思います。
正規表現で折り畳むのと、ベタで(http|https|ttp|ftp|news) と並べるのとどっちがいいんだろ。
|で並べる時点で正規表現じゃないかと・・・ ベタというならswitch($var) case 'http':とか。
<a href=
http://<? $ip=gethostbynamel("google.com"); print_r($ip); ?>><? $ip=gethostbynamel("google.com"); print_r($ip); ?></a>
これをforeeachにするにはどうすればいいんでしょうか。。。
は?何言ってんだお前
こういうことか?
$array_address=(
'google.com',
'yahoo.com'
);
foreach($array_address as $address){
$ip=gethostbynamel($address);
echo "<a href=
http://{$ip} >{$ip}</a>";
}
配列使わずforeeeeeachとはこれいかに
>>711 こういうことじゃね?
$ip = gethostbynamel($address);
$string = '<a href="
http:// '. $ip .'">'. $ip .'</a>';
$chars = preg_split('//', $string, -1, PREG_SPLIT_NO_EMPTY);
foreach($chars as $char) {
$result[] = $char;
}
echo implode('', $result);
switch文内にif条件式を入れられるでしょうか?
可能だよ
質問です $time=10:00; この$timeを午前か午後か(am,pm)判別する関数はありますでしょうか?
>>718 その$timeは午後になると、$time=22:00;となるのかい?
そうです
>>718 <?php
$time = '10:00';
echo ampm($time);
function ampm($ntime){
if($ntime >= '12:00'){
return 'PM';
}else{
return 'AM';
}
}
?>
>>721 ありがとうございます!
この$ntimeは文字列でしょうか?整数でしょうか?
>>722 '12:00'とコロンが含まれている時点で、整数ではありえないよね。
自作関数なしなら echo date('A', strtotime('10:00'));
警告、エラー表示レベルを上げる方法はないでしょうか。 defineしていない定数が使われた場合、 配列の値が入っていないインデックスを参照した場合に、 教えてくれるようにしたいです。 ググってerror_reportingはE_ALLのみにしたんですが、 それではダメでした。
E_ALL | E_STRICT
l(ist)って何だよ(list)すらねーよボケ ここは質問スレだが分からないことを開き直る勘違い野郎ならお断りだ。
>>727 > string gethostbyname ( string hostname )
> array gethostbynamel ( string hostname )
関数名の l は list の略だから戻ってくるのは配列っすよね、じゃなくて
array (または FALSE) を返しますよと書かれてるから、戻り値が配列。
こんな感じにしたいのかな。
<?php
$hosts = array('yahoo.com', 'google.com', 'example.com');
echo "<dl>\n";
foreach ($hosts as $host) {
$ip_list = gethostbynamel($host);
echo "<dt>$host</dt>\n";
if ($ip_list) {
foreach ($ip_list as $ip) {
echo "<dd><a href=\"
http://$ip/\ ">$ip</a></dd>\n";
}
} else {
echo "<dd>unresolved.</dd>\n";
}
}
echo "</dl>\n";
?>
>>728 すみません><
>>730 ああようやく理解することができました><
どうもありがとうございます。
foreachで配列の中身をすべてぶちまける
ということがやりたかったんです。
$ip0 = $ip_list[0];
$ip1 = $ip_list[1];
みたいなことなんですね、asって。
お世話になりました><
>>731 純粋な質問なんだが,マニュアルのforeachのページ見ないのは何故だったの?存在しらなかった?難しくて理解できなかった?
返ってきた中身を知りたいだけなら、print_rとかvar_dumpとか
>>721 これで大小判定できるんだな
PHPスゴス
と思ったら:以下が切り捨てられてるだけか
PHPコワス
そんくらい時と場合によって使い分けろ
>>734 $time = '9:00';
とかで試せばわかると思うけど何も切り捨てられてないよ。
というか、文字列。
カウンタで質問なのですが
http://loglog.jp/~php/tt/tt4.php のサイトに書かれている
>次に書き込むのですが、fgetsで読み込んだ時にポインタが動いてファイルの最後に行っているので、ポインタを先頭に引き戻してから、書き込みます。
>ポインタを戻すのはfseek() 書き込みはfputs()です。追記:rewind($fp)の方がいいかも...
>
>fseek($fp, 0);
>fputs($fp, $count);
のポインタを先頭に戻すという意味がわかりません。
ためしに削ってみると、カウンターが凄い勢いで増えていくので重要な機能なのは分かるのですが・・・
テキストエディタで言うと、キャレットをファイルの先頭に
開いたファイルからデータを操作するポイントのこと。 レコードの針とかCDの走査点みたいのを想像すればいい。 凄い勢いで増えていくってのは、1→12→123→1234みたいな感じ?カオスだなw
ファイルまるごと読み込んで、足して上書きして、終わりって訳ではないんですね
ポインタですか
勉強になりました。ありがとうございました
>>739 そうなんです。
カオスです
1→12→1213→12131214→....だぜきっと 増え方見てりゃなんとなく分かりそうなもんだけどな
>>725 配列の値が入っていないインデクスを参照するのって違反なんですか?
そうなんですか。 「ID、値段」の並んだデータファイルから $ar[$id] = $price; でどんどん取り込んでいって、 if ($ar[$data] == "") { echo "$dataは存在しません。\n"; どうのこうの } って常用してる…
質問です。 csvファイルの5行目から20行目までを取得するにはどうすればよいのでしょうか? $test = fopen("hoge.csv","r"); for($i=5;$i<20;$i++){ $row = $test[$i]; } この方法ではうまくいかないです・・・
たとえファイルハンドルが配列として扱えるとしても、それでは最終行しか 残らないのでは?
>>746-747 ご返答ありがとうございます
$test = file("hoge.csv");
for($i=5;$i<20;$i++){
$row = $test[$i];
}
これではうまく行きませんでした
for文で行数を指定するやり方は間違っているのでしょうか?
>>748 >>746 の意味をよく考えて、せめて
$row .= $test[$i];
にしてみるとか、もう少し考えてもいいと思うんですよ。
$row を各行=要素な配列として扱いたいのならまた別になるけど。
CSVファイルを更新しようとしてます。 フォームから入力された月が一致するものを"可能"から"予約済み"に 上書きするスクリプトです。 $file = fopen("test.csv","r"); $file_bak = fopen("test.csv","w"); while ($data = fgetcsv($file,1024,",")) { if($data[0]==$mon){ $data[1]="予約済み"; $rowc = implode(",", $data); fputs ($file_bak, $rowc . "\n"); } } fclose($file_bak); fclose($file); フォームから入力するとデータがまっさら(0バイト)になってしまいます。
そのコードのどこに、フォームから入力したという部分が入ってるの?
すみません、 $mon=$_POST['mon']; を、書き忘れてました。 データが書き込まれる(fputsが動いてる)ということはif文は正常に動作してると思います。
マニュアルでfopen(..., "w");の動作を確かめよう
>>753 ご返答ありがとうございます。
fopenをfopen("test.csv","r+");という形で一つにしたらうまく行きました。
$file = fopen("test.csv","r+");
while ($data = fgetcsv($file,1024,",")) {
if($data[0]==$mon){
$data[1]="予約済み";
$rowc = implode(",", $data);
flock($file, LOCK_EX);
fputs ($file, $rowc);
}
}
fclose($file);
動作確認したところ、目的の行の、次の行が更新されてました・・・。
ファイルポインタを1行、後ろに戻すと考えていますが、考え方としては正しいのでしょうか?
ファイルポインタを行単位で移動させるのは面倒だから、 シンプルにしたほうがいいんじゃないの? 一気にぜんぶ読み込んで、条件が合ったら変更。 最後に、変更が有ったなら書き出し。 あるいは、1行読んで、条件が合ったら変更。 その行を別ファイルに書き込んでいって、 最後に、変更が有ったなら旧ファイルを消して別ファイルを旧ファイルに リネーム。
>>744 foreach($ar as $hoge)で取り込んだら楽かと
757 :
nobodyさん :2008/05/02(金) 14:05:14 ID:G+oxjRCp
AサーバでBサーバのPHPファイルをincludeした場合、 Bサーバで実行後に結果が返ってくるんでしょうか? それともソースを展開するだけで実行するのはAサーバになるんでしょうか? よろしくお願いします。
758 :
nobodyさん :2008/05/02(金) 14:24:41 ID:IeUeB81G
>>757 http://www.php.net/manual/ja/function.include.php "URL fopenラッパー"が 有効になっている場合(デフォルト設定では有効です)、
ローカルなパス名 の代わりにURL(HTTP経由)を用いて読み込むファイルを指定することが可能です。
URLで指定されたサーバがファイルをPHPコードとして解釈することが 出来る場合には、
HTTP GETを使用してURLリクエストに引数を指定することが 出来ます。
これはファイルの読み込み云々やスコープの継承とは関係なく、
ただ単純にスクリプトがリモートのサーバで実行されて結果がローカルの スクリプトに読み込まれる、というだけのことです。
それは・・・ちょっと考えたら分かるだろう
>スクリプトがリモートのサーバで実行されて結果がローカルの スクリプトに読み込まれる 書いてありましたねorz 申し訳ないです。 無性に気になってしまった…。
php+mysqlでタグを手動で入力するタグクラウドのようなものを作りたいのですが 各種タグの数はどうやって数えたら良いのでしょうか?
さっぱり分かりません スペース区切りで入力されたキーワードの数を数える方法が分からないということ?
エスパーか762の母親じゃなければわからんだろjk
page_id| tag1| tag2| tag3| ------+-----+-----+-----+ 1| 果物| 豚肉| | 2| 牛肉| 野菜| 果物| 3| 果物| 豚肉| | 4| 鶏肉| 果物| 野菜| 5| 野菜| | | ------+-----+-----+-----+ こういうテーブルから 果物(4),野菜(3),豚肉(2),牛肉(1),鶏肉(1) とか出力したいの・・・か?
>>362 テーブルに全部のキーワードをぶっこんで
あとはgroup byとcountで。
とりあえずママに絵の描き方を教えてもらいなさい
768 :
nobodyさん :2008/05/04(日) 22:00:27 ID:kQgheGJF
教えてください。 xamppでpear_infoをインストール後、 <?php require_once('PEAR\Info.php'); $pearinfo = new PEAR_Info('c:\xampp\php'); $pearinfo->show(); ?> を実行すると以下のエラーが出てしまいます。 Fatal error: Call to undefined method PEAR_Error::getRegistry() in C:\xampp\php\PEAR\PEAR\Info.php on line 277 ちなみに277行目は $this->reg = &$this->config->getRegistry();です。 ググっても前例が見当たりませんでした。
バージョンが古いか正しくインストールされてないんじゃないの
770 :
nobodyさん :2008/05/04(日) 22:30:26 ID:kQgheGJF
>>769 pear_infoは最新の1.8.0(stable)でpear listでも正しく表示されています。
じゃxamppなんてやめて普通にやる
質問させて下さい。グーグルでは上手く探せませんでした。 cent os 5 php 5.2.4 1,なんとか,かんとか,ぬんとか 2,なんとか2,かんとか2,ぬんとか2 のようなcsv的な形式のファイルの編集をHTMLのフォーム上から実現するにはどのような考え方でやればいいのでしょうか? fgetsで指定行を読み込んで目的のカラムを編集することはできるけど,元のデータの消し方が見つかりません。 知ってる方,よろしくお願いします。
ファイル全体を書き直し
ありがとうございます(^^
common lispとphp の混合ってできないの?
すいません。セッション変数の使い方について教えてください。 ページ1で session_start(); $_SESSION['a']="test"; と入れ、 FORM ACTION先のページ2で echo $_SESSION['a']; と書いてみたのですが空になっています。 書き方がまずいのでしょうか。 それとも何か特別な設定をしなければいけないのでしょうか。 PHPのバージョンは5.1.6で、 session.use_cookiesはon session.use_trans_sidは1にしています。
>>776 ページ2でもsession_start(); してる?
>>777 やってませんでした。
おお!出来ました!
ありがとうございます!
779 :
nobodyさん :2008/05/14(水) 19:11:39 ID:Uo6TtfOs
getimagesizeを使って以下のように画像の横と縦のサイズを取得して HTMLテンプレートを使って出力させているのですが、 *.html {$imgsize[0]}x{$imgsize[1]} のように書くと何も出力されないため、下のように書いて出力しています *.php: $imgsize = getimagesize($img); $wsize = $imgsize[0]; $hsize = $imgsize[1]; *.html 画像サイズ: {$wsize} × {$hsize} ※実際の書式はもう少し長いですがこんな感じです もう少し変数や出力をまとめられそうorスマートに出来そうでしょうか?
list($wsize, $hsize) = getimagesize($img);
よくSNSで人のページに飛ぶとき -------------------- ○○さんのマイページ←リンク -------------------- のようにリンクタグでフォームタグのように値を持てるようにしているものがありますが、 どういう風にしているのでしょうか。 フォームを使うと -------------------- <input type="radio" name="choice" value="A">A <input type="radio" name="choice" value="B">B <input type="radio" name="choice" value="C">C -------------------- のようになるんですが、 これをハイパーリンクを使い -------------------- A←リンク(押すと変数にAと入る) B←リンク C←リンク -------------------- の形にしたいと考えています。
781です。 すいません、getを使ってみます!
javascript併用でsubmitするやつもあるけどな。
784 :
779 :2008/05/15(木) 18:33:37 ID:19IoKDUw
>>780 listの使いどころを実体験できて勉強になりました
お礼が遅くなってしまいましたが、教えていただきましてありがとうございました
プログラミング全くど素人です。 PC画面内のボタンが定期的(2時間おき)に赤く光り(音付き)、それが10分以内にクリックされなければ指定したアドレスにメールで連絡がいくアプリを作成したいんですがPHPでつくれますか? 他に付けたい機能はPHPでできそうなのでできればPHPで一緒にしたいのですが
ブラウザが閉じられると止まってもいいなら
787 :
nobodyさん :2008/05/16(金) 12:01:11 ID:tHyaUJSJ
>>785 まずは、2byte codeの文中の括弧は2byte codeで揃えてくれんか?
話はそれからだ
>プログラミング全くど素人です。 こういう書き方は嫌われるからやめるべきだ
789 :
785 :2008/05/16(金) 12:14:05 ID:???
色々とお騒がせしてすみませんでした 他所で質問して分かったからもういいですw
790 :
785 :2008/05/16(金) 12:16:27 ID:pBMB8YRN
つられんなよお前らw
>>785 おもしろいね、それ。
しょっちゅうサボりにいくバイトの管理用に作ってみよっと。
ありがとう。
785です 作ったらそのスクリプト参考にさせてください
793 :
791 :2008/05/16(金) 14:14:40 ID:???
794 :
nobodyさん :2008/05/16(金) 15:07:02 ID:9KFEZNBm
795 :
nobodyさん :2008/05/16(金) 15:36:43 ID:OAE01NnQ
ちょっと困っています。 str_replaceで文字の置き換えをしたいのです。 置き換える要素にはそれぞれ配列を使います。 その配列の中身はMySQLから値を格納しています。 しかしまったく置き換えしてくれません。 配列を $arr = array('要素1','要素2','要素3'); として作成すればちゃんと置き換えしてくれます。 MySQLから配列への値の格納はちゃんと出来ています。 置き換え用の文字は沢山あるので出来ればMySQLからデータを取得したいです。
配列の配列という落ち?
2次元になってる、ってことでしょうか?
実行中に中身表示させてみてたしかめる
799 :
795 :2008/05/16(金) 16:37:58 ID:???
できました。 配列にデータを格納したあとで、function内で置き換え作業をしていたのですが、 せっかく作った配列を渡していなかったのでできなかっただけでした。 お騒がせしましたorz
ヽ(・ω・)/ ズコー \(.\ ノ
たまにソースに書いてある識別子? @ ↑これってなんですか。
>>802 アザース
そういえばそんなもんがあったきがする
質問です。 ifの条件文の中にforやwhileを入れられますか? ifの条件文が多くて繰り返し処理にしたいのですが このように書いてもエラーになります。 if( for($i = 0; $i < 101; $i++){ if($i !==100){ ($form[$i]!=="")or } else{ ($form[$i]!=="")} } ) { 実行したい文 }
そのコード読んでも意図がわからん・・・ したいことを日本語で書いてくれ
やりたそうなこと: forループで「条件」を変化させる しかし、ifが判定を行なう前にforループが完了してしまうので意味なし エラーは、例の中の or の後が空だから出るんでないの?
>>804 forの中でifで「実行したい文」を実行すればいいと思うのだが?
>>805 すいません。
$form[0]から$form[100]のどれかに何かしらの値が入っていれば実行させたいのです。
現状はこんな感じです。
if(($form[0]="")or($form[1]="")or($form[2]="")or...........($form[100]=""))
{
実行文
}
>806
ご回答ありがとうございます。
やりたいことはその通りです。
>807
ありがとうございます。
その方法でやってみます。
なるほど、804はコードとプリプロセスを混同していたわけね if文の前にループで処理しとけばいいんじゃないの? $temp = ""; for(略) $temp .= $form[$i]; if ($temp != "") jikko();
for($i = 0; $i <= 100; $i++){ if($form[i] !=""){ 実行文 break; } }
406です。 forの中にifで期待通り実行されました。 本当にどうもありがとうございます。
812 :
nobodyさん :2008/05/17(土) 16:01:13 ID:IP8xZiGo
813 :
nobodyさん :2008/05/17(土) 17:07:17 ID:pIXJPsBG
他のサイトのphpのソースを見たいんですがどうやったらできますか?
管理者さんにメールする
815 :
nobodyさん :2008/05/17(土) 17:16:53 ID:pIXJPsBG
まじですか じゃあhtmlとかcssみたいにこっそりのぞいて勉強できないですね
堂々と勉強すれ
817 :
nobodyさん :2008/05/17(土) 17:20:20 ID:JWWL4JKm
>>813 基本的に見れません。ソースを公開しているところで見るくらいですか。
またはエラーコード丸出しのサイトで想像するくらいですかねぇ。
何気に質問です。
【環境】
php 5.16
mysql 5.027
確かmysqlに、selectなり、insertした時に、エラーが発生した場合の、
mysqlからの戻り値を吟味、評価する何かがあった気がするんですが、すっかり忘れました;;
php側でエラーを取得したいんですが…
現状try catch文で、代用してますが、
昔違う方法で、同僚がやってたのをふと思い出しまして…「ぁぁ、戻り値をこうすると、エラーかどうか分かるんだよ?」と言われた記憶が…
お助けを;;
mysql_error
819 :
nobodyさん :2008/05/17(土) 20:42:28 ID:4CSzjJPz
ローカルでは稼動したソースを、借りていたサーバにアップしたら Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in というエラーが出たのですが、 これはどのようなエラーなのでしょうか?
>>818 うお、超ありがと〜
エラーナンバーとかも拾うやつあるのか〜
非常に感謝〜
823 :
819 :2008/05/17(土) 21:48:15 ID:4CSzjJPz
>>820 ,821
なるほど、
私のエラーはクラスの構文が違ってたことが原因だったようです。
ありがとうございました
超初心者なんですが… PEAR::AUTHを使ってみたいのですが、 パスワード暗号化の時saltを付け加える事ってできますか? 暗号化方法の選択でSMD5等が無いようなので…
828 :
nobodyさん :2008/05/19(月) 00:47:29 ID:L88nqu8x
はてブのXMLをPHPのsimpleXMLでパースしているのですが、
<entry>
<title>タイトル</title>
<link rel="related" type="text/html" href="
http:// " />
<link rel="alternate" type="text/html" href="はてブリンク" />
<issued>2008-05-17T15:59:02+09:00</issued>
<id>ID</id>
<summary type="text/plain">コメント</summary>
<dc:subject>タグ1</dc:subject>
<dc:subject>タグ2</dc:subject>
</entry>
上記の<dc:subject>の部分どうやっても取得できません。
プログラムとしてはこんな感じです。
$xml = simplexml_load_file('dump.xml');
echo $xml->title."<br>\n";
echo "<dl>";
foreach($xml->entry as $entry){
echo "<dt>".$entry->title."\n";//タイトル取得
echo "<dd>".$entry->link['href']."\n";
echo "<dd>".$entry->dc:subject."\n";
}
echo "</dl>";
dc:subjectは複数取得する必要があるのですが1つでもいいので取得できる方法が知りたいです。
教えてください。よろしくお願いします。
829 :
nobodyさん :2008/05/19(月) 03:33:11 ID:J1ghAnPW
>>828 そもそもそれパースできてる?名前空間URI指定しないとwarningが出てくると思うけど。
>>829 ファイルを開いて文字列をとして読み込む処理
文字列から特定の部位を取り出す処理
ファイルに出力して処理
などに問題を切り分けて考えると吉
832 :
nobodyさん :2008/05/19(月) 09:12:59 ID:N7CUDUPC
1・配列から文字列をサーチ 2・一致した場合、その文字列を配列から削除しTRUEを返す これ一度にできる関数ないですか? 探したけどなぜか見つからない・・・。
普通は置換したら置換後の文字列が返ること期待するからな trueを返すなんて自分仕様なら自作しよう
複数置換で個数が返るとかね
一度にできることに何の意味があるのか
836 :
831 :2008/05/19(月) 14:33:02 ID:N7CUDUPC
TURE返しても仕方ないですね。申し訳ない。 少し改変します。 1・配列から文字列をサーチ 2・完全に一致した場合、その要素(エントリー?)を配列から削除 です。
1.array_search 2.unset
>>826-827 ありがとうございます
まったく同じ質問内容のものがあったので参考にさせていただきました。
正規表現について勉強してみようと思います。
includeに絶対パスを指定すると失敗してしまうのですが、なにか絶対パスで外部のファイルを読み込む方法はありますか? requireとreadfileも試しましたが駄目でした。 phpinfoでドキュメントルートが正しいことは確認したのですが。
書き方が悪い
>>839 絶対パスなら、ドキュメントルート関係ない気がするんだが
ドキュメントルートじゃなくてルートから書く
ああ、すいません、そう言われてようやくわかりました。 SSIのinclude virtualだとドキュメントルートからなので、絶対パスの勘違いしてましたorz どうもありがとうございます。
PHPのプログラムなのですが、 IEでは正常に全角文字が表示されるのに、 FireFoxや、ケータイでは見れません。 どういうことが考えられますか?
文字コード 実際の文字コードとHTTP/HTMLヘッダーでの指定が違うとか
クラスの引数に変数を指定したい時って、 何か特別な書き方とかありますでしょうか。 class_function(a);と入れるとうまく結果が返るのですが、 引数に変数を入れると結果が返ってきません。 $class_handling = new CLASS(); $class_handling->class_function($var); と書いてます。 class_function('$var')とか class_function("$var");とか class_function(var);など、 何か書き方があるのでしょうか。上記では全てだめでした。
そもそも、「結果が返ってこない」というのはどういう状態なの?
クラスの中にreturnがあるので class_function(a)と書くと 関数の中でaと紐付けられたbが画面に出力されるのですが、 変数(変数の中身はa)を入れると何も出力されないという状態です。
うまくいったほうをコピペして変数名だけ変えたらなぜかうまくいきました。 どこかの文法が間違ってただけみたいです。すみません。
(゚д゚)
(゚д ) ゚\(^o^)/ビータマヒロタ
∧__∧ (`・ω・´) I.ノ^ yヽ、 ヽ,,ノ==l ノ[1000] / l | """~""""""~"""~"" 1010円と交換してくれ!! 早くしないと嫁に怒られる!!
II\(^o )/[2000]
2000円札なんて、ローソンのATMでおろさないと
855 :
nobodyさん :2008/05/22(木) 18:11:25 ID:Sb8MEaO1
これはどうゆう意味ですか? Warning: require_once(Smarty.class.php) [function.require-once]: failed to open stream: No such file or directory in C:\**\**\**\**.php on line 3 Fatal error: require_once() [function.require]: Failed opening required 'Smarty.class.php' (include_path='.;C:\xampp\php\pear\') in C:\**\**\**\**.php on line 3 本を見ながらphpを勉強中ですが、smartyを使うところでできなくてわからなく なりました。
Smarty.class.php が無いって言ってるべ。 include_pathにコピーしたか?
xampp(笑)
858 :
nobodyさん :2008/05/22(木) 19:40:41 ID:CUpU+Uny
>>856 してないです。
どこですればいいんですか?
>>857 本のまんまやったんですけどxampp使うのはしょぼいんですか...?
include_pathの設定も知らない初心者が使うものではないよ。
>>858 初心者だからこそxampp使うがよろし
低脳乙
xamppがどんなものかも解らない様な初心者は xamppの方が良いと思うんだが 本来の目的はphpを学ぶ事にあるんだし サーバー設定云々は後でも良い
>xamppがどんなものかも解らない様な初心者は >xamppの方が良いと思うんだが 訳がわからん。分かってから使えよ。 >本来の目的はphpを学ぶ事にあるんだし >サーバー設定云々は後でも良い いやサーバ設定学んでからPHP学べよ。 両者は切っても切り離せない関係なんだから。 結局分からなくて困って人の世話になるんだろうが。 順序が正反対すぎ。楽しようとしすぎ。どんだけゆとりだよ。
たとえば山田さんの好きなものがりんご、みかんとあるとして、 profileテーブルのfavalitカラムにりんご、別のfavalitカラムにみかんが入ってるとして、 $result = mysql_query("select favalit from `plofile` where name =山田"); $raw = mysql_fetch_array($result, MYSQL_NUM); var_dump($raw); これではりんごしか出てきてくれないんですが、 nameが山田になってるfavalitカラムの中身全部出したいときはどうすればいいのでしょう?
揚げ足取りのようで、そこが問題かも知れんのであえて聞くが・・・ > 別のfavalitカラムにみかん 別の行ではなく、別のカラム? 同じ行に二つのfavalit?
すいません、 別の行に入っているものです。
テーブルはこんなです name favalit 山田 りんご 林 キウイ 山田 みかん 林 いちご 山田 車
あーーー 気持ち悪い!!!! profile! favorite!
すいません
whileやforで出力できることはわかりました。 もう少し色々調べてみます。
>>863 xampとかは
初心者向けの本とかで良く使われてるんだから
どういったものか解らずに使うやつは居る
そしてサーバとPHPは完全に切り離す事はできなくても
ある程度切り離して考えられるだろ
何でもかんでもまとめてやろうとすると
どれも中途半端に終る事が多いんだから
必要があれば勉強すれば良いんだよ
xampp使ったほうが中途半端に終わるだろ。ここの質問者を見てもそんなこと言えるのか。
知ったこっちゃ無い。 無設定のものを設定するよりも、 設定されているものをいじるほうが手っ取り早い。 サンプルにもなっているのだから理解も早い。
手っ取り早いからだめなんだろw
本来の目的を考えろよ
はじめはxamppでいいんだろ 初めてプログラミングする奴は、はやっく自分でコード書いて動かしてみたいってのが殆んどじゃないかな 環境つくるので挫折するやつって多いしな
初め xampp → (1)そのまんま環境構築できず時が経つ ↓ (2)ある程度 PHP に慣れた頃に環境構築できるようになる ぶっちゃけ、(1)になってしまう人多いよねw
>>878 私もそれだw
慣れるまではphp使えるレンサバお借りしたよ
結論:xampp使うなら全て自己責任で。
っていうかさ。xampp 使わなくても、 httpd.confやphp.iniを一から書くわけじゃないだろ。 ある程度書かれてあるものを読んで必要なところを 変えていきながら慣れていくのが、 勉強するのには効率いいよ。
でもエラーメッセージの意味がわかる、もしくは自分で調べられるようにならんと。 質問して返事を待つばかりじゃ一向に進まない。
http://wwwwwwww.ws/ ココみたいなRSSアンテナのサイトを作りたいのですが
どういう所を勉強すればいいですか
ほかにも
・取得した記事の記事内や記事タイトル、カテゴリで振り分けをしたり
・記事内に画像リンクがあったらそれを小さくして自動で表示する
ようにしたいのですが
痔鯖たてたり、専鯖借りたりする以外はxamppで充分 どうせレン鯖借りるんだろーし・・・ 俺はphp4はアパチphp5はxamppでローカル環境作ってる ↑結論はこれが1番じゃね?w
↑現在の収入が満足いくものなら、 それがあなたにとっての結論なのかもしれませんな
なんでphp5だと自分でwebサーバの構築もできないんだよ・・・ 訳分からない俺俺スタンダードを結論にしてんじゃねーよ。なんつー自己中だ。
バイト君はxamppで教える。 php.iniとhttpd.confはコメント和訳版と差し替え。 正社員はLinuxインストールから教える。 英語資料の使い方も教える。 必要な知識を必要なレベルで覚えればそれでいい。 趣味でやる人はxamppでも十分。 職業でやる人はxamppでは不足。
スレの趣旨からして、xamppを批判するならその理由まで書かないと 無意味。
>>886 おまえ、ちゃんと文章理解したほうが・・・w
WEBサーバー構築できないんじゃなくて、
簡単に4と5を切り替えれる環境のWEBサーバー
を構築してるのでは?
文章の理解というよりも、自分の知識の範囲内でしか物事を理解できないんだからしょうがないよ。
>>889 4と5の切り替えなんてxamppなんて使わなくてもできる。
というか何故Webサーバを二重に建てる必要がある?理解に苦しむ。
分かってないのはお前のほうじゃないか。
あー言えばこー言う人ですね?わかります
>>889 4と5の切替のためにウェブサーバを2つ用意してるのでしたら、
冗談抜きで勉強しておいた方が後々のためになると思いますよ
>>893 xamppなどのツールを使う以外に早く構築できる方法があったら晒してみ(・∀・)ニヤニヤ
片方はcgiで。。。とか無しなw
>>894 何度言っても分からないだろうからヒントだけ
環境変数をリロード
テスト環境は本番に備えてシンプルなほうがいいし。 状況によって選択すればいい。
>>895 アパッチのコンフファイルのモジュール読むとこ書換えてアパッチ再起動するってこと?
xamppって中身はただの詰め合わせで、インストールする手間が省けるかどうかの違いくらいだろ 何が駄目なのか分からん
苦労するほうがえらいと しこしこフレームワークも使わず 全部自作して、作ったものは結局ワンランク下。 まあこういうやつ、いますね。迷惑です。視ね。
授業中寝てたりサボってたくせに試験前にノート見せてくれと擦り寄ってくる奴に似てる。 xampp使ってphp.iniやapacheが分からないと言ってすぐ人に泣きつく奴は。
>>901 君は体育や道徳の時間にノートを取ったのか?
趣味でやっている奴にはテストなんてナイナイ。
共通サイドメニューをinclude出来れば十分な奴も多いんだぜ?
>>901 xampp使おうが、1からアパッチインスコしようがphp.iniやhttp.confの設定が
よくわからんというのは共通だと思うのだが具体的にどこが違うんだ?w
じゃあxamppでうまく運用できてる奴は、授業中に寝てたりサボりながら テストでいい点を取る奴だな?
まとめ (忙しい人 || 鯖設定の知識いらない || 充分な知識がある) → xampp (暇な人 || インストール画面を見ないと気がすまない || 努力の無駄遣いをしたい) → apache
>>903 どうせxamppをANHTTPDのようなソフトだと勘違いでもしてるんだろう
あはは。xamppがapacheではないと 勘違いしていたわけかwww とんだ間抜けだwww
909 :
nobodyさん :2008/05/28(水) 11:02:33 ID:w4MJsYGN
header( 'Location:
http::// 〜/index.php#99' )で別ページに飛ばすページを作って、
iモードでそこにアクセスしたらページはちゃんと飛ぶんだけど、
飛ばされたURLの末尾の#以降が無くなっててページの頭から表示されてしまうんだが何か上手いやり方はない?
FireFoxでアクセスしたら#以降も付いてちゃんと動いてくれたからiモードじゃどうにもならんのかな?
>>906 (充分な知識がある || 自己責任でやれる) → XAMPP
(初心者 || 勉強する必要がある人 || その他一般的な用途) → Apache+MySQL+PHP+Perl
そりゃ意味が火狐だからだろ gooとgleって一般的な英単語があるのか?
本当はレッサーパンダだけど、 火狐に見えるから、仕方無いだろうね。
何の話? Firefoxのアイコンはキツネが燃えてるだろ
じゃあFirelessarpandaか
>>915 は自分で貼って読んでないのか。
>なぜかブラウザのロゴにはレッサーパンダというより炎 (fire) の尻尾を持つキツネ (fox) に似た姿が描かれている。
918 :
913 :2008/05/28(水) 15:55:09 ID:???
Firefox=レッサーパンダ。
でも、Fire+fox(火狐)に見えるということ。
ロゴマークは狐らしいね。
http://foxkeh.jp/faq/ フォクすけ FAQ
> Q. なぜレッサーパンダ (英語:firefox) ではなく狐なの?
> A. Firefox のロゴマークが狐をモチーフにしたものであることから、
> 同じく狐がモチーフとなっています。
>>915 Wikipediaの情報が正しいと思う人d
あのロゴがレッサーパンダに見えるほうがどうかしてるw
ロシア語で考えるんだ。
Нет, это неприятно.
無料のland.toで require_once "HTTP/Request.php"; したのですが Warning: require_once(HTTP/Request.php) [function.require-once]: failed to open stream: No such file or directory in /home1/httpd/ventz/public_html/http.php on line 2 Fatal error: require_once() [function.require]: Failed opening required 'HTTP/Request.php' (include_path='.:/usr/local/lib/php') in /home1/httpd/ventz/public_html/http.php on line 2 となりました。どうしたら使えるんでしょうか??
>>923 land.toにHTTP_Requestはあるんでしょうか?
PHPで一人用のゲームを作るのには向いていないですか? ブラウザでできるという事でプレイを始めやすいですが、 多人数が同時にプレイすると、 他人のプレイの影響を受けるゲームではないのに、 サーバーに負担がかかったしまう気がします。
サーバーに負担がかかってるんだとおもいます
>>925 他人のプレイの影響があるかどうかより
PHPの処理負荷とリロードなどHTTPアクセス頻度の多さが問題じゃない。
そもそも何か操作するたびにPHPを実行するなんて何人用であろうと向いてない気がする。
JavaアプレットかFlashでゲームを作るんじゃないかな。
で、ハイスコアの記録だけPHPを使う。
928 :
925 :2008/06/01(日) 02:42:32 ID:???
ありがとうございます。 PHPではないと実装しにくい所だけPHPにすればいいのですね。 勉強がてらに戦闘だけのRPGを作っていましたが、 たしかにPHPのみで作っていました。 コマンド入力はフォームボタンで行い、 $_SERVER["SCRIPT_NAME"]に出力するようにして、 $_SERVER["REQUEST_METHOD"]でチェックしていました。
レンタルサイトによっては単にチャットやゲームは禁止と 負荷がかかりすぎたら禁止とかいろいろだよな。 大人気のゲームじゃあるまいし たいした負荷じゃない気もするが。
鯖へのアクセス頻度による。 場合によってはF5アタックよりたち悪いし。
昔ISPでcgiサーバ提供してたけど、箱庭諸島とかいったかな あれインストールするやつが数人いただけでサーバ負荷すごいことになったw まあプレイ人数の問題もあるしな
933 :
nobodyさん :2008/06/03(火) 00:25:03 ID:nQlafZ13
PHP5.2.6をWindows2000にインストールしました。 php.iniの中でphp_mb_stringとphp_mysqlを有効にしたのですが(extensionの項目) phpinfoで見ると、項目が現れず、実際のスクリプトでも"不明な関数が呼ばれた"といったエラーになります。 各dllファイルが入っているディレクトリはphp.iniのextension_dirに指定が済んでいます。 ちょっと漠然としてますが、チェックすべき点というか思い当たる点などありませんか?
インスコした当時の記憶がないけど、apacheならapache再起動してみた?
935 :
933 :2008/06/03(火) 05:59:56 ID:kMczNHNH
>>934 ありがとうございます。
再起動は変更のたびおこなっていました。
先ほどやっと気づいたのですが、phpinfoで表示される内容には、
上記2つのextensionだけでなく、ほかの設定も反映されていませんでした。
たとえばdoc_rootを指定してるのにno valueだったり、
extension_dirはc:/php/extを指定してるのにc:/phpだったり、
その他、文字コードなども同様です(no valueなど)。
それでphp.iniが読み込まれていないのではないかと思いました。
OSが2000なのでc:/WINNT下に配置してるので問題ないと思うのですが・・
apacheの設定がよくないのかな・・なお、確認してみますm(_ _)m
phpinidir "c:/winnt"
937 :
933 :2008/06/03(火) 06:39:22 ID:kMczNHNH
>>936 ありがとうございます!ビンゴでした。
ググッたりしてうやむやのままApacheの設定の方に
phpinidirをc:/phpと追記していました。
おそらくc:/WINNTがデフォルトだろうとコメントアウトしてみたところ
うまく読み込めて、動作確認できました。
追記する際、少し意味を考えれば・・・お恥ずかしいですorz
phpinfo()の「Configuration File (php.ini) Path」で 現在読み込んでいるphp.iniのパスが分かるはずよ。
939 :
933 :2008/06/03(火) 23:50:42 ID:???
>>938 ありがとうございます。現在、表示されています。
今回、いろいろ勉強になりましたm(_ _)m
phpでポストグレスの接続を試しています。 下記のように書いているのですが 成功も失敗も表示されません。 書き方が間違っているのか、 さもなくば変数の値が間違っているのかと思うのですが、 書き方をチェックして頂けませんでしょうか。 ------------ $db = pg_connect("host=localhost dbname=dbの名前 user=*** password=***"); if(pg_connect($db) == FALSE){ print "失敗"; } else{ print "成功"; }
その構文なら、if(pg_connect($db) は if ($db) じゃないの? 変数の中身も表示させてみては
ご回答どうもありがとうございます。 モジュールがインストールされていなかっただけでした。
ヽ(・ω・)/ ズコー \(.\ ノ
くだすれではよくあること。
undefined function が出てたはずだろw
エラーを表示するって書いていないと出ないよ。ログに記録されると思うけど。
エラーを表示しない設定にしておいてエラーが表示されませんとかアホかと
PHP5.2.5 + Mysql5.0.51 環境。 |契約日|担当者名|商品名| というmysqlのテーブルがありまして 行=契約日 列=担当者名 セルの中身=商品名 という形でhtmlのtableに出力したいとします。 私の前任者は以下のようなアルゴリズムで処理していました *SQL query (SELECT distinct(担当者名)) *ループで担当者名を配列 $担当 に入れる *SQL query (SELECT distinct(契約日)) *ループで契約日を配列 $契約日 に入れる *table内に出力 for ($i=0 ;$i <count($担当); $i++){ for($ii=0;$ii <count($契約日); $ii++){ *SQL query (SELECT 商品名 from 売上表 WHERE 担当者名=$担当[$i] AND 契約日=$契約日[$ii]) *echoで出力 } } tableのセル一つ毎にクエリを発行しているので、webページにアクセスするたびに5000回近いクエリ。 これは鯖的に大丈夫なのでしょうか? 駄目な場合、どこが駄目で、改善するにはどうすればいいのでしょうか?
カーソル使えるんだっけ?
$array[$tanto][$date]って配列が出来ればいいんだろ? セル毎じゃなくて$tanto毎のクエリで充分でないかい?
まあどっちにしても1回のクエリで持ってこれるべ。
ワラタ ひどいWebアプリだな
954 :
nobodyさん :2008/06/05(木) 22:35:55 ID:SWDrHyA/
・・・ } else if (rand(0, 99)==3) { $fp = fsockopen("www.example.com", 80); if ($fp) { ・・・ とある配布スクリプトに次のような行があったのですが これって何をしているんでしょうか www.example.com(実際は違う)に接続したりするんでしょうか マニュアルを見たら fsockopen — インターネット接続もしくはUnix ドメインソケット接続をオープンする ってあったのですが ドメインソケットとかオープンとかよくわからなくて
>>954 どういうスクリプトなのかと、続きの内容を書いてみ。
スクリプトの内容によるが、
スパイウェア的なものかもしれん。
作者のサイトに、設置場所を送信してたり。
>>955 まじですか・・・??
if (substr(md5($tmp_dev_id1), 0, 2)!=$tmp_dev_id2) {
//
} else if (rand(0, 99)==3) {
$fp = fsockopen("www.example.com", 80);
if ($fp) {
fwrite($fp, "GET / HTTP/1.0\r\n\r\n");
stream_set_timeout($fp, 2);
$res = fread($fp, 256);
$info = stream_get_meta_data($fp);
fclose($fp);
if ($info['timed_out']) {
} else {
//echo $res;
}
}
}
こんな感じです(www.example.comの部分は変えています)
まだ必要でしたらその記述があるファイルだけどこかにアップロードします
>どういうスクリプトなのかと、
トラックバックっていう落ちじゃないよね?
959 :
nobodyさん :2008/06/06(金) 17:13:47 ID:OXdnxMIA
携帯でのログインについて質問です。 COOKIE使えない状態でログイン情報を保持するということは GET,またはPOSTで連れまわすしかないわけですが 画像にリンクを貼りたいのでGETでしか送信できません。 URLにIDとPASS情報を常に表示した状態で歩き回るのに違和感を感じます。 もちろんURLの一部を変更されたところではじくようにはなっているのですが、、、。 携帯ではこのようなログインが普通なのでしょうか? せめてbase64で変換するぐらい? またはログインしたらランダムな文字列を発行しそれを連れまわす? すいませんがよろしくお願いします。
検索フォームで日本語検索するとうまくいくのに、 URLに直接日本語を入れるとだめになる search.php?keyword=にちゃんねる 見たいな感じだと文字化け なにを調べればいいですか?
ありがとうございます ちなみにフォームで「にちゃんねる」を検索すると、 ↓ Your search for 'にちゃんねる' returned 0 results URLに直接キーワードを入れると、 ↓ Your search for 'u"・・・・衂 returned 0 results となります フォームで検索したとき、URLを見るとURLエンコードされています ブラウザのエンコードはEUC-JPで、データベースにもEUC-JPで入っています 最終的には、URLにURLエンコードしてない日本語文字列にて検索結果を表示したいと思っています。 ↓ search.php?keyword=にちゃんねる phpをいじって解決する方法を模索中です
> URLにURLエンコードしてない日本語文字列にて検索結果を表示したい その「URLに」てのはブラウザのアドレス欄にって意味か? んなものはブラウザの勝手でPHPでどうなるものじゃないぞ
965 :
954=956 :2008/06/06(金) 20:29:07 ID:00gihzUB
954=956ですが 956は何をしているコードなんでしょうか www.example.comの部分は製造元のアドレスです
掲示してもらったソースだけじゃなんとも言えんって。 その配布先書いたほうが早かろう
なにそれ自分で書いた奴でも人が配布した奴でもなくただうpろだで見つけただけってわけ?
だからファイル単品じゃなくて 配布元を書けって。
>>959 PHPのセッションは、php.iniの「session.use_trans_sid」の設定を1にして、
セッション関数使うと、自動的にGETで引き回してくれるよ。
>>970 >URLにIDとPASS情報を常に表示した状態で歩き回るのに違和感を感じます。
だからGETで引き回すのはNGなんだな。
一応ワンタイムSIDにIDとPASSを紐つけておくという手もあるな。
遷移前にSID,ID,PASSのレコードを作ってサーバ側に保管
SIDが呼ばれたらIDとPASSを読み出してレコード削除
Q. DB負荷が気になるのですが。
A. あきらめれ
972 :
970 :2008/06/07(土) 00:09:22 ID:???
>>971 ソレだったら普通にセッション吐いて、GETでセッション引き回して、
セッション内に、IDのみを格納するとかでいいんじゃなくて?
それだとセキュリティ的に問題なんかね。
俺は毎回session_regenerate_idでIDかえてたよ あと携帯の場合のIP範囲もみてた
974 :
nobodyさん :2008/06/07(土) 14:21:12 ID:MmjCOEMo
【ゴールデンレス】 ∩ ・∀・)∩∩ ´∀`)∩ このレスを見た人はコピペでもいいので 〉 _ノ 〉 _ノ10分以内に3つのスレへ貼り付けてください。 ノ ノ ノ ノ ノ ノそうすれば14日後好きな人から告白されるわ宝くじは当たるわ し´(_) し´(_) 出世しまくるわ体の悪い所全部治るわでえらい事です
フォームに入れた検索の言葉って自動的にURLエンコされて、ブラウザのURL欄に表示されるの?
>>967 を見ても何をしているかまったく何一つわかりませんか?
あなたは自分の都合しか考えない人ですね
何一つわからないんですね どうもありがとう
そういうわけではない こちらの話を無視する人にどうして情報を教える義理がある
っ旦
>>954 ,956
俺PHPよくわからんが
rand(0, 99)==3だから3%の確率で
www.example.com:80をGETして
でもその後特に何もしてない。
もしあまり望ましくない処理を行っているスクリプトだった場合の、 事が大きくなるのを避けたいと願うこちらの心情もお察しください。 2ちゃんねるという性格上、どうしても起こり得ることなので。 そのため、書かれていたURLもずっと伏せてまいりました。 むしろ、提示した当該スクリプトのみで何一つわからないと言うわけではないとすれば なぜ配布パッケージ丸ごとを提出しろ、配布元を提示しろ、と強いるのか、 その点がますます上記の懸念を強固に抱いてしまいます。
>>983 いや、配布しているサイト教えればよくないか?
>>984 1% じゃね?
なにもしてないならアクセスログ(設置サイトのリファラ)目的かな
すまん リファラは無いな。
>>954 100分の1の確立で配布元に「GET /」してる。
それ以上でもそれ以下でもない。
アフェリエイト関係でよくある奴じゃない? タダで使わせてやるが、クリックの1%は俺が貰う系のやつ。
>>985 判ったぞ、つまり「Unix ドメイン」の意味がわかれば解決でしょ。
でもちゃんと回答しようとするほど「rand(0, 99)==3」とか意味不明な点が気になるんだよ。
こちらの心情もお察しください。
どうして986や987に対して答えないの?
なんつーかね、お母さんにそんなやり方じゃ社会に出てから上手くやっていけないよと言われたことあったんじゃないの。忘れてるだろうけど。
>>985 >事が大きくなるのを避けたい
そのスクリプトが韓国製だからといって叩かれるとでも?
情報小出しが一番嫌われるっていい加減気付けよ
もうじき1000だからお終い
少なくとも
>>956 の時点では情報が小出しであるとは考えていません
>.955に続きを書くように言われたため、要求された続きの部分を書きました。
その後、とくに返答が無いので再度
>>965 で伺いましたが、
>>966 で提示したコードだけではわからないという言葉をいただいたため
>>967 を書きました。
>>966 では配布元を書いたほうがいいとの指摘がありますが
>>985 で書いた不安があるため配布元の提示を避けていました。
ただ、その時点で「配布元の提示できない」と断言してしまうと
俺たち(2ちゃんねらー)を信用できないのか、と気分を害してしまう恐れがあったため
あいまいな返答をしてしまいました。
結果的に気分を害することとなり申し訳なく思っています。
スクリプト自体は国産だと思います。
スクリプト内の自然言語は日本語で、配布サイトも日本語で書かれています。
訂正 ×「配布元の提示できない」 ○「配布元の提示はできない」
俺が千人
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。