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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/12/18(日) 10:10:12ID:???
PHPに関するくだらねぇ質問用スレです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい
過去スレは>>2
0469nobodyさん2005/12/30(金) 02:11:41ID:???
>>467-468
どうも。shuffleなんてあったんですね。
array_randはポケットリファレンスに載ってないのはなんでだろ。
0470nobodyさん2005/12/30(金) 02:19:29ID:???
shuffle()が用意されたのはPHP3.0.8以降で非情に古い関数。
それに対してarray_rand()はPHP4以降。
そのリファレンス本が古いんじゃね?

つーかPHPは仕様の変化が早いからマニュアル系で良書と呼べる本はあんま無いぞ。
テクニック本ならともかくリファレンスとして使うなら本家なりミラーなりの
オンラインマニュアルに勝るものなし、って感じ。
俺は普段、それをローカルに保存して使ってるけど、それだって年に1度は
保存し直しとかないといつの間にか内容変わってて怖いくらいだ。
0471nobodyさん2005/12/30(金) 04:18:40ID:???
PHPなんて比較的最近の4.3.xでも関数が増え続けてるし、
(このスレの回答でも出てきてるfile_get_contents()とか4.3.0で追加された)
戻り値とかの仕様も変わっちゃう(特に配列系はかなり変わってる)んだから、
その辺の安い本なんて読みながらコーディングしてるようなやつは
現場じゃ使い物にならないと思うけどな。

ま、趣味で書いてる分には別に構わないけど、それなら他人に質問すんなって感じ。
自分の使ってるバージョンのマニュアルも読まずに質問するのは失礼じゃね?
0472nobodyさん2005/12/30(金) 04:30:28ID:???
どうでもいい
0473nobodyさん2005/12/30(金) 04:58:26ID:???
現場も9割方はレベル低いから大丈夫!w
0474nobodyさん2005/12/30(金) 10:31:47ID:FPBgif0X
バージョンPHP4.3.11です。

「test.php」というファイルに別のディレクトリにあるtest2.phpもしくはtest3.phpというファイルの
どちらを上書きするか、セレクトメニューで選択した方を上書きコピーしたいのですが

■select.php (選択した方を読み込むファイル)
require("filecopy.php");
if ($sentaku == true) { //選択ボタンが押された時コピー実行
copyfile();
}

