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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/05/27(火) 18:04:33ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 68
http://pc11.2ch.net/test/read.cgi/php/1209822736/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0573nobodyさん2008/06/16(月) 12:47:09ID:???
>>572
世界最高のハッカーでもそれは無理な相談だ。

2文字じゃなく4バイトなんだよな?
4バイト目がマルチバイトの一部の場合は、
3 or 5バイト取得したいってわけでもないんだよな?

この意味が分からんなら、ちょっとバイトについて勉強してこい。
この意味が分かるなら、人に伝達する努力をしろ。
0574nobodyさん2008/06/16(月) 12:48:35ID:???
誰かが言う前n言っておく。
それよりバイトしろ。
0575nobodyさん2008/06/16(月) 12:51:05ID:???
バイトいってきます
0576nobodyさん2008/06/16(月) 13:01:42ID:???
あっ、すいません、4バイト取得しようとして文字化けするようなら3 or 5バイト取得したいんです。
0577nobodyさん2008/06/16(月) 13:08:57ID:???
ブラウザ表示限定なら、バイト列をレスポンスして、ブラウザでデコードするJSなりASなりを書けば、特殊な字を書かない限りは対応できるよ、俺なら。
0578nobodyさん2008/06/16(月) 13:55:38ID:???
mb_strlenは?
0579nobodyさん2008/06/16(月) 13:57:33ID:???
>>578
文字数ではなくバイト数をご希望のようです
0580nobodyさん2008/06/16(月) 14:05:46ID:???
前から1バイトずつ見ていくしかないかな
0581nobodyさん2008/06/16(月) 14:06:10ID:???
>>572
echo mb_strcut("あ1い", 0, 4, "sjis");

あ1
0582nobodyさん2008/06/16(月) 14:10:54ID:???
うまくいきました。皆さんありがとうございました。
0583nobodyさん2008/06/16(月) 14:29:35ID:???
PDO::FETCH_ORI_ABSってMysqlだとちゃんと動かんの?
普通にふぃっちするだけなんだけど。
0584nobodyさん2008/06/16(月) 14:32:14ID:???
>>583
コードうp
0585nobodyさん2008/06/16(月) 15:01:09ID:???
include 'db.php';
$sql = "select * from users order by id ";

$stmt = Db::singleton()->prepare($sql, array(PDO::ATTR_CURSOR, PDO::CURSOR_SCROLL));
$stmt->execute();
var_dump( $stmt->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_ABS, 3) );
var_dump( $stmt->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_ABS, 1) );

こんな感じ
普通にIdが1・2・3という順番でくる
0586nobodyさん2008/06/16(月) 15:29:45ID:???
http://bugs.php.net/bug.php?id=34625
ぐぐったら上から3つ目くらいに出てきた
0587nobodyさん2008/06/16(月) 16:49:42ID:NSiUFpCp
array_searchやin_arrayを多次元配列に対応させたいのですが、
なにか良いアイデアはないでしょうか?

このとき、多次元配列の深さ(?)はマチマチです。

たとえば、

$hoge = array(
'a' => 'a1',
'b' => array(
'b1' => 'b1',
'b2' => array(
'b2_1',
'b2_2'
)
)
);

このような配列があるとき

print(in_array('b2_1', $hoge));
で、trueが返ってくるようにしたいのです。

自分なりに考えたのは
foreachで回して、もし配列だったらさらにforeachで回す、
というような方法なのですが、
もうすこしスマートなやりかたがあったら教えていただきたいのですが・・・

アドバイスお願いします。
0588nobodyさん2008/06/16(月) 17:10:05ID:???
array_walk_recursive
0589nobodyさん2008/06/16(月) 17:14:43ID:???
書いてみた

function recursive_in_array($str, $arr){
$ret = false;
foreach($arr as $v){
if(is_array($v)) $ret = recursive_in_array($str, $v)?true:$ret;
else $ret = $v==$str?true:$ret;
}
return $ret;
}
05905872008/06/16(月) 17:25:50ID:NSiUFpCp
>>588
array_walkという関数は知っていましたが
array_walk_recursiveという関数もあったのですね!
これをうまく使えばなんとかなりそうです。

