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

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

■ このスレッドは過去ログ倉庫に格納されています
00019092006/06/23(金) 01:59:03ID:lPdqGX0Z
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。

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

過去スレは>>2
0554nobodyさん2006/06/30(金) 23:59:47ID:???
>>544
それはCSVじゃー!

>>545
そりゃMVPやんけー!

>>547
それNECやん!NECつったらPC-100やん?

>>554
マ板でやれ
0555nobodyさん2006/07/01(土) 00:10:38ID:???
>>553
>537-538です。うまいことできました。
ありがとう。

<?
$tp = <<<__HTML
<p>%1\$s - <a href="%1\$s" title="%2\$s">%1\$s</a></p>
__HTML;

$ato = array (
"1.php" => "1.phpへ",
"2.php" => "2.phpへ",
"3.php" => "3.phpへ",
"4.php" => "4.phpへ",
"5.php" => "5.phpへ"
);
foreach ($ato as $link => $title) {
printf ($tp, $link, $title);
}
?>
0556nobodyさん2006/07/01(土) 01:07:56ID:???
>>544
名機ではあるが京セラの血が濃いPC-100を挙げるのは...
0557nobodyさん2006/07/01(土) 01:59:51ID:???
CentOS 4.3 に yum で PHP php-4.3.9-3.12 をインストールしています。
PHP Extension をインストールしたいのですが、php-config と mecab-config
がない状態です。phpize は php-devel のインストールでできました。

php-config と mecab-config はどうしたらできるのでしょうか。
よろしくお願いします。
0558nobodyさん2006/07/01(土) 03:10:55ID:???
ソースから入れれば?
0559nobodyさん2006/07/01(土) 09:12:59ID:???
フォームでPOSTしてきた人の$_SERVER['REMOTE_ADDR']を取得したところ、
毎回「192.168.1.xxx」が返ってきてしまいます。(全国のいろんな人がやっても同じ)
でもこれって自分(鯖)の側のネットワーク内部のIPアドレスですよね?

どうして$_SERVER['REMOTE_ADDR']でこんな戻り値になっちゃうのでしょう??
ちなみに鯖はXREAです。
0560nobodyさん2006/07/01(土) 09:14:31ID:???
phpinfo
0561nobodyさん2006/07/01(土) 10:28:33ID:???
>>560
ん?
0562nobodyさん2006/07/01(土) 10:56:26ID:???
>>560
が?
0563nobodyさん2006/07/01(土) 10:57:09ID:???
>>560
ぐ?
0564nobodyさん2006/07/01(土) 11:07:49ID:???
>>560
ぐ?
0565nobodyさん2006/07/01(土) 13:15:22ID:???
>>560
ぎ?
0566nobodyさん2006/07/01(土) 13:46:47ID:???
>>559
サーバー(自分自信)のリモートアドレスを取得してきている。

$REMOTE_ADDR = getenv("REMOTE_ADDR");
0567nobodyさん2006/07/01(土) 15:34:43ID:???
>>566
普通はクライアント側のIPアドレスを返す筈なのに、なんで?って話だと思うが。
まぁ、xreaはそういうものなのかも試練。
0568nobodyさん2006/07/01(土) 17:12:26ID:???
>サーバー(自分自信)のリモートアドレスを取得してきている。
嘘こくな
0569nobodyさん2006/07/01(土) 18:15:10ID:???
>>566は嘘つき!
0570nobodyさん2006/07/01(土) 18:20:26ID:???
うそつき・・・(by 緒川たまき)
0571nobodyさん2006/07/01(土) 20:29:48ID:???
PHP+JavaScriptはここで聞いても大丈夫なのでしょうか?
05725712006/07/01(土) 20:33:45ID:???
すみません、どなたかお答えいただければ嬉しいです。

チャットを作っているのですが、発言/リロードを押すと下のフレームもリロードさせたいのですが
どのようにすればうまく動作しますか?

上はtopFramem下はmainFrameです。

<script type="text/javascript">
<!--
function reload(){
parent.mainFrame.location.href='logpage.php';
}
-->
</script>

<input name="Submit" type="submit" id="Submit" value="発言/更新" onclick="reload()" />

PHPで、
if($_POST['Submit'] == "発言/更新"){
書き込み処理
}

このように記述しています。


テキスト欄に入力して発言をすると、ファイルにログが書き込まれフレームは更新されず、
空白の状態でボタンを押すと更新されます。
発言したうえで更新したいのですが、どのようにすれば良いのでしょうか?
0573nobodyさん2006/07/01(土) 20:42:48ID:???
>>572
普通そういう場合はformタグのtaeget属性を下側フレームにして
書き込み処理とログ表示を一括して下側のフレームで行い、
送信押されたらフォームに入力されたテキストをJavaScriptで消すってもんじゃないの?

