【PHP】質問スレッドpart27【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
05/03/03 22:41:23ID:???・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
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辺り
0516nobodyさん
2005/04/06(水) 15:51:09ID:???addslashesみたいなのキボン
0517516
2005/04/06(水) 15:52:37ID:???空白(半角スペース)を&nbspに変更する関数はありますか?
0518nobodyさん
2005/04/06(水) 16:27:24ID:???0519nobodyさん
2005/04/06(水) 16:32:27ID:???どうもです。
それをしてもこうなるんですよね。
バージョンの問題か、OSの問題か、php.iniあたりかということですね。
array(1) {
[0]=>
array(4) {
["tag"]=>
string(9) "MOJIRETSU"
["type"]=>
string(8) "complete"
["level"]=>
int(1)
["value"]=>
string(9) "mojiretsu"
}
}
0520nobodyさん
2005/04/06(水) 17:23:20ID:???Linuxでも試してみたけど、
-PHP4.3.10(Linux)/EXPAT 1.95.6
-PHP4.3.10(Linux)/EXPAT 1.95.7
-PHP4.3.11(Windows)/EXPAT 1.95.6
-PHP5.0.4(Windows)/libxml2 2.6.11
全部結果は同様にちゃんと出てる。
0521nobodyさん
2005/04/06(水) 17:31:41ID:???つーか、changelogみたら、PHP5.0.3の
Bug#31139 "XML Parser Functions" seem to drop & when parsing
http://bugs.php.net/bug.php?id=31139
そのものじゃないのか?
0522nobodyさん
2005/04/06(水) 17:38:27ID:???やっぱ>>521だわ。
-PHP5.0.3(Windows)/libxml2 2.6.11で再現確認。
-PHP5.0.2(Windows)/libxml2 2.6.11では問題なし。
0523nobodyさん
2005/04/06(水) 17:44:55ID:???選択名<BR>
<select name="数字">
<option value="1">1
<option value="2">2
<option value="3">3
</select><BR>
<input type="submit" value="OK">
</form>
1を選択した時に1が表示出来るようにしたいのですが、***のスクリプトが
わかりません。どなたか教えて下さい。
0524nobodyさん
2005/04/06(水) 17:45:23ID:???選択名<BR>
<select name="数字">
<option value="1">1
<option value="2">2
<option value="3">3
</select><BR>
<input type="submit" value="OK">
</form>
1を選択した時に1が表示出来るようにしたいのですが、***のスクリプトが
わかりません。どなたか教えて下さい。
0525nobodyさん
2005/04/06(水) 17:59:54ID:???---------------------------------
<form action="test.php"method="post>
選択名<BR>
<select name="num">
・
・
・
---------------------------------
[test.php]
<?php
echo $_POST['num'];
?>
---------------------------------
0527nobodyさん
2005/04/06(水) 18:22:48ID:???0529nobodyさん
2005/04/06(水) 19:21:44ID:???質問の仕方が間違っていました。
<form action=www.test.com/test.php method="post">
選択名<BR>
<select name="num">
<option value="1">1
<option value="2">2
<option value="3">3
</select><BR>
<input type="submit" value="OK">
</form>
test.php
<?php
if ( $_POST["num"] == "1" ) {
header("LOCATION:http://www.test.com/ 1.html");
}elseif ( $_POST["num"] == "2" ) {
header("LOCATION:http://www .test.com/2.html");
}elseif ( $_POST["num"] == "3" ) {
header("LOCATION:http://www.test.com/ 3.html");
}else {
header("LOCATION: form.html");
}
?>
あっていますか?
0530nobodyさん
2005/04/06(水) 20:30:31ID:???0531nobodyさん
2005/04/06(水) 20:52:36ID:???間違っています
どこかのブラウザでどこかの鯖なら間違って動く事もあるかもしれないが。
ってかそれだけの事だけだったらJS使えば?
0533nobodyさん
2005/04/07(木) 00:22:36ID:???htmlのformで注文情報をpostして値をチェック
入力不適切なところがあれば前のページへ戻すのですが、
そのときに値が消えてしまいます。
どうすればよろしいのでしょうか。
0535nobodyさん
2005/04/07(木) 00:48:26ID:???了解しました。
0536nobodyさん
2005/04/07(木) 00:48:40ID:???<input type="text" name="hoge" value="$_REQUEST['hoge']">
0539nobodyさん
2005/04/07(木) 08:02:27ID:???0540nobodyさん
2005/04/07(木) 08:17:27ID:???ぐらいしてるだろ。
0541nobodyさん
2005/04/07(木) 09:18:19ID:???0542nobodyさん
2005/04/07(木) 09:35:15ID:???そりゃ悪さする奴が悪いが、悪さされたことにより
それが誰かに被害を与えれば、被害を与えた奴が(も)悪い。
ある程度同情はするが免責はせんよ、自分が被害者なら。
0543nobodyさん
2005/04/07(木) 15:07:02ID:???in filename on line 537
というエラーでチュンとも鳴かないスクリプトに困っています。
該当行は、
if(!isset($_POST['datalist'])) { // <----- ココ
return;
}
で、何が悪いのか判りません。
$_POST['datalist'] を、$_POST[datalist] にすると、とりあえずその行でのエラーは消えますが
また次に出てくる配列の部分でエラーになり、配列キーの ' ' を全部消すと、
今度はファイルの最終行で「$が余計です」というエラーになります;;
" " でくくった配列は一つもありません。環境は、PHP4.3.9+Apache2.0 です。
何か思いつく方おられましたら教えてください。よろしくお願いいたします。
0544nobodyさん
2005/04/07(木) 16:07:19ID:???0545nobodyさん
2005/04/07(木) 16:07:57ID:???鳴かぬならぶち殺してしまえ、そのスクリプト。
APCとかZendのプリコンパイラとか最適化ツール使ってない?
0547nobodyさん
2005/04/07(木) 16:44:56ID:???次のようなスクリプトでT_ENCAPSED_AND_WHITESPACE部分を抽出してみるとか。
$source = file_get_contents("test2.php");
$tokens = token_get_all($source);
foreach($tokens as $token){
if(is_string($token)){
// echo $token."<br>\n";
}else{
list($id,$text) = $token;
print $text."<br>\n";
if($id == T_ENCAPSED_AND_WHITESPACE){
print "[this line]".$text."[/this line]<br>\n";
}
}
}
0548nobodyさん
2005/04/07(木) 17:36:31ID:???↑これですが、Sn Uploaderのように、
下部にディスク使用量を表示させるにはどうすればよいでしょうか?
0553nobodyさん
2005/04/07(木) 18:43:53ID:???547さんに教えていただいた方法を元に虫潰しにかかりましたが、
今度は別の行でひっかかって動きません;; 想像を絶する見落としなんですかねぇ・・・
問題ないように見えるし、元は4.0.2でちゃんと動いていたものなのですが・・・・・ プンスカ
>545 業者納入なので判りませんが、フツーにしか入れてないと思います
早くしないと旧機が持っていかれてしまう;; 焦りまくりッス
愚痴スマンです。 ありがとうございました。
0554nobodyさん
2005/04/07(木) 19:38:04ID:vs0utpq/0555nobodyさん
2005/04/07(木) 21:15:40ID:???無償なんで普通に入れてたりしますが。
# まあ運用上は有益だけど問題が出るケースもあるから、
# 依頼されなけりゃ入れないが正解だが。
phpinfo()で入ってるか簡単に判るので念のため確認しとき。
何にせよ自分が使ってる環境を本人が認識できてないなんて、良くないことなんだから。
PHP4.3.9ならPHP Accelerator(PHPA)か、Zend Optimizerのどっちか。APCはない
0556nobodyさん
2005/04/07(木) 23:41:29ID:???設定した行数を超えたら最初の行を消すようにしたいのですが、
全部書き換える以外にいい方法はありますか?
0558nobodyさん
2005/04/08(金) 00:19:57ID:???0559nobodyさん
2005/04/08(金) 01:21:41ID:???スクリプトはシフトジスで書いていますか?
もれはいままでEUCだったけど、なんかスクリプト書くの
ウィンドウズだしシフトジスでいいかなぁなんて思えてきた。
0561nobodyさん
2005/04/08(金) 01:51:02ID:???mbstring.internal_encodingがeucでhtmlのencodingがシフトジス
でphpの記述がシフトジスで問題ないですか?
0562nobodyさん
2005/04/08(金) 01:55:51ID:???0563nobodyさん
2005/04/08(金) 02:03:09ID:???デザがシフトジスでhtlm作るんだよ。
そーするとスクリプトとhtmlですげー厄介
HTML_QuickFormではスクリプト内でformのアトリビュートとか
設定するでしょう、
0564nobodyさん
2005/04/08(金) 02:06:51ID:???どちらにせよデザの持ち込むhtmlは、文字エンコードも
改行コードも信用ならんので、間に一括変換噛ますでしょ?
0565nobodyさん
2005/04/08(金) 02:12:39ID:???でもさぁ EUCにするメリットはあるのか?
いままで鯖のロケールがEUCだったので合わせてたけどね。
クライアントからscpでアクセスしてウィンドウズから
ソース見るしね。
気になるのがDBへのインサートかな。おもにMYSQL使ってんだけど
mysqlの文字コードはどーなってのか心配・・・・
0566nobodyさん
2005/04/08(金) 02:27:39ID:???0567nobodyさん
2005/04/08(金) 02:30:41ID:???0568nobodyさん
2005/04/08(金) 02:36:36ID:???裏山椎茸
漏れも速くUTF8に移行したい。
スクリプトはEUCに統一してたんだが、
OSがUTF8な物が増えてきた。
0569nobodyさん
2005/04/08(金) 04:17:13ID:???0570nobodyさん
2005/04/08(金) 04:33:19ID:???,イ〃 `ヽ,__
. N. {' \
. N. { ヽ
. N.ヽ` 〉
N.ヽ` ,.ィイ从 /
. ヾミ.___-‐=彡'ノノノ__,ゞミ=-_rく
lrf´ゞ"モ=ヾーf =モチ<}rv^i !
ヾト、` ̄,り「弋!  ̄´ノ ソ
!  ̄ ii{_,.  ̄ /r'´
. ┌────────────‐┐
.| .|
,. -‐ '| .|
/ :::::::::::| >>569 .|__
/ :::::::::::::| おまいはとんでもない rニ-─`、
. / : :::::::::::::| 考え違いをしているようだ `┬─‐ .j
〈:::::::::,-─┴-、 |二ニ イ
. | ::/ .-─┬⊃ |`iー"|
.レ ヘ. .ニニ|_____________.|rー''"|
〈 :::::\_ノ::::::::::::::::::::::::::::::::::::::::::::::::::::::: |:::::::: /::::::::::::|
0571nobodyさん
2005/04/08(金) 07:24:59ID:???SJISの場合は、PHP処理の内部で変換が何度も掛かるので効率が悪い。
(Zend Engineがそのまま扱えないため)
EUC-JP/UTF-8はそれがない。ケータイ向けであっても全部SJISで扱わずに、
最終的な出力でSJISにしてやるのが良い。
という理由はあるが、--enable-zend-multibyteして適正に
mbstring関係設定して使うのなら、別に構わんと思うよ。
判ってて使ってるんだから。理解しないで文字化けがとかが一番ウザイ。
0572nobodyさん
2005/04/08(金) 09:42:26ID:???MySQLのバージョンなんぼからだったかは忘れたけど、SJIS対応してるから
SJISに設定すれば問題なく使えるよ。もちろん全く問題なしというわけではないが、
携帯向けの開発中心にやってる俺からすれば、デメリットよりもメリットの方がかなりデカイ。
0573nobodyさん
2005/04/08(金) 11:54:02ID:KGAjK1pcフォームの適当な箇所でEnterを押すと
複数あるsubmitボタンの表示が一番上の値が取得されてしまうのですが
これを下のsubmitボタンの値を取るように、又は値を取らないようにするには
どうしたらよいのでしょうか?
0575nobodyさん
2005/04/08(金) 14:38:39ID:???<input type="submit" />じゃなくて<input type="button" />にしてやれば
Enterを押しても送信されない・・・と思う。
0576nobodyさん
2005/04/08(金) 17:38:23ID:???0579nobodyさん
2005/04/08(金) 18:27:44ID:???FirefoxやOperaでは問題ないのにWin-IEでは実行されません(画面真っ白)。
スクリプトの内容は単なるdocument.writeの羅列です。
同じ内容のJavascriptを普通のjsファイルに書いて読み込めば実行されるのですが・・・
また、そのPHPファイルを直接IEから呼び出すとちゃんとダウンロードされます。
何かIE特有の注意点等ありますでしょうか?
0580nobodyさん
2005/04/08(金) 18:53:23ID:???マルチ
>>579
JavaScriptはよく知らないからアレだけど
HTMLのscriptタグ内にtype=text/javascript入れるとか
phpでheader()でContentーtype:text/javascript入れるとか
0581579
2005/04/08(金) 18:58:51ID:???どうもです。
一応そこらへんはやってるはずです。
phpのheaderではContent-type: application/x-javascriptを吐いてます。
Contentーtype:text/javascriptもやってみましたが同じでした(´・ω・`)
0582nobodyさん
2005/04/08(金) 19:06:02ID:???0584579
2005/04/08(金) 19:39:11ID:???サーバ側の設定の問題でしょうか・・・他のサーバでも試してみます。
[PHPスクリプト]
<?php
header("Content-type: application/x-javascript");
print("document.write('TEST');");
?>
[HTMLファイル]
<body>
<script language="javascript" type="text/javascript" src="http://hoge.com/test.php"></script>
</body>
0585nobodyさん
2005/04/08(金) 19:43:24ID:???<script type="text/javascript" src="test.php"></script>
[PHP]
<?php
header('Content-type:text/javascript');
print 'document.write("テスト")';
?>
でうまくいくんだが(IE6SP1)
0586nobodyさん
2005/04/08(金) 19:49:50ID:???WinXP + Apache2 +PHP5.0.4 では問題なし
あとhttp://hoge.com/は他人のサイト。http://example.com/を使う。
0587nobodyさん
2005/04/08(金) 19:57:50ID:???原因でした・・・3回ほど吊ってきます・・・どうもありがとうございました orz
0588nobodyさん
2005/04/08(金) 20:15:17ID:???function Hoge(&$arg)
これと
function & Hoge($arg)
のちがいわなんですか>?
0589nobodyさん
2005/04/08(金) 20:45:48ID:PH5IR/1K例えば、
http://example.com/login.php
↑のような認証ページを用意し、ログインをさせます。
その際にセッションなりで保持したIDとパスワードを用いて、
ftp://example.com/
↑のようなFTPサーバにブラウザでログインさせたいと思っています。
通常のやり方だと、WEBでログインさせ、再びFTPでも認証ダイアログから
ログインさせるか、あるいはURLに
ftp://ID:[email protected]
↑のようにIDパスワードを混ぜることになり、どちらも不本意です。
どうにかならんものでしょうか?
0590nobodyさん
2005/04/08(金) 21:07:52ID:???探してもなかったもんで・・・
0591nobodyさん
2005/04/09(土) 01:45:25ID:BWP/VWkuこんなことがしたいでつ
こういうのを組むのに参考になるサイトだけでいいんで教えてください
0592nobodyさん
2005/04/09(土) 03:14:41ID:???unix系なら cronjob で好きな時に wget --mirror すればいいだけだろう。
windowsは知らない。
0593nobodyさん
2005/04/09(土) 03:32:30ID:???リファレンス渡し http://www.php.net/manual/ja/language.references.pass.php
リファレンスによる返り値 http://www.php.net/manual/ja/language.references.return.php
0594nobodyさん
2005/04/09(土) 09:46:58ID:???リファレンスによる返り値でマニュアル読んでたんですけど
わからないです。
マニュアルには リファレンスを返すことは、結合する変数を見付けるために
関数を使用し たい場合に便利です・・・
pear のMDBとかはじめのconnectionなどで使われています。
結合する変数・・・ うーん難しい
0595nobodyさん
2005/04/09(土) 10:17:11ID:???Returning by-reference is useful - リファレンスで値を返すことは便利だ
when you want to use a function - 関数を使おうとする時に
to find - 見つけるために
which variable a reference should be bound to. - どの変数をリファレンスと結びつけるか
リファレンスで値を返すのは便利やねん。
どんな時に便利かつーとな、どの変数をリファレンスと結びつけるかを関数でやろうとする時やねん
0596nobodyさん
2005/04/09(土) 10:53:53ID:???レンタルサーバーのさくらで、PHPを使ったサイトを作ってます。
2年間、問題なくうごいていたのですが、何の変更も
していないのに急に動かなくなりました。
さくら側で何か変更したのかと思いきや
何もしていないと言われました。
唯一変更したとすれば、アパッチのmod_rewriteを使用できるように
しました。。。とだけ言われました。
質問が抽象的ですが、いままでうごいていたのに
うごかなくなった場合、どこから手をつけていけば良いのでしょうか?
0597nobodyさん
2005/04/09(土) 11:10:36ID:???0598596
2005/04/09(土) 11:25:03ID:???本当に助かります。
具体的には、クリック数をカウントするリダイレクトが
使用できなくなっているのが1つ。
require_once("password.php");
$con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD);
$selectdb = mysql_select_db($DBNAME, $con);
//クリック数をインクリメントするSQL文を発行
$sql = "update sample set clickcount = ifnull(clickcount, 0) + 1
where no = $no";
mysql_query($sql, $con);
//指定されたURLへリダイレクト
header("Location: " . $url);
$con = mysql_close($con);
もう一つは フォームからのデータの受け渡し系が
うまく作動しておりません。
またまた抽象的なのですが、
どこから手をつけていくと、原因を発見できるのでしょうか?
0599nobodyさん
2005/04/09(土) 11:56:43ID:???思えないんだが・・・
データをあげてphpinfo見てみそ
0600nobodyさん
2005/04/09(土) 12:07:15ID:???ttp://www.sakura.ne.jp/news/20050325-001.news
0601nobodyさん
2005/04/09(土) 12:58:22ID:???0602596
2005/04/09(土) 13:01:48ID:???本当にありがとうございます。
早速、見て見ました。
すると、 register_globals が OFF
でした。以前は ON が仕様でしたが
いつのまにか OFF に・・・・
おいおい 連絡してこいよ
と思いましたが、まぁ原因が分かったので
よかったです。
私のサイトはONじゃないとうごかないものが
ほとんどでして・・・・
ON が OFF になる。
これだけで大きく被害を受けました。。。。
0603nobodyさん
2005/04/09(土) 13:05:47ID:???オイラなら素直にスクリプトのデバッグをするけども。
きちんとエラー処理をしてれば速攻で問題個所を絞れそうな・・
0604nobodyさん
2005/04/09(土) 13:10:17ID:???得ようしたんですが、
$_SERVER["REQUEST_URI"]
$_SERVER['QUERY_STRING']
などの情報が取得できないようです。
$_SERVERを$_ENVに変えたり、serverVar("URL")とか試したりしたんですが、
全て値を得ることが出来ませんでした。
他に呼び出された完全なURLを取得する方法などはございませんでしょうか…。
無料のHPスペースなのでhtaccessを触ったりとかそういうことはできませんです。
0605nobodyさん
2005/04/09(土) 13:12:36ID:SXkH7OvC256進数(つまり1バイト文字全て使う)に直そうと単純に$string = chr($int)として$stringを入れようとすると、
SQL文のダブルクオーテーションが消えてしまったり、あるいは増えてしまったりしてMySQLに格納出来ません。
何か良い方法は無いでしょうか?
0606nobodyさん
2005/04/09(土) 13:16:17ID:???0607nobodyさん
2005/04/09(土) 13:25:32ID:SXkH7OvCMySQLのリファレンスに、インデックスを使う際は対象となるデータの桁数が短いほうが良いと書かれていたからです。
データ容量も落とせると思うし。
0608nobodyさん
2005/04/09(土) 13:36:58ID:???そもそもブラウザが#以降の文字列を鯖に送出していない。
ブラウザのhttpリクエスト・レスポンスヘッダを見るツールがあるのでそういうので確かめてみるとよい。
ieHTTPHeaders、proxomitron、パケットキャプチャー等。
0609nobodyさん
2005/04/09(土) 14:50:00ID:???桁数の問題って、そんなに対象のフィールドに入れるデータが
数字が膨大な長さのデータばかりなのか?
よっぽど特殊なデータとか膨大なレコード数になるとかでもない限り
素直に整数型で入れればと思うが
ミクロレベルの問題を凄い上の層でどうにかしようとしてる感が
0610nobodyさん
2005/04/09(土) 15:30:06ID:SXkH7OvCMySQLは符号無しbigintでも20桁くらいしか扱えませんよね。
それをオーバーしてしまうのです。
その長い10進数の文字列を左から3桁ずつで区切ると各区分のパターン数は256以内に収まります。
そこで、各パターンに0〜255までの数字が1対1に対応するよう割り振り、(最小完全ハッシュのような事)
その数量を256進数に直し、区切っていたものを再結合して一つの文字列にしてMySQLに格納したいのです。
区切らずに全桁で考えたほうがパターン数が節約出来ますが、検索時の事情でそれは出来ません。
3桁の区分ごとに専用のフィールドを用意する事も速度の低下とHDD使用量の増加になってしまうので、
やはり一つの文字列として一つのフィールドに格納したいのです。
0611nobodyさん
2005/04/09(土) 15:44:49ID:???アップしたときに××.
php.txtと出ますが、問題ないでしょうか?
0612nobodyさん
2005/04/09(土) 15:47:55ID:???普通にphpファイルとして動作させるのなら.txtは要らない。
0615nobodyさん
2005/04/09(土) 15:56:09ID:???■ このスレッドは過去ログ倉庫に格納されています