>>589
あらかじめ関数を作って、配列が見つかったらもう一度関数を呼び出す、
ということですね!
たしかにこれならスマートにできますね!

ほんとうにみなさんの知識や発想にはいつも驚かされます。
ありがとうございました!
0591nobodyさん2008/06/16(月) 18:28:20ID:???
>>587
$target = 'b2_1';
array_walk_recursive( $hoge, create_function( '$value,$key', 'if( $value == $target ) print "true";' ) );
眠くて、全然思考がまとまらんのに、なぜこんなことやってんだろ?w
0592nobodyさん2008/06/16(月) 19:51:28ID:pwDo5eRw
PHP5を使ってます。

PDOを使った、総レコード数を出すにはどうしたらよいでしょうか?

rowCount()は知っているのですが、これもいまいち使えません。。。

ちなみに、ページ切り替え処理をやるために、総レコード数を出そうとしています。

宜しくお願いいたします。
0593nobodyさん2008/06/16(月) 20:08:26ID:???
>>592
COUNT(*)
0594nobodyさん2008/06/16(月) 20:23:25ID:pwDo5eRw
>>593

ありがとうございます。
ただ、

$SQLtxt = "SELECT COUNT(*) FROM table_name;";
$ss = $dbh->query($SQLtxt);
print "レコード数:$ss<BR>";


上記でもダメだったのですが、
数値化するために何かする必要はありますか?
0595nobodyさん2008/06/16(月) 20:25:17ID:???
PDOStatementからfetch
0596nobodyさん2008/06/16(月) 20:31:12ID:???
>>594からなら
$count = $ss->fetchColumn();
0597nobodyさん2008/06/16(月) 20:42:31ID:pwDo5eRw
>>596
ありがとうございます。できました!

向学ののために知りたいのですが、fechでも可能なのでしょうか?

$dbh = new PDO($host, $user, $pass);
$SQLtxt = "SELECT COUNT(*) FROM table_name;";
$ss = $dbh->fech($SQLtxt);
print "レコード数:$ss<BR>";

上記で実行したところ、fetchの行がエラーとなりました。。。


このあたり、prepareとか使えば、このあたり処理が速くできそうですね。
0598nobodyさん2008/06/16(月) 20:42:54ID:IjgN4Ncj
テキスト処理について質問です。
テキストファイル(実態はhtmlのソース)の中から、
<img src=".*">となっているところのみを抜き出して表示したいのですが、

if (preg_match_all("/<img src=.*>/si", file_get_contents("hoge.txt"), $matchs)) {
 foreach ($matchs as $value) {
  echo $value . "<br>\n";
&nsbp;}
}

という風な感じだと、
最初に現れる<img src=から、最後に現れる</html>まで全てmatchしてしまいます。
<img src=.*>のものだけを取り出すにはどのように改良したらよいか教えてください。

<img src="example0.jpg"><br>
<img src="example1.jpg"><br>
<img src="example2.jpg"><br>

このようにしたいです。
0599nobodyさん2008/06/16(月) 20:45:29ID:???
>>597
お前は何を言ってるんだ
0600nobodyさん2008/06/16(月) 21:02:02ID:???
>>597
もちろんfetchでも取れるが、ちゃんとマニュアルを読んだほうがいい
0601nobodyさん2008/06/16(月) 21:04:46ID:???
>>598
?
0602nobodyさん2008/06/16(月) 22:00:42ID:6F6SIf0V
setcookie("cookie_test","on",time()+60);

として60秒間はクッキーが有効になる設定をしているのですが、
60秒経ってもクッキーが消えていない時があります。(ifでチェックすると)

こういう場合、どうすればいいのでしょうか?
アクセスする環境やPCの問題なので、仕方ないのでしょうか?
0603nobodyさん2008/06/16(月) 22:46:53ID:???
>>602
きっちり60秒で消えなければいけない場合は時計の同期を考えないといけない
誤差程度の時間で消えてるなら気にしなくても大丈夫

どうしても60秒経過の判定が必要なら
何秒に発行したかまでクッキーに書いておいて読み込んで判定させるといい
0604nobodyさん2008/06/17(火) 00:58:42ID:uGaLdLWH
<?php
header( "Content-type:text/html;charset:utf-8" );
print "こんにちは";
?>

