トップページ⇒php
1001コメント299KB

くだすれPHP(超初心者用)4

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/06/13(金) 20:32:36ID:???
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。

PHP Home Page
http://www.php.net/
http://jp.php.net/



前スレ: くだすれPHP(超初心者用)3
http://pc11.2ch.net/test/read.cgi/php/1193295871/

適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 69
http://pc11.2ch.net/test/read.cgi/php/1211879073/
0692nobodyさん2008/10/31(金) 02:57:43ID:???
あとはサーバを再起動してないとか(モジュール版
0693nobodyさん2008/10/31(金) 10:12:49ID:???
>>689
やばすぎww
0694nobodyさん2008/10/31(金) 11:05:03ID:???
なんで684がだめなんだ
0695nobodyさん2008/10/31(金) 13:02:12ID:???
683のは1000回まわした時のデータ

1回の時はこんなんになった
正直な話どれを使おうが気にするレベルでも無い

preg match      :1.0013580322266E-05
ereg match      :1.7166137695312E-05
preg replace    :6.9141387939453E-06
ereg replace    :1.4781951904297E-05
ltrim               :4.0531158447266E-06
cast               :3.0994415283203E-06
+=0                :3.0994415283203E-06
0696nobodyさん2008/10/31(金) 13:38:06ID:???
じゃあ気にせずこんな処理してみた。

$v = '0430';

$num = 0;
$a = array_reverse(str_split($v));
for($i=0;isset($a[$i]);$i++)$num+=is_numeric($a[$i])?pow(10,$i)*$a[$i]:0;

echo $num;
0697nobodyさん2008/10/31(金) 20:27:56ID:???
PHPで1日一回、毎日同じ時刻に処理をするってできるんでしょうか?
具体的には、1日一回、データベースにあるデータを取り出してメールを送信したいんですが……
0698nobodyさん2008/10/31(金) 20:41:57ID:???
くだ質スレのテンプレに載ってる
0699nobodyさん2008/10/31(金) 21:24:23ID:???
>>697 こう書くのが定石

for ( ;; ) {
if ( date( 'His' ) == '000000' ) mail( ... );
}
0700nobodyさん2008/10/31(金) 21:34:36ID:???
こらこら
0701nobodyさん2008/11/01(土) 00:07:09ID:???
複数行の変数内に現れる>と<の間に挟まれた文字列内にある"だけを全角に変える方法はないでしょうか
配列展開してからのforでの処理でもかまいません

例)
たちつ>てとなに"ぬね<のはひふへほ
↓
たちつ>てとなに”ぬねのはひ<ふへほ

PHP5.25
0702nobodyさん2008/11/01(土) 00:19:59ID:???
素直にDOM使えw
0703nobodyさん2008/11/01(土) 12:16:03ID:???
PHPでリダイレクトする際にRefererを指定する方法はありますか?
0704nobodyさん2008/11/01(土) 12:38:29ID:???
ttp://antenname.com/
0705nobodyさん2008/11/01(土) 13:20:17ID:???
>>701
preg_replace('/(?<=>)(.*?)(?=<)/se', 'preg_replace("/\\"/", "”", "$1")', $str);

>>703
任意に指定するのは不可能。
Location の代わりに Refresh でジャンプさせれば、ブラウザによっては Referer が空になる。
07067032008/11/01(土) 14:09:59ID:???
>>705
回答くださり、ありがとうございます。
確認ですが、サイトBから以下のようにサイトCへリダイレクトした場合、
サイトCから見たリンク元はサイトBになるということですよね?

サイトA→サイトB→サイトC
07077012008/11/01(土) 14:46:02ID:???
>>705
ありがとうございます。うまくいきました。
神を見ました。来世までに解読できるようがんばります。
07087052008/11/01(土) 18:38:19ID:???
>>706
リダイレクトしても普通はリンクを踏んだページが Referer になる。
サイト B で Location を出した場合 → サイト C から見たリンク元はサイト A
サイト B で Refresh を出した場合 → 送信されない

