【PHP】ID出さなくても質問OKなスレ【初心者歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/02/03(火) 01:09:36ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
0751nobodyさん
2009/08/01(土) 23:44:33ID:FfAyQxIrやっと表示できたソースがあったんですが、↓のやりかただと更新時間順に表示されなくて、
URL順になってしまいます。
$rss = array('http://○○','http://○○','http://○○');
これ以上ぐぐっても答えが出そうにないのでお知恵をお貸しください
0752nobodyさん
2009/08/01(土) 23:52:02ID:???パースして各RSSの更新日時を取得、それを順に並べて出力すりゃいい。
0753nobodyさん
2009/08/02(日) 10:58:28ID:???var_dumpでブラウザに毎回出力してたんだがさっき自称凄腕に失笑された
0754nobodyさん
2009/08/02(日) 12:27:20ID:???0756nobodyさん
2009/08/02(日) 15:17:53ID:???じっちゃんがよく言ってた
0757nobodyさん
2009/08/02(日) 15:24:41ID:???0758nobodyさん
2009/08/02(日) 16:16:05ID:???0759nobodyさん
2009/08/03(月) 09:48:18ID:???普段はPHPエディタ+tortoisesvn
デバッグ表示はVar_Dump::display(); // pearのVar_Dump
あとはXdebug有効にしてる(エラー時にブラウザに色々情報でる)
凄腕じゃないのでほとんどの場合、これで十分。
0760nobodyさん
2009/08/05(水) 23:34:19ID:???http://jp.php.net/manual/ja/function.min.php
>min() は配列の中で最も大きい数値を返します
0761nobodyさん
2009/08/05(水) 23:39:36ID:???ドキュメントの改善を手助けするには
ttp://jp.php.net/manual/ja/about.howtohelp.php
0762nobodyさん
2009/08/06(木) 09:46:57ID:???0763nobodyさん
2009/08/09(日) 02:42:18ID:???PHPエディタという奴は起動してすぐ落ちるのでだめでした
VisualStudioみたいのがいいんだけど、やはりフリーじゃなくお金払わないとだめですかね
0764nobodyさん
2009/08/09(日) 02:48:28ID:???0766nobodyさん
2009/08/10(月) 00:19:53ID:???CSVから1行一件のデータを読み込み
最初のforeachの中でif文使って条件分けしたデータを配列に入れて
その分けた数とforeachで表示させたいのですが
条件分けしたデータを入れる変数?配列?の宣言の仕方が分かりません
$Alllist = file("data.csv");
foreach( $Alllist as $list )
{
0767766
2009/08/10(月) 00:22:54ID:???if( strcmp( $list, "A" ) == 0 )
$array = $list;
}
printf( "Count count($array)" );
foreach( $array as $wake )
{
0768766
2009/08/10(月) 00:25:21ID:???表示;
}
すみません、質問以前な事してますが
よろしくお願いします m(_ _)m
0769nobodyさん
2009/08/10(月) 00:30:52ID:???foreachで各列を表示したいんだよね?
それでいいのでは?
0770nobodyさん
2009/08/10(月) 00:55:07ID:???function group_lists($list, $key, &$group) {
if (! array_key_exists($key, $group)) $group[$key] = array();
$group[$key][] = $list;
}
// ここから呼び出し元
$group = array();
foreach( $Alllist as $list )
{
if (stripos($list, 'A') === 0) {
group_lists($list, 'A', $group);
}
else if (stripos($list, 'B') === 0) {
group_lists($list, 'B', $group);
}
// 以下、場合分けの数だけelse ifが続く
}
0771nobodyさん
2009/08/10(月) 01:16:15ID:???ファイルに書き込むプログラムを作りました。
a.php
-----------------------------------------------------
if($_POST['submit']) {
writeData();
}
-----------------------------------------------------
これは正常に動いているのですが、
a.phpからb.htmlなどにページ移動し、ブラウザの戻るボタンで戻ると
再度POSTデータが送信されてファイルに書き込まれてしまいます。
これを避ける方法がありましたら、ご教授願えますか?
0774nobodyさん
2009/08/10(月) 06:26:50ID:???書き込む内容をチェックしたり、セッション使ったり
用途に合わせた選択をすればいいと思う
>>772
==を使う方が例外的だろう
普通は===を使うぞ
0775nobodyさん
2009/08/10(月) 07:11:59ID:???0776nobodyさん
2009/08/10(月) 07:30:39ID:???0777766
2009/08/10(月) 10:34:50ID:???まずCSV内に一致した数を表示させて
その後に分類されたデータを表示させたいので
分類と表示を一緒にはできない・・・ですよね
配列を宣言して、その配列にどんどん分類したデータを追加していく
C++で言うvector見たいなのはphpでは無いのでしょうか?
0778nobodyさん
2009/08/10(月) 10:39:06ID:???hairetu = array();
hairetu[]="hogehoge";
hairetu[]="hagehage";
hairetu[]="tsurutsuru";
0779nobodyさん
2009/08/10(月) 12:16:40ID:???=== は型まで同一かどうかを比較、
だったっけか
0782nobodyさん
2009/08/10(月) 15:46:06ID:???http://d.hatena.ne.jp/hnw/20080606
この記事がとても参考になると思う
0784nobodyさん
2009/08/10(月) 15:58:42ID:???0785nobodyさん
2009/08/10(月) 17:08:21ID:???0786nobodyさん
2009/08/10(月) 17:24:39ID:???$source (元のテキストファイル)
$result (URLリスト)
とします。
http://phpspot.net/php/man/php/function.preg-match-all.html
ここを参考に以下のコードを書きました。
// $pattern = '/http:\/\/[a-z0-9\/\-_\.]+/i';
// $pattern = '/(?:")?(http:\/\/[^\s"]+)/';
$pattern = '/^(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$/';
preg_match_all( $pattern, $source, $maches );
fputs($pointer, count($matches[0]));
fputs($pointer, "\n");
for ( $i=0; $i< count($matches[0]); $i++ )
{
fputs($pointer, $maches[1][$i]);
}
色々パターンを変えてやってみても、結果はいつも0(何もマッチしない)です。
これ以外の方法でも構わないので、テキストからURLリストを作る方法を教えてください。
よろしくお願いします。
0788nobodyさん
2009/08/10(月) 20:09:42ID:???ひょっとして
$source = 'hoge.txt';
とかじゃないよね?
preg_match_allの第2引数は検索対象となる”文字列”だからね?
0789nobodyさん
2009/08/10(月) 20:11:45ID:???まあ用心とか念のためとかいわれたらそう言う考え方もあるよね、だけど。
0790nobodyさん
2009/08/10(月) 20:17:14ID:???0791770
2009/08/11(火) 00:47:34ID:???いまさらだが、striposは、見つからなかった場合、falseを返す。
== 0 とした場合、0文字目かfalseかを判断出来ないため、=== 0とした。
0792786
2009/08/11(火) 11:34:24ID:???そうやってました。
っていうことは、$sourceから一行づつ文字列引っ張ってpreg_matchでチェックしていくんですかね。
どう書けばいいんだ… CかC++なら一瞬で終わるのに…
0793786
2009/08/11(火) 11:37:04ID:???(ポインタをどうやって進めるんですか?)
0794nobodyさん
2009/08/11(火) 11:45:01ID:???$pattern = '/(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/mi';
preg_match_all( $pattern, file_get_contents($source), $maches );
print_r($maches);
0795786
2009/08/11(火) 11:46:06ID:???$pointer=fopen("./book/memo", "r"); //ファイルを開きます
$line = fgets($pointer); //内容を取り出します
echo $line; //画面に内容を表示
fclose($pointer); //ファイルを閉じます
?>
こういうクソサンプル載せてるサイトってなんなんだろう…
全く意味がないw
0797nobodyさん
2009/08/11(火) 11:48:48ID:???0798nobodyさん
2009/08/11(火) 12:29:46ID:???0799nobodyさん
2009/08/12(水) 11:34:05ID:???.htaccess で
php_value mbstring.func_overload 0
と書いても設定が変わりません。試しに
php_value mbstring.func_overload = 0
と書くとエラーになるので .htaccess は読まれているようです。
( mod_rewrite などは動いている )
解決策をご存知の方はいらっしゃいませんか。
0800nobodyさん
2009/08/12(水) 11:41:53ID:???0804nobodyさん
2009/08/12(水) 14:04:17ID:???0805nobodyさん
2009/08/12(水) 14:05:09ID:???0806nobodyさん
2009/08/12(水) 14:05:24ID:???一部レンタルサーバじゃその変更使えないとか書いてるサイトもみかけたぞ
0807799
2009/08/12(水) 14:44:31ID:???>>804
mbstring.func_overload は PHP_INI_PERDIR なので
ini_set() できないだろと思いつつ、試してみましたが 7 のままです。
>>805
あ、それ怪しい、と期待したのですが
AllowOverride All
Options All
でした…。
>>806
自分のパソコンの実験サーバです。
Apache/2.0.63 + PHP 5.2.9-1 ( Windows Vista )
とりあえず php.ini の mbstring.func_overload = 0 をしてますが、
古いアプリが 7 を期待しているのがあって、普段は 7 がいいんです…。
0808nobodyさん
2009/08/12(水) 15:16:49ID:???とりあえずこっちで試す限り普通に変更できるので、どこかで上書きしてるか
変更しないようになってるのでは。
インストールした直後の設定に戻しても同じかな
0810nobodyさん
2009/08/12(水) 21:21:14ID:???phpとtplの文字コードはEUC-JPで、tplの出だしは
<HTML lang="ja">
<HEAD>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=EUC-JP">
となっています。
そいやphpで書いてた時も同じものをprintしたんじゃだめで、
header( "Content-Type: text/html;charset=EUC-JP" );
と書かないと文字化けしたんですけど、関係あるでしょうか?どうやって解決すればいいんでしょう。
0811nobodyさん
2009/08/12(水) 21:23:16ID:???mbstring.internal_encoding = EUC-JP
になっています。
0812nobodyさん
2009/08/12(水) 21:27:49ID:???ブラウザでエンコーディングを日本語:EUC-JPに指定すると文字化けが直ります
日本語:自動判別にすると文字化けします
0813nobodyさん
2009/08/12(水) 21:56:23ID:???0814nobodyさん
2009/08/12(水) 22:01:02ID:???ブラウザに送られるHTTPヘッダの情報に異なった文字コード宣言が入っているため
FirefoxはHTTPヘッダとHTML文書に異なる文字コードが宣言されている場合、HTTPヘッダを優先する
header()はHTTPヘッダを送信する関数のため、header()を利用した場合は再現しない
0815nobodyさん
2009/08/13(木) 01:01:40ID:???0816nobodyさん
2009/08/13(木) 10:20:29ID:???0817nobodyさん
2009/08/13(木) 21:55:45ID:???バージョンによってはないものなんでしょうか?追加するとしたらどこにすればいいんでしょう。
ぐぐって出てくる解説では最初から入っていることが前提となってるっぽいですが。
0818nobodyさん
2009/08/13(木) 21:59:48ID:???こりゃあきらめるしかないか。
0819nobodyさん
2009/08/15(土) 14:05:38ID:???「○○さんから届いたよ」っていうメッセージが
デスクトップに表示されるっていうプログラムを作りたいんですが、
「メッセージを受け取った時に実行する」にはどうしたらいいんでしょう?
0820nobodyさん
2009/08/15(土) 14:22:52ID:???マルチ?
0821nobodyさん
2009/08/17(月) 17:42:19ID:YF5t01fc0822nobodyさん
2009/08/17(月) 17:47:12ID:???ぼく18歳未満なのでこれ以上調査できません><
0823nobodyさん
2009/08/18(火) 10:55:27ID:4md56gGq<?php
$test="てすと";
?>
<html><body>
<?=$test?>
</body></html>
これが表示されるサーバーと表示されないサーバがあるのですが、
どういう理由で違いが出るのでしょうか?
どこかサーバー側の設定が違うのでしょうか?
宜しくお願いします。
0825nobodyさん
2009/08/18(火) 11:14:03ID:4md56gGqありがとうございました。
無事、表示できるようになりました。
0826nobodyさん
2009/08/18(火) 15:33:36ID:???オフにしたほうがいい。
もし開発環境で、オンで、
そのまま開発して、
それでもし本番がオフだったら、
書いたコードがPHPとして
実行されずに、ソースが丸見えになる。
0827nobodyさん
2009/08/18(火) 15:36:44ID:???連れとか中間と、いっしょに、連合組んで
関東を統一することである。
学校出たら、トオルんとこの溶接、手伝って
金ためてアストロか、シーマを、迷ってるが買って、
単車も改造して、バリバリいい音出して走る。
俺は、ずっと将来現役で、走り続ける事が、夢である。
これ思い出した
0828nobodyさん
2009/08/18(火) 19:47:38ID:???こういう場合php.ini全文をupするものなのか、それとも変えたい部分だけを
log_errors = On
みたく書いてそれだけをphp.iniの名前でupするものなんでしょうか
0830nobodyさん
2009/08/19(水) 13:19:33ID:rHPCm5Kh【OS名】 linux
【PHPのバージョン】php5.1.6
【WEBサーバ】 Apache
【質問内容】
function send_to_smart($data1, $data2 ,$mode){
//パターン1
if($mode+0 == 0){
$request = "GET /aaaaa/?data1=".$data1."&data2=".$data2."HTTP/1.0\r\n\r\n";
send_request($request);
//パターン2
}elseif($mode+0 == 1){
$request = "GET /bbbbb/?data1=".$data1."&data2=".$data2."HTTP/1.0\r\n\r\n";
send_request($request);
}
$fp = fsockopen("*****.jp",80);
fputs($fp, $request);
while (!feof($fp)) {
$line .= fgets ($fp,128)."\n";
}
fclose ($fp);
}
上記の感じでソケット送信のプログラムを作ってます。
・パターン1と2で別々にデータを送信してる
・2回とも情報送ってるはずなのに、受け取り側ではパターン1しか受け取れてない。
・パターン2はデータが入っていないのではなく、リクエスト自体が来ていない。
・2回ともレスポンスは取れている。ソケットオープンも問題なし。
パターン2で送れない理由がさっぱりわかりません。
これで、なんか原因や解決策判ったりしますか?
0831nobodyさん
2009/08/19(水) 13:22:35ID:???0832nobodyさん
2009/08/19(水) 13:24:22ID:???0833nobodyさん
2009/08/19(水) 14:29:22ID:???$mes ="
<html>
<head><title>aaa</title></head>
<body>aaa</body></html>";
echo $mes;
?>
たったこれだけのスクリプトがFirefoxでだけエラー起こす鯖があるんだけどなんでだろう
アドオンは当然全部切った
↓エラーメッセージ
501 Method Not Implemented
GET to /test.php not supported.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
0834nobodyさん
2009/08/19(水) 14:36:00ID:???0835nobodyさん
2009/08/19(水) 14:38:06ID:???0836nobodyさん
2009/08/19(水) 14:57:27ID:???クッキー消したらうまくいった
クッキーなんて使ってないスクリプトなのになんでだろ・・・
0837nobodyさん
2009/08/20(木) 01:28:48ID:???相手から302が返ってくると遷移先にGETで送ってくれやがります
POSTで再送できないの?
0838nobodyさん
2009/08/20(木) 09:59:34ID:???0839nobodyさん
2009/08/20(木) 23:15:54ID:???「POSTして302が返ってきたら遷移先にもPOSTで送れって書いてあるのに
誰も守ってくれなかったから仕方なく303と307作った」
って読めるんだが違うの?
その本来の302の動作をさせたかったんだが。
とりあえずZend_Httpのstrictredirectsでできるのはわかったんだが、できれば標準関数で行いたかった。
0840nobodyさん
2009/08/21(金) 15:54:18ID:???それで、どのPHPファイルが読み込まれるのかを調べたいんですけど、そのような機能はPHPにありますか。
つまり require_once() した時にそのファイル名をログファイルに出力させたりとか、そういうかんじの機能です。
よろしくお願いします。
0841nobodyさん
2009/08/22(土) 03:08:28ID:???・配列のぐろーばる変数をつくる
・あらゆるPHPファイルの戦闘でグローバル変数に自分のファイル名を追加させる
・最後辺りで print_r する
0842770
2009/08/22(土) 03:44:58ID:???使ったこと無いけど、inclued_get_dataはどう?
マニュアル見た感じ、取得出来そうなきがする
http://jp.php.net/manual/ja/intro.inclued.php
0843nobodyさん
2009/08/22(土) 12:27:40ID:???全ファイルの先頭に追加するならそんなことしなくてもecho __FILE__すればいいだけじゃないのか・・・
0844nobodyさん
2009/08/24(月) 00:53:18ID:???画面からファイル(画像)がアップロードされた場合に
http://test/img/test.jpg
という風にファイルを保存しています。
また、ファイルがアップロードされたタイミングでファイルの権限を640に設定し
そのままでは外部からアクセス出来ない様に設定しています。
ここで質問なのですが、A.phpのページにパスワードを入力しそのパスワードが
正しい場合のみそのクライアントからは、アップロードされたファイル(ここでは、 test.jpg )に
アクセス出来る様にしたいのですが何か良い方法はありますか?
0845nobodyさん
2009/08/24(月) 01:29:01ID:???コード上の認証と絡めるなら、画像のURLをPHPにして、
パラメータでどの画像か判別させればいいのでは。
PHPからは、image なんちゃらの content-type ヘッダを
吐き出して、そのあとバイナリを送ればいいだけ。
0847nobodyさん
2009/08/24(月) 06:22:07ID:???0848nobodyさん
2009/08/25(火) 00:24:14ID:???test.jpg を、ブラウザからはアクセスできないフォルダに置く。
(できないサーバーもある)
それで、phpから、そのjpgを呼び出して表示するように
すればよい。
1.phpにアクセスすると、
その1.phpが、test.jpgを呼び出す感じ。
直接test.jpgにブラウザからはアクセスできない。
それで、1.phpに、パスワード認証をかけておいて、
パスワードが一致したら、ログイン成功、にして、
セッションでその情報をもちまわせばよい。
0849nobodyさん
2009/08/25(火) 14:05:57ID:???プログラミングはvbとhtmlしか経験ありません
0850nobodyさん
2009/08/25(火) 14:11:57ID:???技術的にはCometとかになるだろうから
インフラ的に無理
自鯖使うならいいけど
難易度的には難しくはないしその辺にサンプルも転がってるだろう
0851nobodyさん
2009/08/25(火) 14:22:31ID:???■ このスレッドは過去ログ倉庫に格納されています