上記スクリプトを、
UTF-8で記述すると、IE7で文字化けします(Shift-JISで表示)。
※ ちなみに、FireFox2.0 / OPERA / Safari は、OKでした。

また、上記スクリプトの記述を、Shift-JIS にすれば、IEで正常に表示されます。

UTF-8で記述した上記のスクリプトでも、IEで文字化けしない対策はありませんでしょうか?
また、こういった事例と対策が説明されているページや資料などありましたら、
ご教示頂けましたら幸いです。
0605nobodyさん2008/06/17(火) 01:02:32ID:???
charset=utf-8 だろ
0606nobodyさん2008/06/17(火) 01:08:30ID:???
>>605
うわ……w
ありがとうございます。
もの凄い単純なミスでした。
どうして気付かないときは、半日でも一日でも気付かないんだろう……orz
0607nobodyさん2008/06/17(火) 01:15:38ID:???
$proxy = "192.168.10.1";
$port = 8080;
$url = "http://";
$fp = fsockopen($proxy, $port);
while(!feof($fp)){
$line = fgetss($fp, 4000);
print($line);
}
fclose($fp);

このようにプロキシ経由でソースを取得します。
mb_strpos関数である文字列が最初に現れる位置を探し
mb_substr関数で上記で取得した位置に+2した値から
文字を取り出すようなプログラムを考えています。
これら2つの関数の使い方は分かるのですが
fgetssを使用しているので上手く組み込むことが出来ません。
ソースの取得法又は関数で何かご教授いただきたいです。
0608nobodyさん2008/06/17(火) 01:18:10ID:???
$line .= fgetss($fp, 4000)
してループ抜けてからmb使えば?
06095682008/06/17(火) 01:22:10ID:???
ヤッター
遂にセッションIDを上書きする方法を見つけました!
header('Set-Cookie: '.session_name().'='.session_id().'; path=/');
とheaderで出力したら二行になりませんでした
0610nobodyさん2008/06/17(火) 01:28:33ID:???
fgetssで10行ほど文字列を取り込み、
それらの行全体での位置を探し、取り出したいので
ループを抜け出すと一行分しかできません。
取得法を変えるしかないですかね。
0611nobodyさん2008/06/17(火) 01:42:44ID:???
>>610
だから .= だっつってんだろが
0612nobodyさん2008/06/17(火) 01:44:02ID:???
>>610
連結代入って知ってる?
0613nobodyさん2008/06/17(火) 01:53:35ID:???
>>611-612
すいませんでした。意味が理解できたのでやってみます。
ありがとうございました。
0614nobodyさん2008/06/17(火) 07:04:37ID:???
ご教授
0615nobodyさん2008/06/17(火) 10:27:36ID:cJ7L3+9A
ある設定がしてある時のみ実行するのに一番コストの低い方法って何ですか?

とりあえず、設定がしてあるときにはfunctionの中身を定義して、
無いときには、空のfunctionを定義しています。
0616nobodyさん2008/06/17(火) 10:33:45ID:???
エスパー↓
06176152008/06/17(火) 10:42:28ID:cJ7L3+9A
わかりにくかったですか?補足します。
Cだと、
#if
#define NANIKA (hogehoge())
#else
#define NANIKA ()
#endif
という風にやれば、ある条件の時のみ、hogehoge()が実行されます。
PHPのほうでは
function nanika() {hogehoge();} と
function nanika() {;} をifの分岐でそれぞれ定義しています。
今のやり方よりも、実行時の負荷の低くなるやり方があれば、教えてください。
0618nobodyさん2008/06/17(火) 10:45:13ID:???
関数ポインタを変数に入れて切り替えるとか?
0619nobodyさん2008/06/17(火) 10:51:41ID:???
>>617
else節の省略が駄目な理由は?
06206022008/06/17(火) 11:16:09ID:???
>>603
レスありがとうございます。数秒の誤差は気になりますので
やっぱりちゃんと判定できる必要があります。

>何秒に発行したかまでクッキーに書いておいて読み込んで判定させるといい 何秒に発行したかまでクッキーに書いておいて読み込んで判定させるといい

と言うのはタイムスタンプを入れてそれで判別するということでしょうか?
06216152008/06/17(火) 11:18:54ID:cJ7L3+9A
すいません。大分間違った聞き方をしているようです。
整理しなおしてみます。

