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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/11/02 00:15:41ID:???
PHPに関するくだらない質問用すれです。
0497nobodyさん04/12/18 01:20:00ID:???
>>494
三項演算子
0498nobodyさん04/12/18 02:03:06ID:???
援交三千氏
0499nobodyさん04/12/18 02:40:46ID:???
>>496>>497
レスありがとうございます
すいません、しっかりマヌアルにありましたね
"三項演算子" "php"でぐぐったらいくつか見つかりました
しかも2重カキコしてました スマソ
0500nobodyさん04/12/18 02:48:34ID:Si5Eecvi
画面に入力項目が20個とかたくさんある場合、
ポストされた値が数値か文字か、
何文字入力されているか、不正な値が入っていた場合はどうするか
等の処理はみなさん、どうされてますか?

すべての項目を1個ずつifで聞いていくのはめんどいですよね・・

自分は、フォームの項目の命名規則を整えて、
xmlに属性(数値・文字)lengthや不正な値の場合の処理
などを記述して、validation用の関数を作ればいいかなーって
おもってるんですが・・・・。

なにかお奨めの方法があったら
教えてください。
0501nobodyさん04/12/18 03:14:41ID:???
>>493
iランドの特殊コードで表示しているから、##NN##以外わかりません…
0502nobodyさん04/12/18 03:16:04ID:???
>>500
PEARのHTML_QuickForm
0503nobodyさん04/12/18 04:02:58ID:???
Windows用のバイナリで4.3.9から4.3.10にバージョンアップしたら
libmysql.dllのサイズが糞でかくなってました。
何でこんなにでかくなったんでしょうか?なんか怪しいです。
0504nobodyさん04/12/18 08:29:34ID:???
>>503
多分MySQL4.1用libmysqli.dllと合体したのだと思う
050550004/12/18 09:58:27ID:???
>>502
どうもありがとうございます。
こんな便利なものがあったとは・・・

ただ、自分の場合、既に
HTMLでフォームを書いちゃったので
今から書き直すのは大変かなァと・・^^;

はぁif文で聞くのはめんどいしなぁ。
0506nobodyさん04/12/18 18:11:31ID:TLjFNPt9
rand関数についての質問です。
a=rand(0,100);
としたとき、0〜100の中からaで選ばれた数字を除いた範囲で
乱数を発生させるにはどうすればいいんでしょうか?
b=rand() 括弧の中をどうすればいいかわかりません。
よろしくお願いします。
0507nobodyさん04/12/18 18:43:11ID:R/XzN+iF
PHP 5.0.2 をセットアップしたのですが、セッションが正しく動作しません。
(セッション変数に代入した値が保持されません)

環境は Windows 2000, Apache 1.3.33 です。
php.ini を書き換えなくてはいけないのでしょうか?

session.use_trans_sid = On
session.save_path = "C:/tmp"
とし、c:/tmp は存在しています。
0508nobodyさん04/12/18 18:48:24ID:???
>>506
rand(start,end)である以上、特定の数値を除いた値を
一回のrand呼び出しだけで選出することはできない。
やりたいことが、重複しない値を2つ取り出したい、ということなら、
bを取り出す時にaと一致したなら再度bを取得すればよい。
取り出したい値の個数が2つ以上の場合でも同様のやり方でできる。
全ての数値を対象にするなら、shuffleを使っても良かろう。

>>507
> セッションが正しく動作しません。
どうやって確認したのか教えたくない理由を述べよ
0509nobodyさん04/12/18 18:51:08ID:???
>>508
書かなくてもわかると思ったから

簡単なプログラム
http://hoover.ktplan.ne.jp/kaihatsu/php/index.php?type=doc&txt=session1
が動作しない
051050704/12/18 18:53:31ID:???
ちなみに、現在の設定は以下の通りです。

Session Support enabled
Registered save handlers files user sqlite
Registered serializer handlers php php_binary wddx