その書き方だと発言時は書き込み処理が終わる前にリロードしてしまう気がする。
05745722006/07/01(土) 20:46:32ID:???
>>573
上の書き込みしたデータを下のフレームに持ってくるのはできるのですか?
0575nobodyさん2006/07/01(土) 20:53:10ID:???
>>574
スネーク、まずはどこでもいいからその辺のフレームチャットを見てくるんだ。
あんまり変な質問をしていたら回答者が呆れて晩御飯に出かけてしまうぞ。
0576nobodyさん2006/07/01(土) 21:05:39ID:???
>>575
見たのですが、さっぱりなんですよ。
0577nobodyさん2006/07/01(土) 21:09:54ID:???
>>576
スネーク、問題はPHP以前のところにあるようだ。このままでは板違いになってしまうぞ。
早急にHTMLをしっかり勉強し直してPHPに関する質問に切り替えるんだ。
05785592006/07/01(土) 21:24:54ID:???
>>567
誰かXREAでアカウント持ってる人、実験してみてもらえませんかね??
ちなみに他の鯖(XREA以外)で同じスクリプトを走らせたところ、
当然ながら問題なくリモートアドレスを取得できました。
0579nobodyさん2006/07/01(土) 21:39:45ID:???
>>576
phpだけでやれば?
0580nobodyさん2006/07/01(土) 21:47:19ID:???
>>578
ちったぁ検索したか?
餅は餅屋。XREA のことは XREA に聞け。
http://sb.xrea.com/showthread.php?threadid=6646