Cだと、
#if jouken
#define nanika(x) (nanika_func(x))
#else
#define nanika(x) ()
#endif

のようにすれば、nanika(hogehoge());は、
joukenのときだけnanika_func(hogehoge());を実行し、
joukenから外れる場合はnanika_func()もhogehoge()も実行されません。
PHPのほうでは
if (jouken)
function nanika(x) {nanika_func(x);} else
function nanika(x) {;}
のようにしておいて、nanika(hogehoge());というコードを書いています。
この場合、joukenに合わない場合、hogehoge();が一度実行されますが、
hogehoge();も実行されないようにできれば、
負荷を減らせられると考えています。何かありませんか?

hogehoge();が実行されるときの副作用に関しては、
現時点でも注意を払っています。
0622nobodyさん2008/06/17(火) 11:30:17ID:???
凝ったこと考えず素直に
if(JOKEN) nanika(hogehoge());
ではアカンの?
0623nobodyさん2008/06/17(火) 11:30:33ID:???
プリプロセッサとインタプリタの動作はわかってるのかな?
そこまで負荷を気にするのであればAPC等のアクセラレータを考えたほうがいい
0624nobodyさん2008/06/17(火) 11:36:08ID:???
>>621
Cだと、条件成立時には前者が関数としてコード化され実行ファイルに組み込まれ、
不成立だと消滅する。

実行時に条件判定をするなら、これは使えないんじゃないかな。
06256152008/06/17(火) 12:10:45ID:cJ7L3+9A
>>623
インタプリタなスクリプト言語でも、構文解析はともかく、
実行時は処理せずスキップする何かがあるかもと思って質問しました。

よくよく考えると実行時にスキップできるような処理系なら、
特別な構文とか技を使わなくても処理をカットするように実装するだろうから、
普通に記述してれば最適なようになってるでしょうね。

>>624
実行時というか、nanika()を呼ぶたびではなく、
function nanika();の定義時にjoukenを判断するだけでかまいません。
0626nobodyさん2008/06/17(火) 13:13:39ID:DvvNmeRS
URLを色々いじれる.htaccessってなんていう奴だったっけ…

modみたいな…

test.htmlをCGIに偽装して
test.cgiみたいにできる奴…
0627nobodyさん2008/06/17(火) 13:19:40ID:???
mod_rewriteのことか?
0628nobodyさん2008/06/17(火) 14:25:05ID:???
スレチだが、ずっと疑問だったクッキーやらセッションやら消しても、
なぜかこちらの情報が保存されてるサイトがあったから、
MACアドレスでも収集したのかとずっと思ってたんだが、
Flashクッキーなんてものがあったのね。
知らなかったわー
0629nobodyさん2008/06/17(火) 14:32:18ID:???
サーバ側でMACアドレスなんてわかるわけねーだろww
0630nobodyさん2008/06/17(火) 14:36:04ID:???
そもそもMACアドレスってルータ越しには伝わらんのじゃ?
0631nobodyさん2008/06/17(火) 14:39:18ID:wifkyQV+
質問です。
「この商品を見てる人はこんな商品も見てます。」
こういうの良く見るけど、どうやってるのでしょうか?PHPで出来ますでしょうか?
よろしくお願いします。
0632nobodyさん2008/06/17(火) 14:42:53ID:cLskKZdP
for($i = 1 ; $i <= 4 ; $i++)
{
$array['x'] = 15;
$array['y'] = 15;

switch($i)
{
case 1 : $array['x']++;
case 2 : $array['y']++;
case 3 : $array['x']--;
case 4 : $array['y']--;
}

for($j = 1 ; $j <= 4 ; $j++)
{
switch($j)
{
case 1 : $array['x']++;
case 2 : $array['y']++;
case 3 : $array['x']--;
case 4 : $array['y']--;
}

$array_map[] = "[{$array['x']}/{$array['y']}]";
}
}

array_unique($array_map);
print_r($array_map);

こういったループを徐々に深く(3重や4重)にしていきたいんですが、
ループを重ねるのはやはり大変なので、何か良いループ方法はありますでしょうか?
0633nobodyさん2008/06/17(火) 15:13:18ID:???
>>615

