【PHP】質問スレッドpart16【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/04/07 01:06ID:HTcWOpWf上級者用や雑談スレを立てたくなった場合は後から適宜立ててください。
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ及び注意事項等は、 あふぉが居なけりゃ>>2-5
0153nobodyさん
04/04/13 14:05ID:???下記のような方法を取っていたのですが、
これをphpで行う場合、multisortでは1項目でのソートしか出来ないと
マニュアルに記述されていますが、どのような処理でなら可能でしょうか?
@DATA = sort { (split(/,/,$b))[1] <=> (split(/,/,$a))[1] || (split(/,/,$a))[2] <=> (split(/,/,$b))[2]; } @DATA;
0154nobodyさん
04/04/13 14:37ID:Dw9h1MU+わかるかたいませんか?
0156nobodyさん
04/04/13 14:55ID:???$_SERVER[PHP_SELF] -> $_SERVER['PHP_SELF']
$_POST[url] -> $_POST['url']
0157nobodyさん
04/04/13 15:11ID:Dw9h1MU+php.iniですか・・・
>>156
やってみましたが動作しません。
エラーも出ずボタンを押しても無反応です。
0159nobodyさん
04/04/13 15:33ID:7nSUeYQs0160nobodyさん
04/04/13 15:39ID:7nSUeYQs0162nobodyさん
04/04/13 15:57ID:Dw9h1MU+これと同じように指定したページそのものを
表示したいのですが。
みなさん>>141で表示されますか?
ちなみにhttp://php.s3.to/net/get1.phpは表示されるので
やっぱりphp.iniなのでしょうか?
0164155
04/04/13 16:09ID:???そうなるとちょい気になるんだが、PHPのバージョンは?
>>163
いやいや、表示されないからお困りなんでしょ(^^;
0166nobodyさん
04/04/13 16:11ID:Dw9h1MU+TESTPAGE<br>
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="GET">
URL: <input type="text" size="60" name="url" value="http://www.yahoo.co.jp">
<input type="submit" value="get"><br>
<?php
if(ereg("^http://",$_GET['url']) && isset($_GET['url'])):
$page = readfile($_GET['url']);
echo "<hr>総バイト数 $page";
endif;
?>
で挑戦してみたところURLは/test.php?url=http%3A%2F%2Fwww.yahoo.co.jpのように
しっかり渡されているようなのですが下にページが表示されない状態です
0167nobodyさん
04/04/13 16:13ID:Dw9h1MU+0168155
04/04/13 16:15ID:???$HTTP_POST_VARS使ってください....
0169nobodyさん
04/04/13 16:19ID:Dw9h1MU+やっぱりバージョンでしたか・・・・
管理者に頼んでUPしてもらいます。
0170nobodyさん
04/04/13 16:27ID:Dw9h1MU+これを使用した場合表示先>>141ならyahooの
アドレスは閲覧者にはどうやっても知られずに済みますか?
表示先のURIを知られたくないのですが・・・
0171nobodyさん
04/04/13 16:33ID:???0172nobodyさん
04/04/13 16:42ID:???ヽ|/
/ ̄ ̄ ̄`ヽ、
/ ヽ
/ \,, ,,/ |
| (●) (●)||| |
| / ̄⌒ ̄ヽ U.| ・・・・・・・・ゴクリ。
| | .l~ ̄~ヽ | |
|U ヽ  ̄~ ̄ ノ |
|  ̄ ̄ ̄ |
0173nobodyさん
04/04/13 16:43ID:???$_SERVER,$_GET,$_POSTなどのスーパーグローバル変数か使えるのはPHP4.1.0以上。
http://php.benscom.com/manual/ja/reserved.variables.php
0174nobodyさん
04/04/13 17:13ID:???日本語版をダウンロードしたら日本語じゃなかった…
0176nobodyさん
04/04/13 17:17ID:gpEMrt78φ(°°) メモ φ(。。) メモ φ(°°) メモ φ(。。)
0177nobodyさん
04/04/13 17:18ID:???http://www.php.gr.jp/
ここのどっかに日本語版あったよ。
0178177
04/04/13 17:19ID:???http://www.php.gr.jp/project/doc/
これだ。
0180nobodyさん
04/04/13 17:50ID:Dw9h1MU+で、結局自分のやりたい事は出来なかったのですが
こういうことは不可能なのでしょうか?
http://○○○/Aというページとhttp://○○○/Bというページがあるのですが
http://○○○/に入るにはユーザー名とパスワードが必要です。
http://○○○/Aを見せるためにユーザー名とパスを入力した状態にしておいたのですが
パス見えなどのソフトを使われユーザー名とパスがばれてしまい見せたくない
http://○○○/Bも見られてしまいました。
ちなみにhttp://○○○/のページは編集出来ません。
そこで考えたのがさきほどの>>141でhttp://○○○/Aをゲットしたページを見せようかと
思ったのですが結局PASSとユーザー名は入れるはめになるので困ってます。
ミラーも無理だろうし・・・
なにかいい方法はないでしょうか?
0181nobodyさん
04/04/13 17:53ID:???バカバカしい・・・ ┐(´д`)┌
0182nobodyさん
04/04/13 18:08ID:???0183nobodyさん
04/04/13 18:39ID:Dw9h1MU+でも必死に色々試した結果でした。
PHPなら出来るかと思い挑戦したのですが
どうやら不可能な問題みたいですね。
ありがとう御座いました。
0184nobodyさん
04/04/13 18:40ID:???>なにかいい方法はないでしょうか?
いい方法を考えるよりも、その制約の多い構造を
見直した方が良い。大体○○○は全部同じで
そんなことしてるのかよ。
0185nobodyさん
04/04/13 18:48ID:???俺はよくわからないんだが・・・
AとBが同じパスワードで見れてしまうのを避けたいんだよね?
Bは編集できるんだから、Bにまた違うアクセス制限かけたらいいんじゃないの?
よく理解してないので見当違いのレスならすまぬ
0186nobodyさん
04/04/13 18:49ID:???>PHPなら出来るかと思い挑戦したのですが
>どうやら不可能な問題みたいですね。
できる。
でも教えたところで意味不明なこと言い始めそうなんで放置。
0187nobodyさん
04/04/13 20:41ID:???if (!isset($_SESSION['register']) || $_SESSIN['register'] != 0){
}
・・・なんですが、issetの前にある!は何の意味なのでしょうか?
お教え下さい。m( _ _ ;)m
0189nobodyさん
04/04/13 20:49ID:???自己レスですが、単なる否定でよいのかなぁ・・・
どういう意味になるのでしょうか?
空白を入れなくても良いのでしょうか?
! isset($_SES・・・ てな感じに・・・
↑
0191nobodyさん
04/04/13 21:00ID:???0192nobodyさん
04/04/13 21:03ID:???:¥・」:\\\\\\\\\
0193187,189です
04/04/13 21:17ID:???0194nobodyさん
04/04/13 22:00ID:???|
|
ぱくっ|
/V\
/◎;;;,;,,,,ヽ
_ ム::::(,,゚Д゚)::| 俺が釣られると思ってんのか!
ヽツ.(ノ:::::::::.:::::.:..|)
ヾソ:::::::::::::::::.:ノ
` ー U'"U'
0195nobodyさん
04/04/13 22:47ID:???Kent-webさんのところのWeb quizのようなPHPスクリプトありますか?
CGIがおけないので、PHPのを探してます。
自分で作れるほどの技量はないので人様のを拝借しようと・・・
0196nobodyさん
04/04/14 00:04ID:???クイズファイルを
問題<>選択1<>選択2<>選択3<>回答
問題<>選択1<>選択2<>選択3<>回答
問題<>選択1<>選択2<>選択3<>回答
(デリミタは見やすくしただけ、タブでいいよ)
こんな風に書いて、file()関数で行ごとに配列に入れて
array_rand()関数でランダムに問題を出す
で、回答用の配列作って、あってたら1、違ってたら0を入れる。
で、最後に出力
こんなもんでいいんじゃね?
0197nobodyさん
04/04/14 01:00ID:???0199nobodyさん
04/04/14 09:22ID:???だったら逝ってくれ
0200nobodyさん
04/04/14 11:20ID:???状況次第とは思いますが、オブジェクト変数等を unset() する事でメモリや実行速度の節約につながる事はあるのでしょうか。
クラスライブラリの取り込みや処理が多いので不要になったオブジェクト変数は unset するべきかどうか迷っているのですが。
今もエンバグしないようにリファレンス参照を行っている場合は unset するようにしています。
0201nobodyさん
04/04/14 13:08ID:kCgzRk8J前の方の文字列を取り出す方法を御伝授ください。
具体的に
あいうえお<br>かきくけこ<br>さしすせそ<br>たちつてと<br>・・・・
の文字列から
3回目の<br>の前まで
あいうえお<br>かきくけこ<br>さしすせそ
を、取り出す方法です。
お願いいたします。 (o*。_。)oペコッ
0202nobodyさん
04/04/14 13:33ID:???$a="あいうえお<br>かきくけこ<br>さしすせそ<br>たちつてと<br>・・・・";
$b=explode("<br>",$a,3+1);
array_pop($b);
echo implode("<br>",$b);
0203nobodyさん
04/04/14 14:06ID:kCgzRk8Jすばやい御回答、ありがとうございました。
感謝です
m(_ _"m)ペコリ
0204nobodyさん
04/04/14 14:50ID:???スクリプト終了時にメモリは自動的に開放されるので、スクリプト中にそれほどメモリを消費していないのであれば、
unset() しない方がパフォーマンスは良かったような気がする。
未然にバグを防ぐために unset() するのは安全なのでいいことだと思うけど。
メモリに関しては、PHP を --enable-memory-limit オプション付きでコンパイルしていれば、 memory_get_usage() を
使って調べるのが確実。
0205nobodyさん
04/04/14 16:11ID:???Webアプリケーション等の場合にはスクリプト実行中にやるよりも、
終了時に自動でさせた場合、HTTPの出力は既に終わったあとの
処理となるので、ユーザにとって結果を受け取るまでの時間が
短いと言う意味でのパフォーマンスは良いが、スクリプト
パフォーマンスとしてはほぼ同等。分け隔てなく一切合財
開放するんで細かくみると若干良いけどね。
0206nobodyさん
04/04/14 16:29ID:rE+vE3GS0207nobodyさん
04/04/14 16:40ID:???0210nobodyさん
04/04/14 20:14ID:???<form action="ses1.php?<? echo strip_tags(SID)?>" method="post">
の echo って必要ですか?無くても動くようですが。
<form action="ses1.php?<? strip_tags(SID)?>" method="post">
にしてはいけないのでしょうか?
URL欄にIDが出てくるのはいやなんですが・・・
よろしくです。
0211nobodyさん
04/04/14 20:29ID:???下のPHPタグには何の意味が?w
さておき、4.2.0以降か、それ以前でtrans-sidが有効になっていれば、必要ないです。
0212nobodyさん
04/04/14 20:51ID:???<?
session_start();
?>
<form action="ses1.php" method="post"> ← .phpの後に何も付けない
どの参考書を見ても
<form action=“ses1.php?<?=SID?>” method=“post”>
とか
<form action="ses1.php?<? echo (strip_tags(SID))?>" method="post">
と書かれているので・・・
PHP4.3.2なのでいらないんでしょうね・・・
0213nobodyさん
04/04/15 01:28ID:???0214nobodyさん
04/04/15 01:49ID:pZEIIwSWブラウザーからのデータの取得は$_POST["message"]などを使うと思います。
でもこれってv4.1.0以降じゃないと使えないですよね?
v4.0.6の場合どうやって取得します?
register_globalsはOffのことも考慮して
$messageは使えないとしてお聞きします。
0216214
04/04/15 02:35ID:???レスサンクス。
あー、アホや自分。
マニュアルは「キーワード」で$_POSTを探していた。
「検索」で探したら一発で出てきた。
$HTTP_POST_VARS['message']
しかも$HTTP_SERVER_VARS['SCRIPT_URI']使っていたから気づけよ(´・ω・`)
0217nobodyさん
04/04/15 03:47ID:???function foo($a){ 【処理】 }
$a = array('x1'=>'x2','y1'=>'y2','z1'=>'z2');
foo($a);
は、参照渡し?
0218nobodyさん
04/04/15 03:59ID:e3RhHgHW0219nobodyさん
04/04/15 04:15ID:???なんかわかりずらいな…さんくすこ。
0220nobodyさん
04/04/15 04:23ID:e3RhHgHW0221nobodyさん
04/04/15 10:03ID:???IMAP関数って Windows では使えないんでしょうか?
0223nobodyさん
04/04/15 10:24ID:NQbEU4pX教えてなさい。お願いします。
0224nobodyさん
04/04/15 10:27ID:???参考になれば・・・
http://www.google.com/search?num=50&hl=ja&ie=Shift_JIS&c2coff=1&q=%83J%81%5B%83g%83%89%83b%83Z%83%8B&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
0225nobodyさん
04/04/15 10:57ID:NQbEU4pXグッジョブ!
_| ̄|○ ガク
0227nobodyさん
04/04/15 11:30ID:+OQgNtC5参照渡しをしたければ
function foo(&$a) {}
にしたほうが将来的にはいいみたいだ
0228nobodyさん
04/04/15 15:20ID:???for ($i=0;$i<$hensuu;$i++){
echo "<select name=test[$i]>\n";
while($row = mysql_fetch_array($res)){
echo "<option value='$row[name]'>".$row["name"]."\n";
}
echo "</select>\n";
んで↓試してみたけどだめでした。
for ($i=0;$i<$hensuu;$i++){
$test[$i] = $HTTP_POST_VARS["test[$i]"];
}
どなたか識者の方お教え下さい
0229nobodyさん
04/04/15 15:38ID:???0231nobodyさん
04/04/15 16:03ID:???そのまま表示させると text/html 以前なのでソースが表示されてしまいます。
なので
$debug = '';
などで出力を配列の中身を入れてから出力させているのですが、
そうすると配列の中身が改行されないで表示されてしまいます。
みなさんはどのようにしているのでしょうか?
googleやマニュアルを2,3時間調べてみましたがわかりませんでした。
function debug などでprint_rしている例や、
$debug .= var_export($str);
などやってみましたが、うまくいきません。
デバッグの説明ページなどにも書いてないです。
PHPの本も3冊位みましたが出ていません...
英語のURLなどでもよいので、何か手がかりを教えて頂ければと思います。
0232nobodyさん
04/04/15 16:23ID:???ごめん、俺頭悪いんで、あなたの状況がいまいちわからん。。。
>text/html 以前なのでソースが表示されてしまいます
ってどういう状態?
>そうすると配列の中身が改行されないで表示されてしまいます
print_rの出力で改行されないって話?
それはブラウザがHTML的にレンダリングしてるからじゃないの?
ソースを見るか、print_rの出力前後に<pre>タグいれるかしたら解決しない?
なんせ理解しきれてないので見当違いなら悪かった。
0233nobodyさん
04/04/15 16:36ID:???説明不足ですみません...
>> text/html以前
というのは、ヘッダーを出す前ということです。
Content-Type : text/html\n\n
を出す前に print_rするとhtmlがソースで出てしまうので、変数にデバッグ情報を格納して
HTMLの中で表示したいという意味です。
print_rみたいなのの内容を変数にいれて、<pre></pre>で囲ってもなぜか、ちゃんと
改行されないのです。
print_rやvar_dump()の結果など変数に入れられないので困っています。
やりたいことは、ただ変数や配列の中身を調べたいだけなのですが...
0234nobodyさん
04/04/15 17:00ID:???>$debug .= var_export($str);
多分、var_export()の第2引数のところをよく読めば解決。
http://www.php.net/manual/ja/function.var-export.php
あとは出力バッファリングを制御して、var_dump使う手もある。
0235nobodyさん
04/04/15 17:03ID:???ただこれはphpinfo自身もヘッダー出力するのでダブって出ちゃうけど、
ブラウザが宜しく表示してくれるので、簡易的には使える。
0236nobodyさん
04/04/15 17:31ID:???$debug .= var_export($str, TRUE);
にしてみました。うまくいってないようです。
引き続き調べてみます。
>>235
> phpinfoに引数与えて、変数のあたりの項だけ出力つうのもあるな。
そんな方法もあるのですね試してみます。
preで表示されない件は、どうやら以下のように指定することで解決したような
感じです。xhtmlとかcssの新しいので仕様が変わったんでしょうか...
<pre style="white-space: pre">
0237nobodyさん
04/04/15 17:36ID:???ふたば(レッツPHP)の画像うpろだに、
携帯からアクセスるることは出来ないのでしょうか?
0239nobodyさん
04/04/15 17:45ID:???0241nobodyさん
04/04/15 18:04ID:???その人にきくのがスジってもんだろ
0242236
04/04/15 18:49ID:???調べたい配列を Debug($array); しているのですが、グローバルで指定してるはずの
$debug_output に何も表示されません。
少なくとも
マニュアルなど見てもこれでOKなはずで、何が悪いのかさっぱりわからないのですが...
どんな原因が考えられるのでしょうか?
少なくとも function Debug called: と表示されなくてはいけないはずなのに
function Debug($tmp)
{
global $debug_output;
$debug_output .= "function Debug called:\n";
$debug_output .= var_export($tmp, TRUE);
}
0243236
04/04/15 18:58ID:???Debug($array); を読んでいる関数の中で global $debug_output;
していなかったためでした...
うぅ、むずかしぃ。
お騒がせしてすみません。
0244nobodyさん
04/04/15 19:03ID:???ついでに。
上手くいったら判ると思うけど、var_dumpの出力と
var_exportの出力とは同じものではないので、
さっきも書いたけどvar_dumpの出力をバッファリングして
処理するつうのも試したら良いよ。
<?php
ob_start();
$ary = array(1,2,3);
var_dump($ary);
$dump = ob_get_contents();
ob_end_clean();
?>
<html><head><title>TEST</title></head>
<body><?php echo $dump; ?></body></html>
0245nobodyさん
04/04/15 22:41ID:???グーグルとかの検索エンジンにはひっかからないですよね?index.phpみたいなの。
でも静的なhtml内に部分的に埋め込んだ場合は、
PHPによる置き換え箇所の文字列も検索にちゃんとひっかかるんでしょうか?
簡単な日記更新用のスクリプト書いて、自動でログを読み込ませようとしてるんですが、
検索にひっかからないようなら、.htmlの完全に静的なファイルを、更新するたびに毎回書きださなきゃと思って。
cgiなら少しはさわったことあるけど、phpはこれからはじめようと思って…。
よろしくおねがいします。
0246nobodyさん
04/04/15 23:11ID:???プログラマならもう少し論理的に考えてみましょう。
htmlファイル、HTMLにPHPを埋め込むタイプ、PHPでHTMLを出力するタイプ。
検索エンジンがこれらのファイルを呼び出すと、HTTPヘッダ部分・ボディ部分が返ってくるわけです。
ボディ部分は出力のタイプによって変化しているわけじゃないのはすぐ分かると思います。
となると、違いがあるとすればヘッダ部分だけになります。
ところが、header()関数というものが存在し、これを用いてヘッダ部分をも統一することができるわけです。
困ったことになりました。>>245さんの質問の前提とも言うべき事が破綻してしまったのです。
いや、まぁグーグルだけを気にするならHELPにそのまんまの答えが書いてあるわけだが。
0247nobodyさん
04/04/15 23:36ID:???>PHPでhtml部分全部表示させた完全に動的なページって、
>グーグルとかの検索エンジンにはひっかからないですよね?
そんなことはないよ。まあロボットの中には拡張子で
動的コンテンツだと思われるものを除いて収集する、
性能の余り良くないものもあったけど。
>でも静的なhtml内に部分的に埋め込んだ場合
ここで前述のコンテンツの作りと「違う場合」と思ってるのは間違った理解。
0248nobodyさん
04/04/15 23:48ID:???プログラマじゃないです、只の素人です。
なのでheader()関数云々などよくわかりませんでしたが、
書き込みを見て色々と検索で調べてみました。
結果、
http://www.sem-research.jp/sem/seo/20030926003954.html
ここなどを見ると僕が思ってたほどの問題はないですねー。
urlに引数を付けないトップページだけ検索にかかればいいし。
どうもありがとうございます。
0250nobodyさん
04/04/16 04:57ID:52nqSZp9眠くて頭が働きません。。。
だれか
http://www.aaa.co.jp/bbb/ccc/ddd/eee
から、www.aaa.co.jp/bbb/ccc/ddd
を、取り出す方法を伝授してださい。
つまらない質問ですみません。
0252nobodyさん
04/04/16 05:07ID:52nqSZp9と、あれやこれやで、夜が明けちゃいました。(*ノ-;*)エーン
■ このスレッドは過去ログ倉庫に格納されています