サイト C から見たリンク元をサイト B にしたければ JavaScript を使うか、
もう一度リンクを踏んでもらうしかないと思う。
0709nobodyさん2008/11/02(日) 09:59:21ID:???
>>705
>preg_replace('/(?<=>)(.*?)(?=<)/se', 'preg_replace("/\\"/", "”", "$1")', $str)
当方もHTMLタグ内以外の"を全角かなんかに置換したくてこれ応用したいんですけど自分の場合、
$str = <a href=http://aaa.html>;宇宙"人</a><a href=http://aaa.html>;未来"人</a><a href=http://aaa.html>;超能力"者</a>;
みたく連続で並んでいるデータに対して置換を行いたいんです。
>>705のままだとふたつめ以降の<a>タグの"が全部全角に置き換わっちゃうので試行錯誤してみたんですがうまくいきませんでした。
解決のすべはあるでしょうか?PHP 5.26です。
0710nobodyさん2008/11/02(日) 12:30:59ID:???
>>709
正規表現でぐぐれ
07117052008/11/02(日) 16:38:15ID:???
>>709
タグの間には <> が出てこないから、単純にこれでいいかも。
アサーション使わずに > < 込みで二番目の置換に渡しても結果は同じになるし、
二番目の置換は正規表現使わない方が高速だわ。

preg_replace('/>[^<>]*</se', 'str_replace("\\"", "”", "$0")', $str);
0712nobodyさん2008/11/02(日) 17:50:57ID:tL8xHBO4
すごいね
俺昔タグ内のname=""の中にさらに"があるアホデータの置換断念したことあるわ
0713nobodyさん2008/11/02(日) 18:29:46ID:6l/MEBbz
翔泳社の「独習PHP」読んでるんだけど
代数演算子の記述が変な気がする。

前置加算→ $i++
後置加算→ ++$i
前置減算→ $i--
後置減算→ --$i

前置と後置が逆になってるような・・・
0714nobodyさん2008/11/02(日) 18:32:13ID:???
記述が間違ってることに気付くことこそがその本の狙いなんだよ
0715nobodyさん2008/11/02(日) 22:29:09ID:???
そだうったのか!!!1!
0716nobodyさん2008/11/03(月) 02:43:21ID:q5+iesG+
PHP5以降でセッションデータをデータベースに入れて管理したいのですが、どのようにするのが王道なのでしょうか??
PEARのHTTP_Session と PEAR_DB を使う方法でしょうか??
他にセオリー的なものがあれば教えて頂けると幸いです。
0717nobodyさん2008/11/03(月) 03:08:13ID:???
つマニュアル
0718nobodyさん2008/11/03(月) 17:55:37ID:???
関数多過ぎだろPHP どんだけぇ〜
0719nobodyさん2008/11/03(月) 17:58:50ID:???
低能乙
0720nobodyさん2008/11/03(月) 23:52:41ID:???
>>716
ここは素直に session_set_save_handler でいいんじゃない?
session_start を使った既存のコードを変更したくない場合はおすすめ。

マニュアルでは全く触れてないけど、書くときはロックに気を付けろ。
本来はセッションに限ったことじゃないんだけど、セッションはフレーム
ページとかで読み書きのタイミングが重なりやすいので、特に同時接続を
意識して書かないと再現しにくいバグに悩まされる。
0721nobodyさん2008/11/04(火) 05:44:06ID:???
>>716 自分でcookie発行して管理してもいいと思われ
0722nobodyさん2008/11/05(水) 21:07:53ID:5ZwaVGRj
name="upfile" を name="upfile[]" にしただけでWarning: htmlspecialchars() expects parameteが出たんだけど
解決方法を教えて下さい
0723nobodyさん2008/11/05(水) 21:12:38ID:???
配列のそれぞれの要素に対してエンティティ化するように変える
0724nobodyさん2008/11/05(水) 22:36:27ID:vFTAkKc1
Apacheのhttp.confで設定したSetEnvの値をPHPで取得するときの方法を教えてください
apache_getenvはブラウザ経由で取れるのはわかったんですが、
コンソールで取得できないものでしょうか?
0725nobodyさん2008/11/05(水) 22:37:11ID:???
コンソールって?
0726nobodyさん2008/11/05(水) 22:57:21ID:???
>>723
配列って何?ってレベル
エンティティ化ってレベル
0727nobodyさん2008/11/05(水) 23:03:04ID:???
配列も知らんのか そりゃもう無理だ
0728nobodyさん2008/11/05(水) 23:15:41ID:???
プチ
07297242008/11/05(水) 23:30:40ID:???
>>725
Linuxなどのシェルで、