hoge.php
--------------------
function hoge(){
//code
}


main.php
---------------------

if(jouken){
require_once('hoge.php');
}


とか。
0634nobodyさん2008/06/17(火) 15:22:28ID:???
>>631
できますよ、実装は様々だけど。
例えばリファラを記録しておいて、一定数に達したらそういうメッセージ出すとか、
実際にはこんな商品を見ているという事実がなくても、
関連商品のリンクを見ているということにして貼る方法もあります。
下の方法は嘘になりますが見てる側からはわからないです。
また下の方法はHTMLだけで出来るのでPHPすら必要ないでしょうね。
06356032008/06/17(火) 15:42:12ID:???
>>620
そういうことです。
必要なデータ+時間をクッキーで送って
時間から60秒経過していれば〜の処理をする
のような感じでいいかと

でもクッキーはユーザー側で切ったり消したり値を書き換えたりできるから
60秒きっちりが取れないかもしれない。
特に連投制限のようなものだと意図的にやってる人には効果が無いので
もしそういう処理をやろうとしているならサーバ側でも何かしないとあまり意味が無いよ。
0636PHP℃素人2008/06/17(火) 16:35:00ID:6VYoJ2QR
自宅サーバの電源を切り忘れたときに外出先から携帯電話を使って
切断できたら便利だと思いPHPでシェルを実行するスクリプトを考え中です。
サーバOSはLinuxでユーザーに予め電源切断のみの権限を与えておきます。
<?php
echo shell_exec('shutdown -h now');
?>
としたのですがこれでよいでしょうか?
0637nobodyさん2008/06/17(火) 16:39:44ID:???
用途にもよるけど普通サーバの電源は年中無休でつけとくものだぜ
echoはしなくてもいいんじゃない?
あとパスワード設定するか誰でもアクセスできるような位置にはおかないこと
0638nobodyさん2008/06/17(火) 16:40:27ID:???
うごけばそれでよい
0639PHP℃素人2008/06/17(火) 16:45:30ID:6VYoJ2QR
>>637
実行したか確認したいのですがechoはいりませんか?
0640nobodyさん2008/06/17(火) 16:54:26ID:???
そんなマネやったことないからわからんけど、echoで出力するハズの
タイミングでは既に落ちてるんじゃ?
0641nobodyさん2008/06/17(火) 16:54:34ID:???
>>639
shutdownするってことはwebサーバも落ちるんだから確認のしようがないんじゃ?
外部のレンタルサーバにpingうつスクリプト置くか、pingうってくれるサイトから、
自鯖をシャットダウン後、ping送って確認してみるといいんじゃないか?
0642PHP℃素人2008/06/17(火) 17:38:30ID:6VYoJ2QR
>>640 >>641
とりあえず試してみます。
0643nobodyさん2008/06/17(火) 18:41:16ID:jPkgqGii
htmspecialchars($str, ENT_QUOTES);

上記でHTMLエンティティに変換したのですが、
HTMLエンティティを元に戻すにはどうしたらよいのでしょうか?
0644nobodyさん2008/06/17(火) 18:57:48ID:???
>>643
http://jp.php.net/htmlspecialchars
0645nobodyさん2008/06/17(火) 19:16:40ID:???
>>639
-tを付けて少し待たせるようにして、その間にメール送信
0646nobodyさん2008/06/17(火) 20:12:03ID:???
>>625の説明文が未だに理解できない……
__AUTOLOAD使うとかじゃいかんの?
0647nobodyさん2008/06/17(火) 20:44:51ID:???
>>632
念のために確認するが、
$array['x'] = 15;
$array['y'] = 15;
は、最初のループの内側でいいのか?
毎回初期化されるぞ。

どういう用途を想定しているのか分からんけど、再帰使えばいいと思う。
0648nobodyさん2008/06/17(火) 20:57:00ID:???
PHPを用いて CSVのデータを検索させたいのですが何かサンプルございませんでしょうか?
0649nobodyさん2008/06/17(火) 21:01:32ID:???
>>648
http://www.php.net/manual/ja/function.fgetcsv.php