DirectiveLocal ValueMaster Value
session.auto_startOnOn
session.bug_compat_42OffOff
session.bug_compat_warnOnOn
session.cache_expire180180
session.cache_limiternocachenocache
session.cookie_domainno valueno value
session.cookie_lifetime00
session.cookie_path//
session.cookie_secureOffOff
session.entropy_fileno valueno value
session.entropy_length00
session.gc_divisor10001000
session.gc_maxlifetime14401440
session.gc_probability11
session.hash_bits_per_character55
session.hash_function00
session.namePHPSESSIDPHPSESSID
session.referer_checkno valueno value
session.save_handlerfilesfiles
session.save_pathC:/tmpC:/tmp
session.serialize_handlerphpphp
session.use_cookiesOnOn
session.use_only_cookiesOffOff
session.use_trans_sid11
051150704/12/18 19:03:34ID:???
c:/tmp を見ると、ちゃんとセッションファイルはできていました。

ってことは、セッション変数の参照方法が間違っているってこと?

<?php
session_start();
session_register("num");
?>
<html>
<body>
<?php
$num++;
print "カウントは $num です。 <a href='$PHP_SELF'>次へ</a>";
?>
</body>
</html>
051250604/12/18 19:42:04ID:???
>>508
すばやい回答ありがとうございます。
shuffle関数を使えば解決できそうです。
0513nobodyさん04/12/18 19:49:25ID:???
>>504
ありがとうございます。
それなら納得です。
0514nobodyさん04/12/18 19:49:50ID:???
>>507
register_globalsの設定は?
>スクリプトでsession_register()を 使用している場合には、
>それは register_globalsを 不可としている環境下では動作しません。
051550704/12/18 20:03:28ID:???
>>514
register_globals = Off
になってました。
register_globals = On
にしたら、ちゃんと動作しました。

ほんとにありがとうございました(深謝) >514様
0516nobodyさん04/12/18 20:13:57ID:???
>>515
register_globalsはOffが推奨だから$_SESSION使った方がいい
マニュアルのセッションの項目読めば分かると思う
ttp://www.php.net/manual/ja/ref.session.php
0517nobodyさん04/12/18 20:54:31ID:???
>>516
ところが、register_globalsはOffで、以下のソースだと動作しないんですよ。

<?php
session_start();
session_register("num");
?>
<html>
<body>
<?php
$num = $_SESSION["num"];
$num++;
print "カウントは $num です。 <a href='$PHP_SELF'>次へ</a>";
?>
</body>
</html>
0518nobodyさん04/12/18 21:07:35ID:???
>>517
だからマニュアルを読めと言ってるだろうが!
お前がやりたい処理のサンプルもちゃんと載ってるっての
0519nobodyさん04/12/19 04:03:05ID:pAwYOVm0
変数と文字列の結合したいのですが、どうすればいいでしょうか?
例:
$a = abc
文字列:defで $b=abcdefとしたい
052051904/12/19 04:05:25ID:pAwYOVm0
間違えました。
abc.defとしたいです。
0521nobodyさん04/12/19 04:55:15ID:???
変数にある文字列が含まれているかどうか判断するために
使う関数おしえてくり
0522nobodyさん04/12/19 05:00:23ID:???
正規表現 ereg
0523nobodyさん04/12/19 15:40:06ID:???
strstrとかstrposでいいだろ
0524nobodyさん04/12/19 17:27:52ID:???
>>522
アホ
0525nobodyさん04/12/19 17:28:23ID:???
エロい人、助けてくださいな!

以前に、IPの範囲判定について質問したんだけど
さっぱりわからんですたい。
>>140氏が
サブネットマスクでANDとってネットワークアドレスとXOR 結果が0か否か
って教えてくれたケド意味がわかんなくて…

この140氏のをもう少し具体的に教えてくれないでしょーか?
0526nobodyさん04/12/19 19:26:14ID:???
>>525
例: 192.168.1.55 が 192.168.1.0 〜 192.168.1.255 に含まれているかどうか

192.168.1.55  11000000 10101000 00000001 00110111
                    AND