% php hoge.php

とか実行したときに取得できないのかな、と。
0730nobodyさん2008/11/05(水) 23:32:08ID:???
それにApacheがどう関係してんの?
07317242008/11/05(水) 23:38:38ID:???
Apacheのサブプロセスの環境変数はブラウザからアクセスしないとapache_getenv()が実行できないらしくて。

シェルから実行したときにApacheの環境変数を取得したいということです。
0732nobodyさん2008/11/06(木) 00:27:55ID:???
>>731
apache経由してないのにどうやって取得するんだよ
0733nobodyさん2008/11/06(木) 00:41:43ID:???
724「だからそれを聞いてるんだろう!!」
0734nobodyさん2008/11/06(木) 00:55:35ID:???
>>724 80番ポート経由で
0735nobodyさん2008/11/06(木) 00:58:22ID:???
>>731
% su - apache
% env
0736nobodyさん2008/11/06(木) 06:28:31ID:???
>>731
file(httpd.conf)
0737nobodyさん2008/11/06(木) 07:26:41ID:???
cliとmod_phpの区別がついてないんだろうなぁ・・・
0738nobodyさん2008/11/06(木) 12:35:47ID:xueniZPL
$tinko=50;
$unko=30;
if($unko=30 && $tinko=50) {
$tunko=100;}
else { $youko=1;}

$tinko=50 && $unko=30 ? $tunko=100:$youko=1;
0739nobodyさん2008/11/06(木) 12:51:43ID:???
>>724
telnet でも使っとけ
0740nobodyさん2008/11/08(土) 10:54:06ID:???
フォームを使わずにファイルをアップデートする方法はありますか?
どのあたりの勉強をすればよいか、キーワードだけでも教えてもらえませんか?
0741nobodyさん2008/11/08(土) 11:00:40ID:???
意味がわからんのだが・・・。
リンククリックだけでローカルのファイルをアップロードさせるっつー話なら無理。
0742nobodyさん2008/11/08(土) 11:10:06ID:???
http://php.birdlab.com/freephpscript007.html
ここのスクリプトが使いたくて、書いてある通りにやってみたら
display(1); ?>  … display(2); ?>  … display(3); ?>  … 設定ファイルがうまく書けていたら
このような結果になりました。

phpの埋め込みで失敗しているのか、私本人がよくわかってないのか、
鯖がCentos5 で Mysql のコードはutf8 だからmb_encodingとか
やってeucにしなきゃいけないのか、もう気絶しそうです。
0743nobodyさん2008/11/08(土) 11:47:24ID:???
>ここのスクリプトが使いたくて、書いてある通りにやってみたら
>display(1); ?>  … display(2); ?>  … display(3); ?>  … 設定ファイルがうまく書けていたら
>このような結果になりました。
何を言っているのか良く分からん
0744nobodyさん2008/11/08(土) 12:04:25ID:???
>>743
配布サイトの説明文の通りにやってみた結果です。
0745nobodyさん2008/11/08(土) 13:12:13ID:???
いや日本語が良く分かりません。自分で読んでみてください
0746nobodyさん2008/11/08(土) 13:48:52ID:???
> 設定ファイルがうまく書けていたら
これも結果の一部って、写す範囲広すぎだろう。ここは説明だぞ。