少しはマニュアルよめ
0650nobodyさん2008/06/17(火) 22:30:39ID:???
多次元配列に収められた配列の分割方法がわかりません。
$arr[0]['name']=イヌ
$arr[0]['color']=白
$arr[0]['sex']=オス
$arr[1]['name']=ネコ
$arr[1]['color']=黒
$arr[2]['name']=リス
$arr[2]['color']=茶
$arr[2]['sex']=オス
上記のようなデータが格納された配列「$arr」があるとして、

0にあるものを配列「$hoge0」←(name=>イヌ,color=>白,sex=>オス)
1にあるものを配列「$hoge1」←(name=>ネコ,color=>黒)
2にあるものを配列「$hoge2」←(name=>リス,color=>茶,sex=>オス)

といった感じに、各配列に分解したいのですが、その方法を教えてください。
0651nobodyさん2008/06/17(火) 22:31:01ID:???
>>648
え、検索したらサンプルいっぱいでるじゃん
”PHP CSV”
0652nobodyさん2008/06/17(火) 22:34:08ID:???
>.650
array_walk_recursive

試しもせず、具体的なロジックまで求めだしたら、教えて君。
0653nobodyさん2008/06/17(火) 22:59:51ID:cLskKZdP
>>647
座標(15,15)から8歩でいける場所を全て抽出しようと思ってます
再帰とはどのようなものなのですか?
0654nobodyさん2008/06/17(火) 23:09:37ID:???
バカは一生バカのままでいろ。

>>650
for( $i=0; $i < count($arr); $i++) {
 foreach($arr[$i] as $key => $value) {
  ${hoge.$i}[$key] = $value;
 }
}

>>653
関数の中でその関数を呼び出す
0655nobodyさん2008/06/17(火) 23:54:31ID:7t0PU3Q3
サーバー FreeBSD PHP仕様

昔CGI-PLANTさんで配布していた
設定したファイルが更新していた場合に別ファイルで更新マークを付けられる、GETSTAMPを愛用いていました。
この度久しぶりにサイトを作る事にして、
古いデータからそのパッケージを発掘しまして、再利用する事にしました。
ところが、説明書などがなく、配布元さんでは公開停止。
ググって出てきた情報とうろ覚えの記憶で
JavaScript版の設定と記述をしたのですが、
CGI自体は動作しているのですが、HTMLでの表示が出来ません。
エラーなどではなくただスルーされてる感じなのですが、
いかんせんきちんとした説明書がないため何が足りないのかわかりません。

CGIを起動して、IDなどは一通り設定しました。
表示させたいファイルで、CGIを指定する記述と、
マークを出したい部分へはDocument〜の記述もしました。

申し訳ないのですが、どなたかこのCGIの説明書などをお持ちの方、
JavaScript版の設定方法を教えて頂けませんでしょうか。
0656nobodyさん2008/06/17(火) 23:55:17ID:???
>>653
ソレを出したいってことなら、一回発想変えてみたら?
方眼紙とか用意して点打ってみると、もっと効率のいい方法が見えてくる気がする。

function x_y($x, $y, $walk=8){
$map = array();
for($i=0;$i<=$walk;$i++){
$move_x = $i;
$move_y = $walk-$i;
for($j=0;$j<=$move_y;$j++){

$map[] = "[".($x+$move_x)."/".($y+$j)."]";
$map[] = "[".($x-$move_x)."/".($y+$j)."]";
$map[] = "[".($x+$move_x)."/".($y-$j)."]";
$map[] = "[".($x-$move_x)."/".($y-$j)."]";
}
}
return $map;
}

$map = x_y(15, 15, 8);

echo "<pre>";
print_r(array_unique($map));
echo "</pre>";

たとえばこんな。
0657nobodyさん2008/06/17(火) 23:57:59ID:???
>>655
まず、そのソースコードが、PHPか確認して下さい。
次に、スレタイをもう一度確認してください。
06586552008/06/18(水) 00:04:28ID:29hzMdPj
>>657
すみません、PHP専用のスレだと気がつきませんでした。
大変失礼しました。
0659nobodyさん2008/06/18(水) 00:33:45ID:???
PHP自信のアドレスを確認するにはどのようにすればいいのでしょうか?
0660nobodyさん2008/06/18(水) 00:38:31ID:???
PHP_SELF