255.255.255.0 11111111 11111111 11111111 00000000 サブネット
                     ↓
         11000000 10101000 00000001 00000000
                    XOR
192.168.1.0  11000000 10101000 00000001 00000000 ネットワークアドレス
                     ↓
         00000000 00000000 00000000 00000000

結果が 0 なので含まれていることになる
052714004/12/19 20:59:06ID:???
なんか発掘されててびっくり。 今読み直すと日本語が変だな。
0528nobodyさん04/12/19 21:32:11ID:o3WuAXTl
すみません、教えて下さい。
10進数を16進数に変換するプログラムを作成したいんですが、どうなりますか?
052952504/12/19 21:39:36ID:???
>>526氏
ありがとうございます!
やっと140氏の言ってた意味がわかりますた!

140氏、改めてサンキューでした!

で、こねたら↓な感じになりますた。
もっとこないせい!ってなトコあればヨロシクです。


if( Check( '192.168.1.50' ) ){ echo('範囲内です'); }
else{ echo('範囲外です'); }

function Check( $ip )
{
$hani= '11000000101010000000000100000000';//192.168.1.0
$mask= 24;
$ips= split("\.",$ip);
$my_ip= sprintf("%08d",decbin($ips[0])) . sprintf("%08d",decbin($ips[1])) . sprintf("%08d",decbin($ips[2])) . sprintf("%08d",decbin($ips[3]));

for( $i=0; $i<$mask; $i++ )
{
if( $my_ip[$i] != $hani[$i] ){ return( false ); }
}
return( true );
}
053052504/12/19 21:41:54ID:???
>>528
10進数→16進数はdechexらしいよ(使った事ないケド)。
0531nobodyさん04/12/19 21:42:26ID:???
>>528
あとマルチ市ね
053214004/12/19 23:56:43ID:???
/**********************************************************
  * function chkIP($ip, $net, $mask=0xffffff)
  * 機能: $ipが$netのネットワーク内にあるかをチェックする
  * 引数: $ip  = チェックするIPアドレス
  *       $net = 期待されるネットワークアドレス
  *       $mask= サブネットマスク(デフォルト255.255.255.255)
  *       ※それぞれビット列orドット記法どちらでも良い
  * 返値: boolean 入っていればtrue
  *********************************************************/
function chkIP($ip, $net, $mask=0xffffffff){
  // 
  is_int($ip) or ($ip = ip2long($ip));
  is_int($net) or ($net = ip2long($net));
  is_int($mask) or ($mask = ip2long($mask));
  return (($ip^$net)&$mask)^0;
}