> <? $vote->display(1); ?>
こんな風に書かれてるんだから、自分が short open tag を通す設定にしてるかどうかぐらい
把握してから気絶してほしい。
0747nobodyさん2008/11/08(土) 14:50:43ID:???
まさか説明文までプログラムに書いてたのかw
んでもってshort_open_tagが有効にされてないせいで全文表示されてたとw
0748nobodyさん2008/11/08(土) 18:49:51ID:???
だからタイトルどおり、実にくだらんですゃ
0749nobodyさん2008/11/08(土) 20:32:38ID:f7jJ+9vB
-> って何ですか?
0750nobodyさん2008/11/08(土) 20:34:01ID:???
htmlコメントのなれの果て
0751nobodyさん2008/11/08(土) 21:59:22ID:???
一週間くらいかけて色んなCGIとかの勉強してみたけどいざ設置するとわからないことばかりだお
ttp://pbs.darkgray.net/のPbsChatっていうのを設置してみたはいいんだけど携帯三キャリア対応のはずなのに何故か入室できない(名前を書く欄がない)
PCからは普通に入れるんだけど・・・
ちなみに使ってるサーバーはwww4.atpages.jp
サンプルのほうも名前欄が出なくて入室できない・・・
サイトの方にはその辺詳しく書かれてないからよくわからないんだお・・・
誰か助けてくれ・・・
0752nobodyさん2008/11/08(土) 22:20:11ID:???
マニュアルには

1-4-2. 携帯対応
携帯用のページを用意するには、option/ディレクトリ内のkt.php,ktchat.php,ktin.php,ktout.php,ktset.phpをindex.phpと同じ場所にアップロードします。
携帯用のトップページはkt.phpとなります。
携帯用の設定はktset.phpで行います。

ってあるけどこのあたりはちゃんとやってるのか?
0753nobodyさん2008/11/08(土) 22:40:37ID:???
一応
携帯用のページを用意するには、option/ディレクトリ内のkt.php,ktchat.php,ktin.php,ktout.php,ktset.phpをindex.phpと同じ場所にアップロードします。
↑確実にやった
携帯用のトップページはkt.phpとなります。
↑よくわからない
携帯用の設定はktset.phpで行います。
↑設定画面を開いたら以下記述のとこだけ書き換えるみたいだったけどなにを書けばいいかわかんなかったお・・・

## 設定項目 ここから↓ -------------------------------------------- #

## チャットルームからの戻り先URL(絶対パスまたは相対パスで指定)
$BURL = "./kt.php";

## 戻り先URLへのリンク文字列
$BMES = "戻る";

## ROM表示行数
$ROMSL = 5;

## 設定項目 ここまで↑ -------------------------------------------- #


0754nobodyさん2008/11/08(土) 22:49:17ID:???
とりあえずふざけた語尾をやめてくれ
0755nobodyさん2008/11/08(土) 22:53:51ID:???
ごめん(;ω;)
0756nobodyさん2008/11/08(土) 23:09:08ID:???
>携帯用のトップページはkt.phpとなります。

がわからん時点でもうダメなんじゃないのか。
要するに携帯でアクセスするときはこっちじゃないとダメってことだろ。
0757nobodyさん2008/11/08(土) 23:10:12ID:???
>>753
滅茶苦茶詳しく書いてあるじゃねーかw
php以前に日本語の勉強しろよwwww
0758nobodyさん2008/11/08(土) 23:28:35ID:???
え、そうなの?でもkt.phpのほうにアクセスしても携帯用に表示されないんだが・・・
トップページを二つ作らなきゃ駄目なのか?
07597402008/11/08(土) 23:30:32ID:???
>>741
わかりにくくてすみません。
ブラウザ経由ではなく、サーバでPHPプログラムを実行しただけで、
他サーバの画像を落としたいのです。
現在、cronで自動実行したプログラムでRSSを取得していて、
そのなかの画像ファイルをローカルに保存したいです。
0760nobodyさん2008/11/08(土) 23:31:19ID:???
file_get_contents(URL)
0761nobodyさん2008/11/08(土) 23:32:14ID:???
ちなみにkt.phpにアクセスすると以下みたいに表示される