■filecopy.php(select.phpで呼び出された動作)
function copyfile{
switch ($datafile) {
case "test2": //test2が選択された時はtest.phpにtest2.phpを上書き
chmod ("test.php",0666);
copy ("file/test2.php","test.php");
chmod ("test.php",0666);

case "test3": //test3が選択された時はtest.phpにtest3.phpを上書き
chmod ("test.php",0666);
copy ("file/test3.php","test.php");
chmod ("test.php",0644);
}

という感じで書きましたが、
Fatal error: Call to undefined functionエラーが発生します。
どうすれば良いでしょうか?
0475nobodyさん2005/12/30(金) 10:37:30ID:???
むーぶ_アップロード_ファイル
0476nobodyさん2005/12/30(金) 10:38:17ID:???
>>474
>Fatal error: Call to undefined functionエラーが発生します。
>どうすれば良いでしょうか?
エラー表示を全部書かないのは嫌がらせか?
あとエラー行の位置を示さないのも嫌がらせの一種だからな。
0477nobodyさん2005/12/30(金) 10:39:39ID:???
あと、function copyfile{}って書き方は見た事が無いが
()は省略可能かどうかは確認したか?
0478nobodyさん2005/12/30(金) 10:40:56ID:???
> Call to undefined function 〜
つーのは、 〜って関数が定義されて無いのに呼び出そうとしたのでガッした、って事。
0479nobodyさん2005/12/30(金) 10:41:43ID:???
>>476
失礼。
Fatal error: Call to undefined function: copyfile() in /home/rika/public_html/test/select.php on line 23

23行目は上のselect.php の copyfile(); の部分
04804742005/12/30(金) 10:43:04ID:???
>>477
function copyfile() {
〜
}
って感じで書きましたがやはり同じエラーが出ます。
04814742005/12/30(金) 10:44:50ID:???
>>478
すぐ上でrequireしてるので定義されているはずなんですが、、
0482nobodyさん2005/12/30(金) 10:47:04ID:???
括弧が空じゃ意味無いんじゃぼけ
0483nobodyさん2005/12/30(金) 10:49:21ID:???
意味ないってことはないけどな。
呼び出し元も何の引数も与えてないんだからfunction側をいくらいじったところで…
こいつ、PHPとPerlを勘違いしてそうな予感。

そのレベルでいきなりrequireで別ファイル定義してたって解決が遅くなるだけだ。
まず最初のうちはselect.phpの中でfunctionの定義して、動くようになってから分離シレ
04844742005/12/30(金) 10:50:44ID:???
>>482-483
すいません、select.php側の()を消すとエラーは消えました。
が、コピー動作が作動していない様です。
0485nobodyさん2005/12/30(金) 10:51:53ID:???
>>474
エラーに関係ないけど,
switch内のcase文は,きちんとbreakしないと,次のcase文まで実行してしまうよ.
test2が選択されても,最後にはtest3がコピーされるね,このままだと.
04864742005/12/30(金) 10:55:27ID:???
>>485
あ、本当だ。忘れてました。。

でもコピーはされてない様です。
エラーは出ていないのに、、
0487nobodyさん2005/12/30(金) 10:57:09ID:???
>>484
そんなとこ消すな。アホ。
04884742005/12/30(金) 10:58:34ID:???
実行すらされてないですね。

>>487
ぼけとかアホとか・・・ここは下らない質問スレじゃないんでしょうか?
0489nobodyさん2005/12/30(金) 10:59:29ID:???
>>484
今のうちに言っておくが、エラーがなくなったところでそのコピーは絶対動かないぞ。
$datafileってどっから出てきたんだよ。
「HTMLのフォームで渡してます」とか勘違い回答禁止。
0490nobodyさん2005/12/30(金) 10:59:34ID:???
質問者も痛いが、妙に気性の荒い痛い香具師が居るなww
お前は分かっとるのかと。
ちなみに>>482括弧が空でも動くぞ。
0491nobodyさん2005/12/30(金) 11:00:32ID:???
>>488
下らない質問スレだが、その質問に親切丁寧に回答してやるスレではない。
無視しないだけありがたく思え。
04924742005/12/30(金) 11:03:19ID:???
>>489
$datafileはデータファイル(data.dat)の中に。

例えばtest2を選択した時はdata.datの中には
test2 という値が保存される様になってます。
この値は既に確認済みです。
04934742005/12/30(金) 11:06:00ID:???
print $datafile; を実行すると正常に test2 と出力されます。
0494nobodyさん2005/12/30(金) 11:06:38ID:???
>>492
function copyfile() の中で
print $datafile;
とかやってみれ。でてこねーから。
04954912005/12/30(金) 11:07:06ID:???
functionなんかで呼び出さずに、フォームで実行する部分

require("filecopy.php");
if ($sentaku == true) { //選択ボタンが押された時コピー実行

ここ

}

に、functionの中身を書けば動くだろが ボケカス氏ね糞
04964742005/12/30(金) 11:07:45ID:???
>>494
それだと出て来ない。何ででしょう・・?
0497491 == 487 != 4822005/12/30(金) 11:09:17ID:???
ちょっとまてこら。人の名前を勝手に騙るんじゃねー
04984742005/12/30(金) 11:09:54ID:???
>>495
その手がありました・・・
まあ最終手段ですが・・・

すいません、これでやります。。
0499494=4872005/12/30(金) 11:11:56ID:???
>>496
PHPはPerlと違って、普通に$datafileとか書くとローカル変数として扱われて
関数内の$datafileとその外の$datafileは別物だから。
0500nobodyさん2005/12/30(金) 11:12:36ID:???
>>499
へえー、そうなんですか・・
05014852005/12/30(金) 11:15:50ID:???
>>498
…いや,これが最初の手段でしょ.
関数を作るのは,その処理を頻繁に行う必要が出てきてから.
>>494で変数が出てこないのは,変数のスコープが違うから.
0502nobodyさん2005/12/30(金) 11:16:43ID:???
そのレベルでいきなりcopy()とかchmod()とか使うのは危険だから、
最初のうちはprintだけ書いて処理の流れを確認した方がいいと思うぞ。
05034742005/12/30(金) 11:19:47ID:???
>>501
「ファイルは分けた方が動作が軽快」と聞かされてたんで、
requireを使って、動作の目的ごとにファイルを分けてたんです。
>>502
了解です
0504nobodyさん2005/12/30(金) 11:21:00ID:???
>>503
基礎も分かってないうちからいきなり複雑にしても動くわけがない、ってことですな。
0505nobodyさん2005/12/30(金) 13:09:47ID:???
結論・基礎からやれ
0506nobodyさん2005/12/30(金) 15:32:37ID:???
>>503
聞かせたバカはどこのどいつなんだろな
0507nobodyさん2005/12/30(金) 15:39:37ID:???
>>462
データだけでなくタイムスタンプも保存するようにして、
ファイルのタイムスタンプと比較したら?
つかそういうの何もせずにデータが分散しちゃうのは
全然よくない方法だと思うんだけど。
0508nobodyさん2005/12/30(金) 17:51:40ID:???
echo 'kudaraneeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee!!!!!!!!!';
0509nobodyさん2005/12/30(金) 18:50:48ID:???
>>508
書くならdieで(笑
0510nobodyさん2005/12/30(金) 21:02:19ID:???
>>503
あるスクリプトを3つに7つぐらいに分割したのと、
まとめたものの出力タイムを算出したら、
倍ぐらい違ったぞ。
もちろんまとめたほうが早かった。
スクリプトを分けるのはいいけど、早くなるってわけじゃないってこと。
0511nobodyさん2005/12/30(金) 21:11:34ID:???
・スクリプト自体は小さい方が速い。 <- コメントアウトを1MBくらいすると体感できる。
・includeやrequire処理は遅い。 <- まぁファイルを開く処理なんで当然っちゃー当然。
なので、
・滅多に使わない処理を別ファイルにすると、普段の処理は速くなる。
つーあたりが落とし所かと。
スクリプトの管理が楽になるってのもあるけど。
0512nobodyさん2005/12/30(金) 21:57:56ID:???
別々のページを表示させる複数の機能をまとめるよりは分割した方が良くて、
その上で共通の部分は1つにまとめてrequire()しましょ、って話でしょ。
理由もなく分ければ速いとか遅いとか言ってもしょーがないよね。
0513nobodyさん2005/12/30(金) 22:14:09ID:WrjQPiei
>>510
アクセレータは入れてる?
速度向上を求めるなら、スクリプトをまとめるよりも、
アクセレータ入れた方がいいよ。
0514nobodyさん2005/12/30(金) 22:18:34ID:???
高速化の話をしたいわけじゃなく、分割が高速化に役立つのかの話だし。
0515nobodyさん2005/12/30(金) 22:47:43ID:???
話題ってのはどんどん流れていくものなのだよ。
0516nobodyさん2005/12/30(金) 23:00:40ID:???
DreamWeaverみたいな入力支援機能があるPHPエディターって何がありますか?
0517nobodyさん2005/12/30(金) 23:03:27ID:???
>>516
>>70
0518nobodyさん2005/12/30(金) 23:10:26ID:???
>>517
とってもありがとう、そしてごめん
0519nobodyさん2005/12/31(土) 03:35:38ID:TV9EjbIm
自分で作ったブラウザ連出ブラクラを間違って起動させちゃったんだけど
再起動させれば問題ないよね?
0520nobodyさん2005/12/31(土) 03:36:13ID:???
自分に聞け
0521nobodyさん2005/12/31(土) 08:05:19ID:???
間抜けやなぁ
0522nobodyさん2005/12/31(土) 09:25:13ID:GIcF9gPa
ダウンロードするときにhtml表示させて、そこにダウンロードURLが書かれてるみたいなphpのあぷろだないっすかねえ。
Sn Uploaderのphp版があれば最高なんだけど・・・詳しい人いたら教えていただきたいです。。
0523nobodyさん2005/12/31(土) 09:59:51ID:???
普通のロダとどう違うのか分からん
そして、何がしたいのかも分からん

DL用のリンクじゃなくてURLを単純に文字列として表示したいのか?
それならスクリプト内のHTML出力部分をちょっと手直しするだけだけど、それだったらスレ違いやし

エスパーキボン
0524nobodyさん2005/12/31(土) 10:16:32ID:???
そもそもスレ違い
0525nobodyさん2005/12/31(土) 11:03:55ID:???
>>522
そうだ、sourceforgeでいいじゃん。
ミラー管理、会員管理、ファイルのバージョン管理、ML、
なんでも付いてるphp製アップローダだぞ
0526nobodyさん2005/12/31(土) 11:21:27ID:???
>>522

http://pc8.2ch.net/test/read.cgi/mysv/1128273012/605
0527nobodyさん2005/12/31(土) 14:26:52ID:NkWpneAF
>>424
返事がおくれましたが、それでいけました。あまりに素っ気ない回答だったんで最初はわからなかったんですが、
よくみてみるとeオプションなんてのがあるんですね、勉強になります。
どうもありがとうございました。
0528nobodyさん2005/12/31(土) 16:26:59ID:ytK+M4x0
サーバにMySQL(MyISAM)がインストールされているかどうかを
調べる構文はありますか?
0529nobodyさん2005/12/31(土) 16:31:00ID:???
>>528 phpinfo()
0530nobodyさん2005/12/31(土) 16:50:24ID:???
>>529
MySQLライブラリがPHPに組み込まれているかどうかでは無く、
MySQLがサーバにインストールされているかどうか、
そのMySQLでMyISAMが有効であるかどうか、です
0531nobodyさん2005/12/31(土) 17:00:17ID:???
>>530
PHPから使えなくてもMySQLが入ってればいいってこと?
PHPから使えない=PHPからアクセスできない=MySQLが入ってても認識できない
ってことだから「構文」としてはそんなものは存在しないと思うけど。

強いて言えば
passthru("find / -name mysql");
とかやれば探せるかもしれない。が、共有サーバーとかでこんなの走らせると怒られるかも。
0532nobodyさん2005/12/31(土) 17:02:15ID:???
で、さらにMyISAMが有効かどうかを調べるなら、findで見つかったmysqlのコマンドを実行して
現在のmysqlの状態を表示させるしかないんじゃないかな。

つーか、こういうのはサーバー管理者に質問して確認すべきものであって、
ユーザが勝手に調べたりしていいものじゃないと思うぞ。
0533nobodyさん2005/12/31(土) 17:03:48ID:???
>>531-532
なるほど、一発で調べる構文など存在しないという事ですね。。
ありがとうございました。
0534nobodyさん2005/12/31(土) 18:25:15ID:???
MySQLに接続しに行って、
show variables like 'have_myisam'
でYESになればサポートしてる。
0535nobodyさん2005/12/31(土) 18:39:31ID:???
それ、まず接続できることが大前提だけど、
接続に失敗するのが
・MySQLがインストールされてないため
・DB接続の指定を間違っているため
のどっちなのかをどうやって判別するんだ
0536nobodyさん2006/01/01(日) 00:27:10ID:???
あけましておめでとうございます
年の初めから、悩んでおります・・・

送信元 html
<form name="form1" method="post" action="c.php">
<input type="text" name="a">
<input type="submit" name="Submit" value="送信">
</form>

受け取りphp
<?
$a=$_POST['a'];
print($a);
?>

これは動作しました。
ですが↓はヘッダのメタ部だけ読み込まれて
POSTで情報を送ったものは失敗しているようで表示されません
0537nobodyさん2006/01/01(日) 00:28:09ID:???
送信元 php
<form method="POST" action="hogehoge.php" name='reserve'>
<input type="text" name="name" maxlength="30">
<input type="text" name="mail" maxlength="50">
<input type="text" name="phone" maxlength="15">

<select name="select" onChange="PushPulldown(this.options[this.options.selectedIndex].value)">
<option value=''>月</option>
<? for($a=1;$a<13;$a++){
echo "<option value='".$a."'>".$a."</option> ";
} ?> </select>//javascriptで連動するプルダウンを2つ作っています

<select name='day' onChange="this.options[this.options.selectedIndex].value">
<option value=''>日</option>
</select>
<select name="hour">
<? for($d=1;$d<25;$d++){
print("<option>".$d."</option>");
} ?> </select>

<select name="detail">
<option>頃</option>
<option>30分頃</option>
</select>
<input type="text" size="3" name="number">
<input type="submit" value="確認画面へ">
<input type="reset" value="クリア">
0538nobodyさん2006/01/01(日) 00:29:27ID:???

受け取りphp
<?
$name=_HS(_SS($_POST['name']));
$mail=_HS(_SS($_POST['mail']));
$phone=_HS(_SS($_POST['phone']));
$select=_HS(_SS($_POST['select']));
$day=_HS(_SS($_POST['day']));
$hour=_HS(_SS($_POST['hour']));
$detail=_HS(_SS($_POST['detail']));
$number=_HS(_SS($_POST['number']));

echo "$name";
echo "$mail";
echo "$phone";
echo "$select";
echo "$day";
echo "$hour";
echo "$detail";
echo "$number";

//_HS はhtmlspecialcharsと同動作
//_SS はstripslashesと同動作
?>

同じようなことをしているんですが、片方だけうまくいかないことの
考えられる理由を教えてください…
鯖側PHPは4.3です
0539nobodyさん2006/01/01(日) 00:34:04ID:???
あけおめ〜
こんな新年の夜中から何やってんだか。
_HS()とか_SS()とかが正しく動くもんなのかこれだけじゃ判別つかんので、
受け取りPHPの1番先頭に
<?php var_dump($_POST); ?>
の1行を入れてくれたまい!
0540nobodyさん2006/01/01(日) 00:38:53ID:???
>>539
こんばんは、あけましておめでとうございます。
array(8) {
["name"]=> string(3) "aaa"
["mail"]=> string(11) "[email protected]"
["phone"]=> string(10) "0301111111"
["select"]=> string(1) "1"
["day"]=> string(1) "1"
["hour"]=> string(1) "1"
["detail"]=> string(2) "頃"
["number"]=> string(2) "12" }

1行入れたところこんな、配列が発掘されました・・・
0541nobodyさん2006/01/01(日) 00:47:45ID:???
なら_HS()だの_SS()だのという変な関数がおかしいんだろ。
0542nobodyさん2006/01/01(日) 00:50:04ID:???
echo "$hoge";
↓
echo $hoge;
0543nobodyさん2006/01/01(日) 00:51:42ID:???
>>542
は?
05444342006/01/01(日) 00:54:20ID:xNWERqNS
あけましておめでとうございます。

遅レスですが…
>>460
出来ました。ありがとう。

>>464
ごめんなさい。
マニュアル読んで勉強します。
0545nobodyさん2006/01/01(日) 00:57:48ID:???
>>541
そのようでした・・・ほかのところにも使っていたんですが
それでは問題なく動作していたために、灯台下暗し・・・・でしたorz
ありがとうございました。
今夜はよく眠れそうです・・・

ちなみに_SSと_HSはこんなfunctionでした
function _hs($_val){
$_val = htmlspecialchars($_val);
return( $_val );
}
function _ss($_val){
if(get_magic_quotes_gpc()){
$_val = stripslashes($_val);
}
$_val = trim($_val);
return($_val);
}
0546nobodyさん2006/01/01(日) 03:08:25ID:???
>>544
君はマニュアルより先に、プログラミングの基礎みたいな本を読んだ方がいいと思う。
マニュアルは命令一覧とかは書いてあってもロジックの書き方は書いてないから。
05474342006/01/01(日) 03:12:23ID:xNWERqNS
>>546
なるほど、本ですか…
ifも他人のスクリプトのソースみて覚えたものなので…

本やサイトを見て勉強したいと思います。
ありがとうございました。
0548nobodyさん2006/01/01(日) 03:23:21ID:???
PHPでバイナリが入っている変数から何文字目から何ビット切り出す方法はありませんか?
substrはバイトごとみたいで
0549nobodyさん2006/01/01(日) 03:43:16ID:???
バイト単位で切り出した上でビット演算をかけるしかないと思う。
0550nobodyさん2006/01/01(日) 07:02:18ID:???
>>548
バイナリなのか文字列なのかどっちだよw
おまえみたいな素人はしねよ。
0551nobodyさん2006/01/01(日) 08:02:55ID:???
winXP PHP5.0.5(cli)
>>548見て何となくsubstr試したら、気になる結果が出たので質問

<?php
$str = "abc\0def";
echo substr($str, 5)."\n"; # ef
echo substr($str, 1)."\n"; # bc def
?>

表示出来ない文字列(null含む)は、空白文字として表示されるでおk?
0552nobodyさん2006/01/01(日) 08:24:16ID:???
>>551
substrと関係ないどころかPHPとすら関係ない環境依存。
0553nobodyさん2006/01/01(日) 08:25:39ID:???
PHPのglob()は、glob('**/*.php') でディレクトリを再帰的に辿ってくれないんでしょうか。
あるいは、辿ってくれるような関数はないでしょうか。
0554nobodyさん2006/01/01(日) 09:43:59ID:???
PHP 5.1.1 Released
0555nobodyさん2006/01/01(日) 10:29:42ID:???
>>550
すみません〜
「何文字目」じゃなく「何ビット目」ですね。
あと他の人が作ったスクリプトなど読んでいるとやはりビット演算で求めているみたいなんで
それでやってみます。ありがとうございました。
0556nobodyさん2006/01/01(日) 10:38:01ID:???
>>553
無いんじゃないかな
再帰的に処理させるだけだから自分で作ると良いと思う。
0557nobodyさん2006/01/01(日) 10:56:10ID:???
>>556
ありがとうございます。ないのが確認できただけでもよしとします。
今から自作してみようと思いますが、もしかしたらまたここで聞くかもしれませんが、
そのときはよろしくお願いします。
0558nobodyさん2006/01/01(日) 12:00:44ID:???
質問です。

htmlspecialcharsで変換した文字列から、変換前の文字列に戻すにはどうすればいいですか?
0559nobodyさん2006/01/01(日) 12:03:54ID:???
>>558
逐一置換
0560nobodyさん2006/01/01(日) 12:15:48ID:ckK+9Xqr
>>559
やっぱりそれしかないんでしょうか…
html_entity_decodeで戻せることはわかったんですけど、サポートしてるのが4.3以上だから厳しい…
0561nobodyさん2006/01/01(日) 13:20:34ID:???
>>560
4.3より古いバージョンを使ってるほうがよっぽど厳しいというかなんというか・・・
0562nobodyさん2006/01/01(日) 13:44:05ID:???
関数化しときゃいいだろ。
0563nobodyさん2006/01/01(日) 14:25:36ID:???
MacOS X 10.4 で PHP5.1.1 CLI つかってます。
ネストしたディレクトリを一気に作成しようとして
<?php mkdir("hoge/geji", 0777, TRUE); ?>
というプログラムを実行させると、
Warning: mkdir(): No such file or directory
というエラーがでてしまいます。
PHP5からはmkdir()の第3引数をつかえば、mkdir -p 相当の動作になると思っていたのですが、勘違いですっけ?
0564nobodyさん2006/01/01(日) 22:46:05ID:???
>>563
ディレクトリの区切り文字がスラッシュとは限らない
http://jp.php.net/manual/en/function.mkdir.php#53075
05655632006/01/02(月) 10:55:07ID:???
>>564
MacOS X でやっているので、スラッシュで問題ないと思います。
0566nobodyさん2006/01/03(火) 00:05:44ID:???
<?php mkdir("hoge/geji", 0777); ?>
<?php mkdir("hoge", 0777, TRUE); ?>

この辺りするとどうなる?
0567nobodyさん2006/01/03(火) 11:04:22ID:???
substr関数で文字列の末尾1文字を削除することはできますか?

【 abcd 】 → 【 abc 】
【 あいうえお 】 → 【 あいうえ 】
0568nobodyさん2006/01/03(火) 11:21:13ID:???
mb_substrで-1かな
■ このスレッドは過去ログ倉庫に格納されています