ちなみに、手元で phpinfo() を表示させてみたら REMOTE_ADDR は
グローバル IP アドレスが入ってたよ? http の場合ね。https は未確認。
0581nobodyさん2006/07/01(土) 21:49:59ID:???
>>580 の追記。
https だったらプライベート IP アドレスでした。
これで納得かい?
0582nobodyさん2006/07/01(土) 22:05:11ID:???
$_SERVER["REMOTE_HOST"]
は空みたい。
0583nobodyさん2006/07/01(土) 22:07:41ID:???
gethostbyaddr($_SERVER['REMOTE_ADDR']は?
0584nobodyさん2006/07/01(土) 22:33:18ID:???
$_SERVER["SERVER_ADDR"],
$_SERVER["REMOTE_ADDR"],
$_SERVER["REMOTE_HOST"],
getenv("REMOTE_ADDR"),
gethostbyaddr($_SERVER["REMOTE_ADDR"])
で
$_SERVER["REMOTE_HOST"]
以外は期待通りの動作

>>559か使ってるサーバ固有の問題
0585nobodyさん2006/07/01(土) 23:01:00ID:???
>>584
> $_SERVER["REMOTE_HOST"]
> 以外は期待通りの動作
期待通りも何も、REMOTE_HOST は必ずしもセットされるとは限らないから
別に期待通りじゃない、とは思わない。
負荷軽減のために逆引きしてないサーバは腐るほどある。
REMOTE_HOST が未定義だったら REMOTE_ADDR を resolve するのは
ネットワークプログラミングでは基本ですが?
0586nobodyさん2006/07/01(土) 23:19:21ID:???
なんで俺が揚げ足とられてんの??
0587nobodyさん2006/07/01(土) 23:19:58ID:???
ループ処理で配列に要素を追加しているのですが、希望通りの動作をしません。

具体的には、array('key1' => 'value1', 'key2' => 'value2') という配列を作成したいのですが、
array(array('key1' => 'value1'), array('key2' => 'value2')) という配列になってしまいます。

追加処理はこんな感じです。
for ($i = 0;$i < $count;$i++) {
$add[] = array("key{$i}" => "value{$i}");
}

よろしくお願いします。
0588nobodyさん2006/07/01(土) 23:20:01ID:???
http://example.com/
と書かれたときに、これにそのURLのリンクを貼りたいのですが、
どのようにすれば良いのでしょうか?
0589nobodyさん2006/07/01(土) 23:21:50ID:???
>>589
通過処理どおりの動作をしているようにみえるが
0590nobodyさん2006/07/01(土) 23:23:05ID:???
>>587
お前はわざとやってるのか?

add["key{$i}"] = "value{$i}";

だろうが。
0591nobodyさん2006/07/01(土) 23:24:14ID:???
$add["key{$i}"] = "value{$i}";  な
0592nobodyさん2006/07/01(土) 23:25:11ID:???
>>588
/(^|[^=;])(https?:\/\/[!#\$%&'()*+,\-.\/:;=\?@_~\w]+)/
0593nobodyさん2006/07/01(土) 23:26:16ID:???
訂正
(https?:\/\/[!#\$%&'()*+,\-.\/:;=\?@_~\w]+)
0594nobodyさん2006/07/01(土) 23:30:40ID:???
preg_replace("/(http\:\/\/[\w\.\~\-\/\?\&\=\;\#\:\%]+)/",
         "<a href=\"\\1\" target=\"_blank\">\\1</a>", $url)
0595nobodyさん2006/07/01(土) 23:34:57ID:???
>>588

if ($url == "http://example.com/";){
  echo "<a href=\"http://example.com/\">http://example.com/<;/a>";
}
0596nobodyさん2006/07/01(土) 23:36:09ID:???
>>590-591
紙紙紙紙!!!11

だいちゅき
0597nobodyさん2006/07/01(土) 23:38:03ID:???
>>596
はぁ?これくらいはできて平民なんだよ。
0598nobodyさん2006/07/01(土) 23:40:12ID:???
>>592-294

arigatougozaimasu
0599nobodyさん2006/07/01(土) 23:51:18ID:???
>>598
こいつ、かわいいなぁ
0600nobodyさん2006/07/02(日) 00:41:34ID:oZjla2sM
txtファイルの空行を探して削除したいのですが
どうすればいいのでしょうか
0601nobodyさん2006/07/02(日) 00:48:12ID:???
ループとかでチェックしていくしかないんじゃ?
知らないけど。
0602nobodyさん2006/07/02(日) 00:53:26ID:???
>>595

if ($url == "http://example.com/";){
  echo '<a href='.$url.'>'.$url.'</a>';
}
0603nobodyさん2006/07/02(日) 00:56:33ID:???
>>600
正規表現で改行が2個以上連続してるのを見つけ出してジェノサイド。
0604nobodyさん2006/07/02(日) 01:02:19ID:???
文字列から@〜@でくくられている部分を探して、@〜@の「〜」の部分.gifに置き換えたいのですが
どのようにすれば良いのでしょうか?

@a@⇒<img src=a.gif>
@phpkamo@⇒<img src=phpkamo.gif>
0605nobodyさん2006/07/02(日) 01:09:46ID:???
preg_replace('/\@([a-zA-Z0-9\-_~]*)?\@/', '<img src="$1.gif">', $str);
0606nobodyさん2006/07/02(日) 01:18:43ID:oZjla2sM
>>603

正規表現で改行2個は

ereg("^$", $var)

でよいでしょうか。
0607nobodyさん2006/07/02(日) 01:22:56ID:W09rfuPj
$_FILESでファイルのアップロード処理をしているのですが、ファイルタイプを調べてセキュリティ上危険だと
考えられるファイル(例えばCGI)の拡張子を「txt」にしたいと思います。

アップロードするファイルの種類を調べるにはどうしたら良いでしょうか?
ユーザが偽装できてしまうようではセキュリティ的にマズいですし・・・

やはりアップロードファイルの拡張子を調べるのが一番なのでしょうか?


それから、圧縮ファイルを展開する関数ってあります?
0608nobodyさん2006/07/02(日) 01:27:10ID:???
>>607
ファイルタイプ
http://jp.php.net/manual/ja/features.file-upload.php

圧縮ファイル
http://jp.php.net/manual/ja/funcref.php
の一覧からお好きなものをチョイス
0609nobodyさん2006/07/02(日) 01:41:16ID:W09rfuPj
>>608
>ファイルの MIME 型。ただし、ブラウザがこの情報を提供する場合。 例えば、"image/gif" のようになります。
>この MIME 型は PHP 側ではチェックされません。
>そのため、 この値は信用できません。

これでも大丈夫かな?
0610nobodyさん2006/07/02(日) 01:41:40ID:???
>>606
$nl = "\r\n";
ereg_replace("$nl($nl)+", $nl, $text);
preg_replace("/^$nl/m", "", $text);

^$はマッチ幅ナシね。
0611nobodyさん2006/07/02(日) 01:53:12ID:???
>>609
大丈夫なのか否かってのは何を作りたいかによるから何とも言えない。
確かに、hidden パラメータとかと同じで、改竄はありうる。
しかし、そのファイルが例えば JPEG か否かをちゃんと判断するには
プログラマがそのファイルの内容・構造をチェックして判断しなければならない。
その為には、そのファイルのフォーマットの仕様・特徴(SOI APP …など)
を知っていないと判断のプログラムが書けませんが
それが出来るなら、自分でチェックすれば良い話です。
簡易に済ませたかったら system で file を呼ぶとかも考えられますけど…
0612nobodyさん2006/07/02(日) 01:58:42ID:oZjla2sM
>>610
ありがとうございます

$text = 'log.txt';
$nl = "\r\n";
for($i = 0; $i < count($line); $i++){
if( ereg_replace("$nl($nl)+", $nl, $text) ){
preg_replace("/^$nl/m", "", $text);
break;
}
}

こう作ってみたんですけど、改行抜けません
おかしい所教えてもらえませんでしょうか

0613あああ ◆rHbUqJDbds 2006/07/02(日) 02:09:51ID:???
あ
0614nobodyさん2006/07/02(日) 02:14:51ID:???
サンプル■1234
サンプル■1234■5678

の場合、最初の■以降の文字を消したいのですが、
preg_replace('/■?', '', $str);

こうしたのですがうまくいきません。
どこが間違っているのでしょうか
0615nobodyさん2006/07/02(日) 02:17:45ID:???
>>612

preg_replace("/^$nl/m", "", $text);
↓
$text = preg_replace("/^$nl/m", "", $text);

つーか、せっかくpreg使ってるのに何でeregもつ買ってるの?
pregだけでいいんでない?


$text = file_get_contents("test.txt");
$nl = "\r\n";
$text = preg_replace("/^$nl/m", "", $text);

print($text); //確認

06166142006/07/02(日) 02:19:55ID:J/w8BCAt
すみません、追記です。
方向が変わってしまって^^;

サンプル■1234■5678

これを、最初の■で区切ることはできますか?

サンプル
■1234■5678

こうわけたいのですが
0617nobodyさん2006/07/02(日) 02:30:21ID:???
>>616
俺初心者だからかなり馬鹿っぽいやり方かもしれないけど

$sample = "サンプル■1234■5678";
$line = explode("■", $sample);

foreach($line as $key => $value)
if ($key == 0) $hoge = ($value."\n");
else $hoge .= ("■".$value);

print($hoge);

こんなんはどうかな。
0618nobodyさん2006/07/02(日) 02:30:46ID:???
>>612
もし配列で持ってるなら "" な項を捨てりゃいいだけだよ

>>616
都合のいい方使って好きなように。

$text = "サンプル■1234■5678";
list($mae, $usiro) = explode("■",$text,2);
$usiro = "■".$usiro;
echo "explode: $mae, $usiro\n";

preg_match("/^(.*?)(■.*)$/", $text, $capture);
echo "preg_match: $capture[1], $capture[2]\n";
06196172006/07/02(日) 02:34:46ID:???
うおやっぱ馬鹿丸出しやん・・・

>>618
参考になります!
0620nobodyさん2006/07/02(日) 04:04:38ID:???
<frameset rows="100,*" cols="*" framespacing="1" frameborder="yes" border="1">
<frame src="top.php?id=<? echo $_GET['id'];?>" name="topFrame" scrolling="Yes" id="topFrame" title="topFrame" />
<frame src="logpage.php?id=<? echo $_GET['id'];?>" name="mainFrame" id="mainFrame" title="mainFrame" />
</frameset>

この場合で各フレームのURLを見たところ、?id=がなかったのですが
これでは無理なのでしょうか?
06216202006/07/02(日) 04:05:08ID:???
ちなみに、index.php?id=1でためした場合です
0622nobodyさん2006/07/02(日) 04:11:06ID:???
PHPでの数値をJavaSfcriptで出力ってできませんか?

$abs = 30;

setTimeout("location.href='abc.php'",1000*<? echo $abc;?>);
0623nobodyさん2006/07/02(日) 04:28:26ID:???
>>620
それでできるよ。
他に問題があるんでしょ。
0624nobodyさん2006/07/02(日) 04:32:06ID:???
>>622
PHP は HTML を出力するに過ぎない。
その出力する HTML に変数の値が埋め込まれた JavaScript が書かれれば良いだけ。
言っている意味分かる?
0625nobodyさん2006/07/02(日) 06:15:41ID:???
>>622
$abs != $abc
06266222006/07/02(日) 09:39:02ID:???
>>624
つまり、一気にJavaScriptを書き出せば良いのでしょうか?

>>625
すみません、両方$abcでお願いします
06276222006/07/02(日) 09:44:38ID:???
とりあえず

<?
echo "<SCRIPT LANGUAGE=\"JavaScript\">";
echo "<!--";
echo "setTimeout(\"location.href=logpage.php?id".$id."\",1000*10)";
echo "parent.topFrame.document.form.com.value=\'\'";
echo "-->";
echo "</SCRIPT>";
?>

としてみたところ、結果は同じでした・・・
どうすれば良いのでしょうか
06286222006/07/02(日) 09:57:28ID:???
すみません、解決しました。
0629nobodyさん2006/07/02(日) 09:57:31ID:???
>>627
そもそも「何と同じ」で、期待していたそれと異なる結果とは何?
0630nobodyさん2006/07/02(日) 09:58:14ID:???
出力されたJavaScriptをよく見ろ
0631nobodyさん2006/07/02(日) 10:24:55ID:???
(´・ω・`)
http://question.excite.co.jp/kotaeru.php3?q=2250330
http://pc8.2ch.net/test/read.cgi/hp/1151633256/53
0632nobodyさん2006/07/02(日) 12:02:59ID:???
サイテー
0633nobodyさん2006/07/02(日) 12:12:43ID:???
$_SESSION['var'] = "aaa";
echo $_SESSION['var'];

これって携帯でも表示される?
0634nobodyさん2006/07/02(日) 13:17:57ID:???
cookieダメならSID足したら?
0635nobodyさん2006/07/02(日) 13:44:17ID:???
$str='サーバサイド技術';
print(mb_convert_kana($str,'KV'));
↑の結果が「サーバサイド技術」のままで、全角に変換されないのですが
PHPはFC5のVersion 5.1.4です。
0636nobodyさん2006/07/02(日) 14:00:21ID:???
またお前か。
0637nobodyさん2006/07/02(日) 14:03:50ID:???
>>635
文字コードを指定してやって。
print(mb_convert_kana($str,'KV','euc-jp'));
みたいに。
0638nobodyさん2006/07/02(日) 14:28:22ID:???
>637
ありがとうございます。うまくいきました。

>636
そんなこと言わずにおつきあい下さいな
0639nobodyさん2006/07/02(日) 14:34:36ID:???
636は俺と付き合ってるからダメだ
0640nobodyさん2006/07/02(日) 14:42:29ID:???
おかしいな。俺と付き合ってるはずなんだが・・・?
0641nobodyさん2006/07/02(日) 14:44:45ID:???
まてまて、俺だ
0642nobodyさん2006/07/02(日) 15:11:01ID:???
Macのsafariで \と_が文字化けするために
自作PHPがsafariの場合上手く動作しないのですが、
よい回避策ないでしょうか?

ttp://www.sodan.ecc.u-tokyo.ac.jp/2004/FAQ/faq52-20040330.shtml
06436362006/07/02(日) 15:19:45ID:???
あらら、3つ又がばれちゃったみたいね。
0644nobodyさん2006/07/02(日) 15:27:39ID:???
>>642
そのサイトにUTF-8なら問題ないと書かれているのに何故そうしない?
0645nobodyさん2006/07/02(日) 15:36:09ID:???
下手にUTF使ったら別の状況で問題が発生するだけ
0646nobodyさん2006/07/02(日) 17:31:55ID:YHlCRRoc
掲示板などのデータを楽をしてシリアライズ保存しまう人って多いいのでしょうか?
シリアライズは便利で高速そうですが一度に全ての変数をメモリに乗せてしまう事になるなど
多少のデメリットもあるようですが、みなさんはどう考えられてますか?
0647nobodyさん2006/07/02(日) 17:51:29ID:???
>>646
多いかどうかはわからないけどシリアライズはかなり便利。
俺もよく使ってる。
掲示板のログ全部とかはさすがに入れないけども
要は工夫次第。
0648nobodyさん2006/07/02(日) 17:55:10ID:???
テキストファイルから任意の行だけ読み込む事はできますか?
ファイルポインタとかをどのように指定して良いのか分かりません。
0649nobodyさん2006/07/02(日) 18:53:00ID:???
何行目でやれば?
0650nobodyさん2006/07/02(日) 18:54:27ID:???
file関数で配列にぶち込んで行指定
0651nobodyさん2006/07/02(日) 19:11:02ID:???
レスありがとうございます。

>>649
すいません。よく分かりません。orz

>>650
負荷が気になるのですが、そうするのが一般的なのでしょうか。
0652nobodyさん2006/07/02(日) 19:39:02ID:???
データ量にもよるし。
任意ってのが例えばランダムで選択されるのか
ある文字列がある場合なのか
どのような条件かにもよると思う。
0653nobodyさん2006/07/02(日) 19:39:49ID:???
>>651
ていうか
具体的に何をやりたいのか
いっちゃいなよYOU!
■ このスレッドは過去ログ倉庫に格納されています