Warning: include(set.php) [function.include]: failed to open stream: No such file or directory in /usr/local/www/htdocs/naritya/public_html/pbschat25/kt.php on line 11

Warning: include() [function.include]: Failed opening 'set.php' for inclusion (include_path='.:/usr/local/lib/php') in /usr/local/www/htdocs/naritya/public_html/pbschat25/kt.php on line 11

0762nobodyさん2008/11/08(土) 23:33:16ID:???
ファイルがないよ
0763nobodyさん2008/11/08(土) 23:39:40ID:???
というか>>761はとんでもないことをやらかしたって自覚はあるのだろうかw
0764nobodyさん2008/11/08(土) 23:47:14ID:???
どうでもいいがfusianasanは名前欄に入力してくれ
0765EM119-72-40-107.pool.e-mobile.ne.jp2008/11/08(土) 23:52:45ID:???
アッー!!!
ウラルでとるがな・・・まぁいいや
ファイルってなんぞ?
07667402008/11/08(土) 23:53:08ID:???
>>760
回答ありがとうございます。
色々調べて実装してみます!
0767nobodyさん2008/11/09(日) 00:15:50ID:???
>>765
kt.phpの11行目がエラー吐いてるから見てみろよ
0768nobodyさん2008/11/09(日) 00:55:43ID:???
>>765
お前本当にphp勉強してたのか? 基本が全然ダメっぽいが。

で、「set.phpが開けねーぞボケ」ってエラーなんだがset.phpはどこに置いたのさ。
パッケージ見る限りちゃんと入ってるから正常にアップロードできてりゃ問題ないはずなんだが。
0769nobodyさん2008/11/09(日) 12:58:05ID:???
設置スレに行くべきお客さんが間違ってここに来ただけのような。
0770nobodyさん2008/11/09(日) 14:39:19ID:???
勉強したって言っておけば誘導されなくて済むと思ったんだろう
0771nobodyさん2008/11/09(日) 14:44:33ID:???
ラーメンを食いたいのに間違って吉兆に行ったようなもんか
0772nobodyさん2008/11/09(日) 15:17:02ID:???
残りもん食わされんぞ、それw
07737652008/11/09(日) 17:25:53ID:???
いやいや、設置に関しては出来てんだよ。ただ携帯からアクセスすると変になるんだよ。
質問の仕方が悪かったかもしれん。すまん。
このチャットを携帯からも使用出来るようにしたいんだが、どうすればいいのだろうか・・・というのが聞きたかっただけで。
違うスレで質問した方がいいなら移動します
0774nobodyさん2008/11/09(日) 17:32:27ID:???
質問させてください。
SQLiteを使っていて、UNIQUEなフィールド"hoge"からある値のレコードを抽出しています。

$db = sqlite_open("hogehoge.sqlite");
$command = "SELECT * FROM articles WHERE hoge = 'ある値'";
$query = sqlite_query($db,$command);

この時、ある値のレコードが存在する場合の処理と存在しない場合の処理を分けたいのですが、
どのように条件文を設定すればよいでしょうか?

if($query){
}else{
}

で分けようとしたのですが、うまくいきませんでした・・・
0775nobodyさん2008/11/09(日) 17:36:48ID:???
>>773
だから設置がちゃんとできてりゃ>>761なんてエラー出さねーんだって。
なにを根拠にちゃんとできてるなんて言い張るんだお前は。
もういいや、とりあえずphpの話じゃなくなってるから↓行ってこい。

CGI設置について質問【Part3】
http://pc11.2ch.net/test/read.cgi/php/1176143582/
0776nobodyさん2008/11/09(日) 17:50:15ID:???
>>774
$queryの中身を見てみるといい
07777742008/11/09(日) 17:57:16ID:???
>>776
なんだかよくわからないんです、
常にNULLみたいで・・・
sqlite_fetch_allをした後に判断するしかないということでしょうか?
0778nobodyさん2008/11/09(日) 18:04:45ID:???
どうでもいい指摘だけどそこで$queryって変数名はおかしい
$resultとかにしてよ$rowsとかにしてください
0779nobodyさん2008/11/09(日) 18:07:22ID:???
commandかぁ。懐かしい感じだ。