突っ込まれる前に行っておくとis_longは意図的ね。
053314004/12/19 23:57:19ID:???
うお、is_intのほうはってしまった(´・ω・`)ショボーン
0534nobodyさん04/12/20 00:42:46ID:???
PHP5でポリモーフィズムって
どのように実装できるんでしょうか。
0535nobodyさん04/12/20 00:51:18ID:???
>>534
型無し言語
0536nobodyさん04/12/20 05:26:34ID:zyDWy5kg
すいません。いくら考えてもわからないので、教えて頂けませんか。
$arr=array(1,1,2,1,2,3) という配列があったとして、それぞれの
値の数を足したものを表示したいのですが、どうすれば良いでしょうか・・・

1 3個
2 2個
3 1個

といった感じです。宜しくお願い致します。
0537nobodyさん04/12/20 06:29:26ID:???
>>536
自分で考えるのも大事だけどマニュアルも読もうぜ
ズバリそのための関数があるから
053853604/12/20 13:01:02ID:???
>>537
ありがとうございました。
マニュアル読み直したら、array_count_values()というのがありました。
これで出来そうです!
0539nobodyさん04/12/20 22:29:47ID:???
可変変数のstaticはやはり無理なんでしょうか?

static $$tmp = new $tmp;
動的にインスタンスしたオブジェクトを保持しておきたいんだが…
parse errorで止まっちまう
0540nobodyさん04/12/21 01:05:31ID:???
>>539
new $tmp;
0541nobodyさん04/12/21 08:09:10ID:???
すいません、初心者です
用語とかの使い方も間違ってるかもしれませんが・・・

class s_class{
function sample($date){
echo $date[0];
         echo $date[1];
}
}
?>

このようなクラスファイルを作り

$test[] ="一番目";
$test[] ="二番目"; //配列データを作ってます
$test1 = new s_class;
$test1->sample("$test");

と、インスタンスを生成し、クラス内の配列の中身をechoで表示させるメソッドを呼び出しているのですが
「A」と「r」の文字が表示されるだけなんです

メソッドに配列データを引数にする事は可能なんでしょうか?
もし可能でしたらやり方を教えてください
0542nobodyさん04/12/21 11:38:26ID:???
>>541
$data = "$test" = "Array"
だから
$data[0] = 'A'
$data[1] = 'r'
$data[2] = 'r'
$data[3] = 'a'
$data[4] = 'y'
になる

答え
$test1->sample($test);
0543nobodyさん04/12/21 13:47:42ID:???
age
0544nobodyさん04/12/21 14:57:36ID:???
'2004-11-25' と '2004-12-21' を比較して
差分日数を算出したいんですが、
phpのシステム関数で可能ですか?
0545nobodyさん04/12/21 15:22:27ID:???
>>544
可能です。
0546nobodyさん04/12/21 15:23:15ID:???
>>544
「日数」であればstrtotimeとか割り算とかで。
0547nobodyさん04/12/21 16:16:22ID:???
>>544
mktimeで比較して、差分を60*60*24で割る。
0548nobodyさん04/12/21 16:33:12ID:???
PHP+MySQLです。

select count(*) from 条件
select * from 条件 limit ほにゃ

でやった場合、条件が複雑だったり、
textフィールドのlikeだったりすると、
重いクエリーが2回発行されることになってしまいます。

そこでlimitを使わずmysql_data_seek()と、
mysql_num_rows()でやると1回のクエリーで済み、
効率的!と思ったのですが、
全件fetchと同じぐらいの大量のメモリーを使うようです。

はてさて皆さんはどうしているのでしょうか?
0549nobodyさん04/12/21 16:47:12ID:???
どんな処理か分からないのに「どうしているか」なんて答えられるわけないだろw
一般論としてコネクションがボトルネックになるならサブクエリ+ストアド。
0550nobodyさん04/12/21 17:02:20ID:AvesOqOi
携帯サイトにメールを配信するphpを作成してます。
ボーダフォンにのみメールが送れません。
サーバの設定なんでしょうか?

誰か類似の問題で悩んだ人いませんか?
以下、ソースです。
<?php
 mb_language('ja');
 mb_internal_encoding("SJIS");
 $rcd = mb_send_mail("[email protected]","メール登録","登録フォーム送信" , "From: ". "[email protected]");
 if($rcd){
  print " メール送信成功";
 }
 else{
  print " メール送信失敗";
 }
?>

神降臨キボン
0551nobodyさん04/12/21 17:04:34ID:???
何がしたいのか分からん
mysqlでtextにlike検索かけることもありえないし
0552nobodyさん04/12/21 17:22:24ID:???
>>550
そのコードでためしてるの?
ならvodaの受信制限にかかってるんだと思うけど。
原因の切り分けをやりなよ。
0553nobodyさん04/12/21 17:44:55ID:???
>>550
MySQL4.0以降で、FOUND_ROWS()を使う。
http://dev.mysql.com/doc/mysql/ja/Miscellaneous_functions.html

つかこういう質問はくだ質でやらずに、MySQL関連スレでやるべき
055455304/12/21 17:45:53ID:???
ごめん。>>553 は >>548 宛
0555nobodyさん04/12/21 18:15:54ID:AvesOqOi
vodaの受信制限ってどうすれば知れべれるの?
0556nobodyさん04/12/21 18:20:37ID:???
google
0557nobodyさん04/12/21 18:33:37ID:AvesOqOi
携帯で受信拒否の設定はしてません。
別のレンタルサーバからは同じスクリプトで
メール送れてます。
0558nobodyさん04/12/21 18:42:29ID:???
>>553
まさにこれです!
素晴らしいです。涙です。

ありがとうございます。
0559nobodyさん04/12/21 18:54:17ID:???
Vodaなんぞにメールを送ること自体が間違い。
0560nobodyさん04/12/21 19:10:55ID:AvesOqOi
サーバのsendmailのmailertableをいじくったら
解決しました。
お騒がせしました。
056150004/12/21 23:38:53ID:wgtiEewb
あれから色々調べてみたんですが
やはりHTML_QuickFormは使用できないみたいなので
自前で関数を作ることにしました。

連想配列でフィールド名をkeyにして
それにたいしてさらに配列で
データの属性や最大入力値をセットしておいて
検証していこうとかなーと思いました。
↓こんな感じで。
$fields = array( "year"=>array("type"=>"int","length"=>4)・・・)
この場合だと年のフィールドには数値が4桁入るみたいな感じです。

もっと効率のよい方法があればぜひ知恵を拝借したいです。
よろしくお願いします。
0562nobodyさん04/12/22 06:15:40ID:???
>>561
項目ごとに制限が変わるならif文で一個一個書いたほうが早いんじゃまいか
0563nobodyさん04/12/22 14:18:19ID:PAkfsMlB
echo と print は、どっちがスゴイの?
0564nobodyさん04/12/22 14:36:09ID:0NGp8KFP
echoとかphpスクリプト外のhtmlを標準出力じゃなくてファイルに出力することは出来ませんか
0565nobodyさん04/12/22 14:44:52ID:???
>>563
echoは結果を返さない。
printはtrueかfalseを返す。

>>564
できます。
056656404/12/22 14:56:22ID:???
>>565
どうすればいいんですか
0567nobodyさん04/12/22 15:22:00ID:???
>>563
マニュアルにもあるが、echoは関数じゃない。
0568nobodyさん04/12/22 15:43:41ID:???
>>563
マニュアルにもあるが、printは関数じゃない。
0569nobodyさん04/12/22 20:04:50ID:???
単なるエイリアス
0570nobodyさん04/12/22 20:45:14ID:???
>>569
嘘いうなっての。
ZEND_PRINTとZEND_ECHOで、ZEのソース辿れ。
0571nobodyさん04/12/22 21:06:12ID:???
execでunixのコマンドを利用してます。
exec($command,$result,$boolean);
で実行できるのですが、コマンドがエラーを吐いた時にエラー内容を出力
させたいのですが、できるのでしょうか?

マニュアルを見て、googleで検索しましたが出てきませんでした。
よろしくお願いします。

0572nobodyさん04/12/22 22:02:13ID:???
>>571
無理。
マニュアルに書いてあったはず。
0573nobodyさん04/12/22 22:53:51ID:???
>>571-572
リダイレクト
0574nobodyさん04/12/23 01:36:06ID:???
>>572

うそ、標準出力と標準エラー出力分けて受けとれないの?使いものにならないじゃん。
0575nobodyさん04/12/23 01:41:00ID:???
別にお前は使わなくていいよ
0576nobodyさん04/12/23 02:14:31ID:???
>>574
元々そういう用途じゃないしなぁ
057757104/12/23 05:03:15ID:???
>>573
リダイレクトは、
exec("$command > $redirect");
とかで$redirectに入ってくれるのでしょうか…(今環境なくて試せなくてすみません。)

できないというのと、できるというのはどちらが正しいのでしょうか。
0578nobodyさん04/12/23 13:26:41ID:???
PHP のバージョン番号を取得するにはどうしたらいいのでしょうか?
よろしくお願いします
0579nobodyさん04/12/23 13:29:24ID:???
>>578
マニュアルを検索してみな
0580nobodyさん04/12/23 13:31:07ID:???
>>578
phpversion()
0581nobodyさん04/12/23 13:31:47ID:???
>>579
不親切なお方
0582nobodyさん04/12/23 13:33:13ID:???
>>580-581 責任もって一生面倒見てやれよ。
0583nobodyさん04/12/23 13:36:45ID:???
Let me try to be back to this place any day
0584nobodyさん04/12/23 22:16:01ID:???
>>577
リダイレクトはPHPじゃなくてシェルの機能。
PHPの変数が使えるわけがない。
0585nobodyさん04/12/24 03:29:30ID:???
>>577
"$command > $redirect"が文字列と解析されてexecに渡されるんだから、
$redirect の値は変化しないよ。プログラミング言語の構文解析を理解しよう。

0586nobodyさん04/12/24 07:25:48ID:???
なんだ?こいつら
0587nobodyさん04/12/24 09:14:28ID:???
sample1.php
<?php
$test=1;

include 'sample2.php';
sample($test);
?>

sample2.php
<?php
function sample($data){
global $sample;
$sample = $data;
//echo $sample; ←これは表示される
}
?>
<?php
echo $sample;
?>

sample1.phpで$testの値をsample2.phpに送り
sample2.phpのfunction sample(){}の外から
送られてきたデータを表示させたいのですが、上手く行きません
function内部でグローバル関数にはしているのですが・・・

そもそもこのようなことは可能なのでしょうか?
もし可能でしたらやり方を教えてください
0588nobodyさん04/12/24 12:44:13ID:???
>>587
その書き方だと

$test=1;
 ↓
echo $sample; ←この時点では$sampleに何も入ってない
 ↓
sample($test); ←ここで$sampleに代入が行われる

って処理順になるから無理
やりたいことが分からんけど、sample()で$sampleをreturnしてそれ拾ったらダメなのか?
0589nobodyさん04/12/24 12:52:00ID:???
>>587
globalを勘違いしてるな。

<?php
$hoge = 'fuga';
$hogehoge = 'fugafuga';
function sample($data)
{
    global $hoge;

    echo $hoge;
    echo "\n";
    echo $data;
}

sample($hogehoge);
?>

//実行結果
fuga
fugafuga
//ココまで

functionの外で定義されている変数を引数として渡さずに関数に渡す方法としてglobalがある、ということ。
だから、必要もないのにglobalを使うのは控えた方が良い。

ついでに言うとincludeの解釈も何かおかしい。これ以上は面倒くさいので他の人に任せるわ。
059058904/12/24 12:54:18ID:???
>>588
の方が簡潔でわかりやすかったね。
別の場所で釣ってくる
0591nobodyさん04/12/24 13:37:53ID:???
 PHPでサイトの管理が出来ると小耳に挟んだのですが、どうやってやるのでしょう?
アドレスを変数に代入しまくっておいてそれをナビゲーションバーなどの部分にincludeさせるとかでしょうか?

 PHPでサイトを管理するってのは良い事(=ラク)なのでしょうか。。。
0592nobodyさん04/12/24 14:04:44ID:???
管理という意味が分からない
059359104/12/24 14:49:54ID:???
>>592
すみません。(汗
具体的には全ページにリンクを貼ったり、最新の記事を表示させたり…などのことです。
「サイト構築」の方が正しい言い方でした。。。
0594nobodyさん04/12/24 15:38:44ID:???
>>593
出来合いのものではxoopsやphpnukeがそんな機能を持ってるけど、
一からそれらを作ろうとしたり、モジュール(機能クラス)を作るとなるとメンドクサイ。
ソースを公開しているものが多いので「CMS php」で検索してみるといいかも。
0595nobodyさん04/12/24 17:27:05ID:???
>>594
なるほど、便利そうなツールですね…。
なんとかレンタルサーバーで使えないものでしょうか(^_^;
0596nobodyさん04/12/24 18:05:28ID:???
>>595
レン鯖板逝ってテンプレ読め。
それでわからなければ諦めろ。お前には無理
■ このスレッドは過去ログ倉庫に格納されています