【PHP】質問スレッド Part5
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
02/09/11 14:15ID:FWA0CpdU■本家
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-10あたりにきっと誰かが……。
0910nobodyさん
02/11/27 20:15ID:???0911nobodyさん
02/11/27 22:02ID:???safemodeでchmod使おうと思ったら
chmod failed: Operation not permitted とか言われました。
ブラウザでサーバサイドスクリプトを使ったときって、その他の扱いになるんですか?
サーバ内で処理してるからオーナーじゃないのですか?
あぅー、同アカウント内のスクリプトでしか見れないファイルつーのを作りたいYO
0912nobodyさん
02/11/28 03:36ID:???0913nobodyさん
02/11/28 09:04ID:F7kZgWD6ひょっとしてWin鯖なら\nで良いです。詳しくは分かりませんが。
0914bloom
02/11/28 09:44ID:RNMw186qhttp://www.agemasukudasai.com/bloom/
0915nobodyさん
02/11/28 10:46ID:???\012 でも良いけど。
0916ぽぽんた
02/11/28 13:45ID:nkeBXKRh鯖はLinuxです。確かにCRLFはWinの改行コードですね。
それはそれで大切な議論なのですが、どっちにしろ
文字化けまくります。内部的な問題なのかなぁ(socketモジュール?)
PG細かく組まなくても単純にヘッダをfputs() で送って
fgetsで取得して表示するだけでも化けちゃうんですよね。
file()でURLを指定して読み込むと普通に読めるんですよね。
ちなみに、今回はPOSTデータを送る必要があったので
fsockopen()を使ってhttpヘッダをぶち込んでいます。
相手鯖からのデータを待っていなくちゃいけないのかなぁ。
ブロックモードとか関係ないと思うし・・・・(泣)
0917nobodyさん
02/11/28 14:15ID:PUGto0Nk0918の
02/11/28 16:05ID:BEW1IJeNphp のバージョンは?
4.2.3 だと mb 系を有効にすると一部文字化けが起きるバグありと聞いてます。
0919ぽぽんた
02/11/28 16:18ID:IiE4hQoQphp のバージョンは 3.0.18-i18n-ja-3 です。
日本語処理を i18n系の関数を多用しているので 4に
移行していません。
その 4.2.3 のバグは、 mb系を利用していると起きるバグなのでしょうか?
それとも mb系を有効にしているだけで socketデータ取得時に
(mb系の関数を使わなくても)文字化けが起きてしまうようなものなのでしょうか。
SJISでよくある文字化けの問題であれば SJIS <-> EUC の絡みの
どこかで特定の文字だけ文字化けするはずですよね・・・・
まだ特定の文字だけなのか調べていないのでちょっと調べてみます。
有名どころで「表示」とか。
そういえば、毎回同じ[個所]で文字化けが起きていた気がする・・・・
「特定位置」でなくて「特定文字」という可能性はなぜか考えていませんでした。
0920ぽぽんた
02/11/28 16:56ID:IiE4hQoQ言い訳させてください(爆)
1年ほど前、とあるサイトのページを取得しようと思ったのですが、
cookieを使ってたり、サンプルにあるヘッダ情報だけではうまく
データが取得できなかったので、「カンニング」したんです。
ブラウザ(IE5)で閲覧中の送受信パケットをダンプしてhttpヘッダをコ
ピーしたんです。で、それを編集してPGに組み込んだ、と。
賢明な方なら原因はすぐに分かりますよね。
1年近くずっと悩んでたのにごく簡単な理由でした・・・
httpヘッダが・・・・ HTTP/1.1 に・・・・・
えぇ、笑ってください。いいですとも。かなり大馬鹿ものですよ。
httpプロトコルが違ったのに動いていた方が不思議ですね・・・
HTTP/1.0 と HTTP/1.1 とでは同期の取り方が微妙に違うんでしょうね。
0921nobodyさん
02/11/29 00:25ID:Fg6tlzE0PHP開発技術者育成講座:Zend Studioマスターコース
http://www.zend.co.jp/e-learning/
金額は個人で受講しても手頃だけど、内容がよくわからないので、二の足を踏んでます。
0922nobodyさん
02/11/29 01:17ID:lP9MNlfeと記述すると$naに名前が出力されるものなのですが、、、
echo"ようこそ<br>$naさん";
とすると名前が出力されず、
echo"ようこそ<br>$na<br>さん";
とすると正常に出力されます。
PHPでは変数を使う場合は、
変数の前後に記述しては行けないもの等の決まりなどがあるのでしょか?
PerlでのCGIは理解しているのですが、
PHPは初めてなので混乱しています。
お力をお貸しいただければ幸いです。
0923nobodyさん
02/11/29 01:23ID:lzLul13h書き込んだあとに、再読み込みを押したら同じ内容が
自動的に書き込まれました
つまり、POSTで送信するとその状態が残っているような感じ
なんです。これを回避する方法はないかしら
0924nobodyさん
02/11/29 01:30ID:CsjprMSL× echo "ようこそ<br>$naさん";
○ echo "ようこそ<br>".$na."さん";
0925nobodyさん
02/11/29 01:46ID:CsjprMSLひとつの案として、メッセージを書き込みするページが
開いたとき $_SESSION["kakikomi"] = "mada" にしておいて
書き込むページで
if ( $_SESSION["kakikomi"] == "mada" ) {
kakikomi( $_POST["message"] );
$_SESSION["kakikomi"] == "moukaita";
} else {
echo "二重投稿エラーです。";
}
ってのはどう?
0926の
02/11/29 02:42ID:vqpWO9fR書き込み済んだらリダイレクトして再表示しちゃうのがお手軽かと。
POST の処理ルーチンも簡単にできるし。
---
俺的ポータルサイトを作ろう
http://mysite.ddo.jp/
0927nobodyさん
02/11/29 06:02ID:QnsCph4W0929bloom
02/11/29 08:57ID:Ep+NyYTShttp://www.agemasukudasai.com/bloom/
0930nobodyさん
02/11/29 10:27ID:a3WbsO8Jありがとうございます。
$na = 名前 となる場合
<?echo"<center>{$na}</center><br>";?>
と記述するのが良いのか
<?echo"<center>".$na."</center><br>";?>
と記述するのが良いのか、どうなのでしょう?
どちらでも同じ事なのでしょうか?
0931hmk
02/11/29 10:58ID:+pV4MPpt{$na}では駄目です。${na}です。
0933gn355my0
02/11/29 15:21ID:???<CENTER><?= $na ?></CENTER><BR>
0934nobodyさん
02/11/29 16:51ID:FGwKAXnrhtmlに出力するときはどっちが高速ですか?
(例1)
<?
テスト
?>
(例2)
print"テスト";
0935nobodyさん
02/11/29 17:40ID:???何の意味があるのか小一時間問い詰めたい。
0936nobodyさん
02/11/29 18:02ID:???0937nobodyさん
02/11/29 18:03ID:FGwKAXnr<?
テスト
?>
}else{
print"テスト";
}
a=aの場合と
a=nullの場合と
どちらが表示が速いでしょう
0938nobodyさん
02/11/29 18:21ID:???0939nobodyさん
02/11/29 20:02ID:rdc6a4ct0940nobodyさん
02/11/29 20:24ID:???|・ω・`)
|oωo
|―u'
見守る初心者
0941nobodyさん
02/11/29 20:52ID:FGwKAXnrperlのソースですがphpに訳せる天才はいませんか?
$new=3;
$old=10;
$num1 = 7777;
$num2 = 77;
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
$key = "uhreri";
@key = split(//, $key);
$date_num = sprintf("%02d%02d%02d%02d%02d",$mon +1,$mday,$hour,$min,$sec);
$chcode = ($date_num + $num1) * $num2;
$i = 0;
$chcode =~ s/./sprintf("%02x",ord($&)^ord($key[$i++ % @key]))/ge;
0942nobodyさん
02/11/29 23:24ID:???<? テスト ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=shift_jis"></HEAD>
<BODY></BODY></HTML>
こんなのが出力されるよ!
print"テスト";
テキストで
print"テスト";
と出るよ!
htmlは例1だから答えは例1!
0943nobodyさん
02/11/29 23:29ID:???エラーメッセージが出るけれど、いいの!?
>perlのソースですがphpに訳せる天才はいませんか?
凡人もいるよ!
0944nobodyさん
02/11/30 00:04ID:???$chcode = ($date_num + $num1) * $num2;
$i = 0;
$chcode =~ s/./sprintf("%02x",ord($&)^ord($key[$i++ % @key]))/ge;
これはおかしくない?最初の$chcodeで時間と何かの数字で計算して代入しているのに
また、$chcodeに何かを代入するの?
0945の
02/11/30 01:38ID:tS4FEdrLs/ だから php なら、$chcode = preg_replace(...,,$chcode) ってパターンだな。
書き換えは簡単だけど、正確に読むのはダルいんでパス。
---
俺的ポータルサイトを作ろう
http://mysite.ddo.jp/
0946nobodyさん
02/12/01 03:25ID:2VKLUjr4gdの「imageCopyResampled()」を使いたくて、 gd-2.xにバージョンアップ
しようとして(現在は gd-1.8.3-7)、 RPMパッケージを探したのですが、
ftp://ftp.rpmfind.net/linux/PLD/current/dists/ra/PLD/i386/PLD/RPMS/gd-2.0.1-7.i386.rpm
のようなPLDディストリビューションしかなく、インストール(アップデート)しても
うまくバージョンアップしてくれません。
どこかに別のRPMパッケージ、もしくは上記のもので成功させる方法って
ないでしょうか?
現在はImageCopyResized()を使って画像縮小してるんですが、激しく
荒い画像になってしまいます、、。
0947nobodyさん
02/12/01 10:25ID:iDh7XpXh0949946
02/12/01 10:48ID:2VKLUjr4現在のphp-4.1.2-7.1.6をインストールしたままgd-2.0.1-7をインストール
しようとすると、「libgd.so.1.8はphp-4.1.2-7.1.6に必要です」と言われて
拒否られてしまいます。 強引に入れると確かにapache起動に失敗します。
gd-2.0.1-7のインストールファイルリストを見てlibgd.so.2.0.0だけなので
いやな予感はしていましたが、、、。
今度はPHP関係をまず全てアンインストールして、gd-2.0.1-7から入れると
インストールはできるのですが、php-4.1.2-7.1.6をインストールしようと
すると、「libgd.so.1.8はphp-4.1.2-7.1.6に必要です」と言われて、
今度はPHPがインストールできなくなってしまいます。
私のような素人考えからいくと、「gd-2.xを必要とするPHP4のRPMパッケー
ジがあれば、、」などと考えてしまうのですが、ちょっと的外れでしょうか?
0950nobodyさん
02/12/01 11:46ID:???後でどうなっても知らないけど、
gdのページには、
A very high degree of backwards compatibility
with existing gd 1.x code has been maintained,
at both the source code and binary level.
ってあるから無理やり入れてもよさそう。
libgd.so.1.xにシンボリックリンク張るのを忘れずに。
尚、レジストリの修正は自己責任でお願いします。
0951946
02/12/01 12:08ID:2VKLUjr4ありがとうございます。
つまり、「gd 2.x は、1.x とソースコードもバイナリレベルも似ていて互換性も
保ってます」ってことですね。
最後の2行の意味がよく分からないのですが、libgd.so.1.xにシンボリック
リンクを張るのがどういう意味をなすのでしょう?
レジストリ修正っていうのはPHP4のRPMパッケージをいじるっていうこと
でしょうか? 、、、ちょっと私にできるかどうか、、、。
0952nobodyさん
02/12/01 12:44ID:EpowQ2LG無料ホムペスペースのsendmailは
PHP4で使えますでしょうか?
0953nobodyさん
02/12/01 12:49ID:Ympa0jkR当然使えます。sendmailもqmailも設定ひとつです
0954952
02/12/01 12:53ID:???早速、スクリプト探してきます!!
0955初心者
02/12/01 15:01ID:IYJM+D46自分も丁度気になっていたところ。
ob_start("ob_gzhandler");
で良いと思うんですが。
0956nobodyさん
02/12/01 15:53ID:???0957nobodyさん
02/12/01 17:53ID:???0958nobodyさん
02/12/01 18:04ID:???今のPHPの設定を目を皿にして確認してみよう。
ただし、PHPでgzipコンプレスすると正常動作しなくなるスクリプトが少なからず出てくる。
(クライアント側ブラウザに圧縮されたバイナリデータが展開されてしまう)
スクリプトを修正すればなんとかなるとは思うが。
そろそろ新スレか?
0959nobodyさん
02/12/01 19:13ID:???0960nobodyさん
02/12/01 22:40ID:???0961nobodyさん
02/12/02 00:30ID:eE3XhUq7foreach($_POST as $key => $value){
$_POST[$key] = str_replace("\n", "", $value);
}
↑のように書くと意図したように動かない
foreach($_POST as $key => $value){
$_POST[$key] = str_replace("\n", "", $_POST[$key]);
}
↑のように書くとちゃんと動く
同じように見えるんだけどなにか違うの?
\nとかじゃなくてただのアルファベットとかだとちゃんと前者でもちゃんと動作するんみたい。
何故?誰か教えて。
0962nobodyさん
02/12/02 01:50ID:???\nじゃなくて、\r\nに変更したけど。
0963nobodyさん
02/12/02 04:08ID:???Part3 が立ったのは 980
Part4 が立ったのは 999
Part5 が立ったのは ……HTML 化待ちで、漏れは読めない
0964961
02/12/02 04:43ID:eE3XhUq7試してみた。
$_POST[$key] = str_replace("\r\n", "", $value);
だけだと成功
$_POST[$key] = str_replace("\r\n", "", $value);
$_POST[$key] = str_replace("\n", "", $value);
$_POST[$key] = str_replace("\r", "", $value);
3つ書くと失敗
後ろの$valueを$_POST[$key]に変更すると成功
php-4.2.2なんだけどなー。なんでだろう。
0965nobodyさん
02/12/02 09:45ID:vgT4ee9m正規表現
0966nobodyさん
02/12/02 23:01ID:2uvkz+AIそこで祝日(成人の日)の判定が分からないです。
1月第2月曜日ってのはどうやって判定したらよいのでしょう?
教えてください。
0967nobodyさん
02/12/02 23:34ID:???第二日曜が14日なら第二月曜は8日。
0968ノウバディ
02/12/02 23:56ID:yCCT0waLCGIBOY同様の訪問回数、初回訪問日などを
誰かつけてください。
おながいします、。
0969nobodyさん
02/12/03 00:53ID:F9qCnjkA>>967さんありがとうございます。
簡潔に書けそうなすばらしいロジックですね。
ただ、第二日曜を判定するロジック(書き方)が分からないのです。
教えてクンですみません。PHP4でのこの辺の書き方教えていただけないでしょうか。
0970nobodyさん
02/12/03 01:26ID:Q35J3m80$first_day = getdate($timestamp);
if($first_day[wday] == 0)
$second_monday = 8;
else
$second_monday = 15 - $first_day[wday];
かな?
1日が日曜日なら第2月曜は8日、それ以外なら2週間後の今日から
最初の日曜日までの日数を引いた日、っていう感じ。
たぶん合ってると思う。
0971nobodyさん
02/12/03 01:28ID:???まあ、そんな感じで。
0972nobodyさん
02/12/03 01:29ID:???$month = 1;
$the_day = happy_monday($year,$month);
echo $the_day;
function happy_monday($year,$month){
$weekday_1st = date("w",mktime(0,0,0,$month,1,$year));
$weekday_1st == 0 ? $sunday_1st = 1 : $sunday_1st = 8 - $weekday_1st;
$monday_2nd = $sunday_1st + 8;
return $monday_2nd;
}
0973nobodyさん
02/12/03 12:11ID:???レッツPHPの人にお頼み申せ。
0974nobodyさん
02/12/03 16:07ID:F9qCnjkA>>970,972 ありがとう。休日(ダイヤ)か平日(ダイヤ)かの判定ができるようになりました。
こんな感じです。
//-----------------------------------------
//休日か平日の判定
function is_holiday($year,$month,$day){
$ls_day = sprintf("%02d/%02d",$month,$day);
$sflg = "weekday";
$holiday = array("01/01","02/11","03/21","04/29","05/03","05/05","07/20","09/15","09/23","11/03","11/23","12/23","12/30","12/31","01/02","01/03");
for ( $i = 0; $i < count($holiday); $i++ ) {
$holiday[$i] = holiday_shift($holiday[$i] . "/" . $year );
}
$holiday[16] = "01/" . sprintf("%02d",happy_monday($year,1));//成人の日
$holiday[17] = "10/" . sprintf("%02d",happy_monday($year,10));//体育の日
for ( $i = 0; $i < count($holiday); $i++ ) {
if ($ls_day == $holiday[$i]) {
$sflg = "holiday";
break;
}
}
return $sflg;
}
//-----------------------------------------
//ハッピーマンデー対応
function happy_monday($year,$month){
$weekday_1st = date("w",mktime(0,0,0,$month,1,$year));
$weekday_1st == 0 ? $sunday_1st = 1 : $sunday_1st = 8 - $weekday_1st;
$monday_2nd = $sunday_1st + 8;
return $monday_2nd;
}
0975nobodyさん
02/12/03 16:07ID:F9qCnjkA//-----------------------------------------
//祝日が日曜日の時には月曜日が休み
function holiday_shift($in){
$t = split("/",$in);
if(date("w",mktime (0,0,0, $t[0], $t[1], $t[2])) == 0) {
$holiday = sprintf("%02d/%02d",$t[0],$t[1]+1);
} else {
$holiday = sprintf("%02d/%02d",$t[0],$t[1]);
}
return $holiday;
}
0976nobodyさん
02/12/03 19:51ID:R/9PtWVbたとえば
<html><body><table><tr><td>文章</td></tr></table></body></html>
このようなファイルで<table>〜</table>までを取り出したいときにはどうしたら良いでしょうか?
この場合は
<table><tr><td>文章</td></tr></table>
を取り出せればいいのですが
宜しくお願いします。
0977nobodyさん
02/12/03 20:18ID:PNt+pMvy<table>から</table>にマッチする正規表現で抜いてくればいいんじゃない?
0978nobodyさん
02/12/03 23:16ID:vkKrixb3インストールしている途中でPHP.iniのインクルードパスのところで
いきづまってます。PHP.iniのインクルードバスがコメントになってる
からです。どうすればいいのですか?
Linux7.3です。LinuxもPHPも素人です。
7.3にPHPは既に入ってました。
<? phpinfo(); ?>は動作しました。
0979nobodyさん
02/12/04 00:21ID:???0980うえ〜ん
02/12/04 05:35ID:XOwW5my4全っ然わからん。PHP歴4時間・・・
-----test.php
<HTML><BODY>
<?php
$filename = "/home/hoge/hoge.dat";
$fp = fopen ("$filename","r");
flock ($fp,1);
$contents = fread($fp,filesize($filename));
flock ($fp,3);
fclose ($fp);
print $contents;
?>
</BODY></HTML>
0981nobodyさん
02/12/04 06:23ID:???0982nobodyさん
02/12/04 06:25ID:???0983nobodyさん
02/12/04 06:35ID:???0984nobodyさん
02/12/04 07:28ID:???0986nobodyさん
02/12/04 10:57ID:???0987
02/12/04 14:04ID:xBoKBvCa$fp = fopen ($filename,"r");
0988nobodyさん
02/12/04 14:11ID:???0989ageてもいい?
02/12/04 14:51ID:???取得できるのかなぁ?
0990nobodyさん
02/12/04 14:52ID:???0991nobodyさん
02/12/04 16:10ID:???0993980 (そろそろ新スレ?)
02/12/04 16:26ID:XOwW5my4けど・・・まだダメなんです。
教えて頂いたとおりに、
$filename = "./home/hoge/hoge.dat"; とか
$filename = "home/hoge/hoge.dat"; と
やってもダメでした。
ただエラーが表示されるようになって、
「No such file or directory 」といわれます。
読んだままファイルの指定の仕方が間違ってるみたいなんですが・・・
で、ご指摘頂いた /home とルートからフルパスで書くところをhome/と
していますが、どういった理由なのでしょうか?
それともそんな書き方はもともと出来なくて、全て相対パスで書くべき
なのでしょうか?
http://www.php.net/manual/ja/function.fopen.php
を見ると $fp = fopen ("/home/rasmus/file.txt", "r");
のようにルートからフルパスで書いてあります。
test.phpとhoge.datを同じディレクトリに入れて
$filename = "./hoge.dat"; としてみたら、エラーは全く出ない
のですが、
<HTML><BODY></BODY></HTML>
とだけ見えて内容を全然読んでくれませんでした。
ちなみに >>987 さんの言うとおりに4行目はこうしてみました。
$fp = fopen ($filename,"r");
質問ばかりで申し訳ないのですが、ご教授願います。
>>989 オレも知りたい・・・
0994989
02/12/04 16:37ID:???phpinfo 見ると、、、Server API が、CGI になってた(鬱
どやってApacheモジュールにするのかなぁ?
0995nobodyさん
02/12/04 16:50ID:???Apacheモジュール版なら
$HTTP_SERVER_VARS['PHP_AUTH_USER'], $HTTP_SERVER_VARS['PHP_AUTH_PW']
とか
$_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']
で取れるだろ。
>>993
で、/home/rasmus/file.txt は有るの?
0997995
02/12/04 17:00ID:???http://pc.2ch.net/test/read.cgi/php/1038988518/l50
0998nobodyさん
02/12/04 17:06ID:???長らくお待たせしました。やっと1000取り合戦場になるようです。
\∧_ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、やっぱやんなきゃダメか? ,,、,、,,,
/三√ ´�兪)/ \________________ ,,、,、,,,
/三/| ゚U゚|\ ,,、,、,,, ,,、,、,,,
,,、,、,,, U (:::::::::::) ,,、,、,,, \今更やる気でねぇ…………よ。。。/
//三/|三|\ ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
∪ ∪ ( ;) (ι ) ( ;) )
0999nobodyさん
02/12/04 17:09ID:???1000nobodyさん
02/12/04 17:11ID:???,,、,、,,,  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\ \∧_ヘ
,,、,、,,, やっぱや〜めたっと > / \〇ノゝ ,,、,、,,,
,,、,、,,, ________/ /三√ ゚д゚)
/三/| ゚U゚| \
\エーーーーーーーッ!?/ ,,、,、,,, U (:::::::::::)∪ ,,、,、,,,
∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧ //三/|三|\
( ) ( ) ( ) ) ∪ ∪
∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧,,、,、,,, ,,、,、,,,
( ) ( ) ( ) ( ) ,,、,、,,,
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。