常にnullって値入れてないんじゃないのかw
07807782008/11/09(日) 18:10:22ID:???
ああ
$queryに結果が入ってるのかと思ってた
じゃあ$stmtとかかなあ
07817742008/11/09(日) 18:39:25ID:???
ごめんなさい。
動作確認したつもりだったんですが、ソースにバグがありました。
修正後にechoで中身を見てみたところ、
中身があるときには、
Resource id #148
ないときには何も表示されませんでした。

これは先ほどの
if($query){
}else{
}
で処理がわけられるということでしょうか?
0782nobodyさん2008/11/09(日) 18:44:23ID:???
is_null($query)でいいんじゃね?
07837742008/11/09(日) 19:11:21ID:???
なんだか混乱していて申し訳ないです。
中身があるときもないときも
Resource id #148
のようなものが入っているみたいです。
その後のsqlite_fetch_allをした後なら空の配列ができるようですが、
空の配列かどうかを調べる関数はありますでしょうか?
07847742008/11/09(日) 19:16:48ID:???
自己レスすみません。
empty関数を使って場合わけできました。
結局、sqlite_fetch_allを行った後の返り値で行いました。
みなさんありがとうございました。
0785nobodyさん2008/11/09(日) 19:35:24ID:???
empty使うくらいなら変数そのままでいいだろw
07867742008/11/09(日) 19:53:29ID:???
>>785
そうだったんですか・・・
アホですみません
0787nobodyさん2008/11/09(日) 20:00:29ID:???
あとわざわざfetchしなくてもsqlite_queryの結果でいいじゃん
07887742008/11/09(日) 20:05:13ID:???
>>787
ごめんなさい
781では中身がないときは何も表示されないと書いたのですが、
基本的にはResource idとかいうのが入っていたみたいです。
空に見えたのはなにかのソースバグだったのかもしれません。
0789nobodyさん2008/11/09(日) 21:23:22ID:???
すみません。
↓テキストボックスにキーワードを入力して、ボタンを押すとURLに飛ぶといったプログラムを
作っているのですが、、、
<?
if($val == "1")header("LOCATION:http://blogsearch.google.com/blogsearch?hl=ja&ie=UTF-8&q=$txt&btnG=ブログ検索&lr=lang_ja");
if($val == "2")header("LOCATION:http://groups.google.co.jp/");
if($val == "3")header("LOCATION:http://blogsearch.google.com/");
if($val == "4")header("LOCATION:http://jp.youtube.com/");
?>

<form action=link.php method=POST>
<input type=text name=txt>
<input type=radio name=val value=1>ブログ
<input type=radio name=val value=2>グループ
<input type=radio name=val value=3>書籍
<input type=radio name=val value=4>YouTube
<input type=submit value=送信>
</form>

http://blogsearch.google.com/blogsearch?hl=ja&ie=UTF-8&q=$txt&btnG=ブログ検索&lr=lang_ja
↑$txtと書いてますが、ここにキーワードが入るわけですが、文字化けしちゃうんです><
誰か助けて><
0790nobodyさん2008/11/09(日) 21:28:08ID:???
なんでJavaScriptじゃなくてわざわざPHPでやってるのかは置いといて
敬語使ってても「><」が入ると舐め腐ってるようにしか見えないのも置いといて

文字のエンコード確認しろ茄子
0791nobodyさん2008/11/09(日) 21:32:58ID:???
>>790
全然なめてなんかないんですが、
文字のエンコードですか??アップするファイルはSHIFT-JISです。
サーバはxrea使ってるのでわかりません。
0792nobodyさん2008/11/09(日) 21:33:27ID:???
&ie=UTF-8
これは何を意味してんの?
■ このスレッドは過去ログ倉庫に格納されています