もういやd
0661nobodyさん2008/06/18(水) 00:39:04ID:???
>>659
$_SERVER調べれ
0662nobodyさん2008/06/18(水) 00:45:48ID:???
http://localhost/hoge/hoge.php?action=entry
みたいなアドレスでPHP_SELFでやりましたら、
/hoge/hoge.php
のような感じで出てきたのですが、
http://localhost/hoge/hoge.php
という感じに出せないのでしょうか?
0663nobodyさん2008/06/18(水) 00:47:15ID:???
>>662
>>661
0664nobodyさん2008/06/18(水) 01:27:41ID:???
おまえら本当にマニュアル読もうとすらしないのな?
検索やキーワードで簡単に調べられるのに、それすらしないのな?
PHPのマニュアルは、スクリプト言語史上、最も親切な部類に属するのに。

だから、いつまで経ってもバカなんだよ。
まともな知識のある奴とバカの温度差が激しすぎる。
0665PHP℃素人2008/06/18(水) 01:32:36ID:FEsYSSp5
>>642 中間報告です
はじめにsudo設定でユーザhogeにノーパスワードおよびシステム終了権限を与える。

<?php echo shell_exec('sudo shutdown -t 5'); ?>
は白ページが出てなにも実行されない

そこでwhoコマンドであなたは?とたずねる
<?php echo shell_exec('who'); ?>
hogeですよと表示される hoge pts/0 Jun 17 20:22 (192.168.1.10)

でもsudoの実行ログを確認すると
Jun 17 22:01:45 linux sudo: (pam_unix) authentication failure; logname= uid=0 euid=0 tty= ruser= rhost= user=www-dataとなっていた
Apacheはwww-dataユーザの権限で動作しているのが原因か?
0666nobodyさん2008/06/18(水) 01:44:19ID:???
$ php hoge.php
$ php -f hoge.php

こいつらってなんか違うの?
0667nobodyさん2008/06/18(水) 01:50:39ID:???
ajaxについて教えてください。

以下のサイトにあるサンプルをサーバにあげて実行したのですが、
エラーになって正常に動きません。
エラーメッセージは xmlDoc has no properties です。
ttp://www.geekpage.jp/web/google-maps-api/gxmlhttp-3.php

このサンプルでは、phpからXML出力したものを読み込んでいますが、
ためしに、読み込み先をxmlファイルにして、サーバにxmlファイルを置くと
問題なく処理されます。

他のサイトで見つけたものを試しても、PHPからのXMLではうまくいかず、
読み込み先をxmlにした場合にうまくいきます。

関係あるかわかりませんが、サーバはXREAを使っています。

よろしくお願いします。
0668nobodyさん2008/06/18(水) 01:53:31ID:???
>>687
よくわかりませんがajaxはJavaScriptですよね
よくわかりませんがheaderでこのファイルはxmlですよって教えてあげてください
よくわかりませんがxrea無料なら自動広告が原因の可能性もなきにしもあらず
よくらからないのはめんどうなので適当にレスしたからです
0669nobodyさん2008/06/18(水) 04:43:20ID:zzNhp0Rl
ネットカフェからの接続を一部制限したいんですが、
何かよい方法ないでしょうか?
ネカフェ専用のブラウザがあったりして特別なUA持たせてるとか、
届け出るときにIP帯も届け出て公開しなければならなくてどこかに一覧があるとか、
ネカフェは絶対特定のProxy経由で接続しないといけないとかとか・・・
犯罪予告の防止にも国として何か対策を講じてくれるのが一番なのですが、
現状ないので何かネカフェからの接続がわかるような方法がありませんか?
0670nobodyさん2008/06/18(水) 05:06:32ID:z89NqzwY
区切り文字ごとにハッシュ配列に分解してくれる関数ってないですか?
$text = "a=1@b=2@c=3@=@@";
$hash = parseText($text,"@","=");
echo $hash["a"] // 1
echo $hash["b"] // 2
echo $hash["c"] // 3
こんな感じにしたいのですが。
0671nobodyさん2008/06/18(水) 05:12:48ID:???
explode
0672nobodyさん2008/06/18(水) 05:27:50ID:z89NqzwY
explode組み合わせて作りってことですか?
■ このスレッドは過去ログ倉庫に格納されています