【PHP】下らねぇ質問はここに書き込みやがれ 68
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/05/03(土) 22:52:16ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは970が立ててください立たなかった場合は980よろ
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 67
http://pc11.2ch.net/test/read.cgi/php/1207863515/
◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を必ず明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくはトリップをつける事。
◆質問後の注意
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくは質問時のトリップをつける事。
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0357nobodyさん
2008/05/10(土) 10:59:14ID:3v++6OkNrunkitを入れたのですが、
これだとクラスのメソッドを書き換えるのでちょっと大げさです
オブジェクトだけのメソッドを書き換えるにはどうしたらいいですか?
0359nobodyさん
2008/05/10(土) 11:52:36ID:???0360nobodyさん
2008/05/10(土) 12:45:57ID:???0361nobodyさん
2008/05/10(土) 13:22:00ID:???ログイン
↓
セッション生成、値格納
↓
ページ移動(ページA)
↓
セッション情報を使う
↓
ページ移動(ページB)
↓
セッションがなくなる
こんな感じになります。
ページAとBは同じソースなので
プログラムがおかしい時はどっちもおかしくなりますw
DoCoMoはうまくいったのですが....
解決方法をご存知の方。
教えてください!
よろしくおねがいします、
0362nobodyさん
2008/05/10(土) 13:24:46ID:vET5c+ho良くある、ページが2つのエリアに別れていて「左がメインコンテンツ」「右がコンテンツに関連する広告」
みたいな構造って、左のコンテンツを吐き出す処理の中で、その中のキーワードに応じて
右のコンテンツを吐き出すfunctionを叩くような形になっているんでしょうか?
もしくは、広告のキーワードを変数として吐き出して、それを広告部分のphpが取得して
出力処理って流れなのかな? (ad.php?key="music"みたいな…)
どういうやり方で作ればいいのか、アドバイスお願いします
0363nobodyさん
2008/05/10(土) 13:48:26ID:???0364nobodyさん
2008/05/10(土) 14:36:45ID:???で、>>362の場合は好きに作れって結論になると思うが
良くあるって話だと今はフレーム切らないから、メインコンテンツを吐く処理中に
広告を吐くfunctionを呼びゃいいんじゃね
テンプレートエンジンを使ってるなら、出力順なんて気にならないだろ
0365361
2008/05/10(土) 14:49:38ID:???0366nobodyさん
2008/05/10(土) 14:51:57ID:???コンテンツの内容に合わせて広告も変えるってことでいいのかな
それだとしたらphpshotのここ最近の記事を参照
ヒントはここまで
0367nobodyさん
2008/05/10(土) 15:20:51ID:???どこまで最適にやるかって話はあるけど、amazonのなんかだと自動的に判別してくれるんじゃないの。
0368nobodyさん
2008/05/10(土) 15:34:43ID:baYV5j6gPHPにおける特殊記号の取り扱いについて質問させていただきます。
以下の処理を行っているのですが特殊記号'―'(ダッシュ)の扱いで悩んでいます。
1.文字コード'utf-8'のファイル内文字列をget_filecontentsで取得
2.取得文字列を'SJIS'に変換(mb_convert_encoding使用)
3.文字列内に'―'が存在していた場合'?'となってしまう
ex)"今日の野球結果 5―6"(文字コードutf-8)
->SJIS変換後 "今日の野球結果 5?6"
特殊文字'―'を文字コード変換できずに上記のような現象が起こっていると
思うのですがこれを回避する方法がありましたらご教示お願いします。
※サーバ:solaris
PHPバージョン:4.3.8
0369nobodyさん
2008/05/10(土) 15:40:48ID:???0370nobodyさん
2008/05/10(土) 15:43:06ID:???該当部分のコードぐらい書けよ
だれもおまえが書いたようなコード書けるんだし、著作権を主張するほどのライブラリってわけじゃないんだろ
0372nobodyさん
2008/05/10(土) 16:12:21ID:baYV5j6gいや、仕事じゃないんですけれど
解決できてず、悩んでるので書き込みさせて頂きました。
0373nobodyさん
2008/05/10(土) 16:27:38ID:???これって MS932がSJISと異なるとかいう話題だよね。
試してないけど、SJISじゃなくて、SJIS-WIN とか指定すればいいのかな。
0374nobodyさん
2008/05/10(土) 16:28:39ID:???session_destroy();
するとうまく動作しないんですがなんででしょうか
0375nobodyさん
2008/05/10(土) 16:29:14ID:baYV5j6gfunction XML_Analizer($file,$correct_feed){
if( !file_exists( $file ) ){
$cpCmd = '/usr/bin/cp -p ' . $correct_feed . ' ' . $file;
system( $cpCmd, $ret );
}
$data = file_get_contents($file);
$data = str_replace("[―]","-",$data);
if( !$data ){
return false;
}
$str_encoding = mb_detect_encoding($data, 'auto');
if ($str_encoding != 'UTF-8') {
$data = mb_convert_encoding($data, 'UTF-8', $str_encoding);
}
$Unserializer =& new XML_Unserializer();
$Unserializer->setOption('parseAttributes', TRUE);
$status = $Unserializer->unserialize($data);
if ($status === true) {
$res_array = $Unserializer->getUnserializedData();
$arr_result_constructure[] = $res_array;
return $arr_result_constructure;
}else{
return false;
}
}
この後utf-8からSJISに文字コード変換しています
'―'の文字コード「?」を使って文字変換できないものでしょうか。
※$data = str_replace("[―]","-",$data); このあたりで
0376nobodyさん
2008/05/10(土) 16:31:23ID:baYV5j6gありがとうございます
早速ためしてみます!
0377nobodyさん
2008/05/10(土) 16:32:23ID:DzSEGQLQ$array = array(あ,い,う,え,お,か,き,く,け,こ);
これを
$array = array(い,え,か,く,こ);
にしたいんだけど。
0378nobodyさん
2008/05/10(土) 16:39:49ID:baYV5j6g誤記がありました
この後utf-8からSJISに文字コード変換しています
'―'の文字コード「―」を使って文字変換できないものでしょうか。
~~~~~~~~~~~
※$data = str_replace("[―]","-",$data); このあたりで
0379nobodyさん
2008/05/10(土) 16:56:03ID:???$dest = ();
$t = length($array) / 2;
for (int i = 0; i < $length; $i++) {
$dest[] = $array[$i * 2];
}
0380nobodyさん
2008/05/10(土) 17:02:50ID:???$_SESSION = array();
session_destroy();
session_unset();
これらを使ってセッションの中身(?)を消そうと思ったんですが
DoCoMoではdestroy以外、auでは全てで消えませんでした。
仕様ですか?w
0381380
2008/05/10(土) 17:08:56ID:???old A
new B
data 100
としてお気に入りに入れて
再度アクセスしたら
old B
new C
data 100
で出てくるような感じです。
A、B、CはPHPSESIDをあらわしてます。
dataはsessionでもちまわってるデータです
0382nobodyさん
2008/05/10(土) 17:46:30ID:09hEgNWCどうやってインストールしたらいいのでしょうか?
0384380
2008/05/10(土) 18:50:06ID:???アドレスはBでくるのに
old C
new D
になってしまい、それはそれでおかしな動作になります(T_T)
0385nobodyさん
2008/05/10(土) 19:42:52ID:???ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?queId=7136970
こちらのほうがきれいなコードでおすすめ
0386nobodyさん
2008/05/10(土) 19:46:46ID:???0387nobodyさん
2008/05/10(土) 19:57:15ID:???0388っ
2008/05/10(土) 20:50:31ID:bCQuG41r0389nobodyさん
2008/05/10(土) 21:04:08ID:???0391nobodyさん
2008/05/10(土) 21:17:42ID:ZfUSU8TDログインチェック用に別ファイルの.phpをすべてのページに読み込ませたいと
思っています。
個別に include()させるほかにどんな方法があるでしょうか?
アドバイスお願いします
もしかしたらphpの話題からずれてるかもしれませんが、もちろんphpでも
うまいやり方があれば教えてください。よろしくお願いします
0392nobodyさん
2008/05/10(土) 21:20:53ID:???0393nobodyさん
2008/05/10(土) 21:34:39ID:batXv2Osxdebugをインストールし、有効にすると、
zend debuggerがphpinfoに表示されなくなりました。
zend debuggerとxdebugは同時に使うことが出来ないのでしょうか?
同時に使う方法があれば教えてください
0394nobodyさん
2008/05/10(土) 21:42:03ID:???0395nobodyさん
2008/05/10(土) 22:22:47ID:???エラー時のスタックトレースはxdebug
って感じに両方の機能を使いたいんですが
やっぱり無理ですかね〜
0396nobodyさん
2008/05/10(土) 22:37:07ID:???0398nobodyさん
2008/05/10(土) 22:47:07ID:???0399nobodyさん
2008/05/10(土) 22:57:37ID:???0401nobodyさん
2008/05/10(土) 23:14:52ID:???0402nobodyさん
2008/05/10(土) 23:22:14ID:???zend studio+zend debuggerを使ってデバッグをしていましたが、
xdebugをインストールし、有効にすると、
zend debuggerがphpinfoに表示されなくなりました。
zend debuggerとxdebugは同時に使うことが出来ないのでしょうか?
同時に使う方法があれば教えてください
395 名前:nobodyさん[sage] 投稿日:2008/05/10(土) 22:22:47 ID:???
デバッグはzend debugger
エラー時のスタックトレースはxdebug
って感じに両方の機能を使いたいんですが
やっぱり無理ですかね〜
397 名前:nobodyさん[sage] 投稿日:2008/05/10(土) 22:44:15 ID:???
>>396
お前に聞いてねーよデブ
400 名前:nobodyさん[sage] 投稿日:2008/05/10(土) 23:01:55 ID:???
>>399
ゴリラは動物園に帰れよ
0403nobodyさん
2008/05/10(土) 23:48:22ID:0rIgLgLyフォームの(POST)データをデータベースに入れる際
何か処理(htmlspecialcharsなど)をしたほうがいいのでしょうか?
それとも何も処理無しでも問題ないのでしょうか?
もしよろしければデータベースに入れるまでの処理をご教授ください。
よろしくお願いします。
0404nobodyさん
2008/05/10(土) 23:49:50ID:???0405nobodyさん
2008/05/10(土) 23:50:55ID:DfRnQgur0406nobodyさん
2008/05/10(土) 23:53:09ID:???htmlspecialcharsはDBに入れるときじゃなく表示するときに処理する
DBには生データを入れて問題はないんじゃね
もちろんSQLインジェクション対策だけはしてな
0407380
2008/05/11(日) 00:19:51ID:???携帯3キャリア共通でうまくセッションを持ちまわる方法をいろいろ試し中です。
SIDを用いることはわかったのですが
クッキーが残ったりでうまくいってないように感じます。
よろしくおねがいします。
0409nobodyさん
2008/05/11(日) 00:39:36ID:lx6MvMXPありがとうございます、それってどういうことですか?
済みませんが良くわからないのでもう少し解説お願いします
0411nobodyさん
2008/05/11(日) 01:25:39ID:???ログインチェックファイルがあるじゃん?
あとそれぞれの個別コンテンツがあるじゃん?
前者の中で後者をincludeするってこと。
0412377
2008/05/11(日) 03:45:04ID:KEs91aIs>>385
ありがとう〜!
両方試してみました。
>>385のリンク先のソースを利用することにしました。
どもです!
0413nobodyさん
2008/05/11(日) 06:14:53ID:4J9HPCgP$_POST["hoge"]
の違いってなんなんでしょうか?
サンプルで
if (isset($_POST["submit_resdel"])){
$res_no = key($_POST[submit_resdel]);
って記述があったんですが、これって2個目の$_POST[submit_resdel]は
$_POST["submit_resdel"]でもいいんじゃないかという気がするのですが・・・。
0414nobodyさん
2008/05/11(日) 07:04:04ID:???0415nobodyさん
2008/05/11(日) 07:09:19ID:LZ9HoYsn__construct()が問題なく呼び出されているのですが、
PHP4系でも対応してるんですか?
0416nobodyさん
2008/05/11(日) 07:09:30ID:???0418413
2008/05/11(日) 07:18:18ID:4J9HPCgPこんな時間にありがとうございます。
>>414さん
やっぱりそうなんでしょうか・・・。
ここの例では、submitするとき、以下のように組んで配列っぽく
セットしてるんですが、
while($row = $mysql->fetch()){
$no = $row["no"];
$name = $row["name"]
echo <<<EOT
$no:
<input type="text" name="name[$no]" value="$name" size="10">
<input type="submit" name="submit_resdel[$no]" value="削除">
<br>
EOT;
}
このときだけは特別、とかいうことは・・・ないですよね。。
>>417さん
動作はするんですね!
でも、どっちも[submit_resdel]にしちゃうとそれはそれで動作しませんよね?
0420413
2008/05/11(日) 07:43:03ID:4J9HPCgPありがとうございます。やはり書き間違いですか・・・
今回のこの件をググってる最中に↓のようなページをみつけたんですが、
ttp://oshiete.coneco.net/qa4004454.html
このページでの質問者も同じように記述してるんですよね・・・わざわざダブルクォーテーション外して・・・。
key関数を使うときだけ・・・?とか色々考えたんですが、
とりあえず書き間違いと思って進めていこうと思います。
皆様ありがとうございました。
0421nobodyさん
2008/05/11(日) 08:08:48ID:???runkit_method_redefine
これじゃできないん?
もうちょっと具体的にやりたい事書かないとわからん
0422nobodyさん
2008/05/11(日) 08:10:14ID:???カメレスであれだけど、一応。
書き間違えとは思うが、文法的には未定義の定数の動作。
PHPは好きだけど、さすがにこの仕様はどうかと思う。
http://www.php.net/manual/ja/language.constants.php
>未定義の定数を使用した場合、ちょうどstringとして コールしたかのように(CONSTANT vs "CONSTANT")、
> PHPはその定数自体の名前を使用したと仮定します。
0423413
2008/05/11(日) 08:19:46ID:4J9HPCgPおおっ!ありがとうございます!
なるほど、未定義の定数として使用され、さらにそのものの名前を使用したと解釈されて
動作しちゃうわけですね・・・。。
私自身、現在習作を作る過程でPHPに慣れようとしているのですが、
確かにこの仕様には違和感がありますね。
書き間違えだったとしても、きちんと動作したものとして公開されていた理由がわかって、
やっとスッキリしました。
やっと寝られます。笑 ありがとうございました!
0424nobodyさん
2008/05/11(日) 08:24:05ID:???どっちかってーと
http://www.php.net/manual/ja/language.types.array.php#language.types.array.foo-bar
こっちだな
>>415
__constructを使ったコンストラクタはphp5からで
php4の場合はただのメソッドになる
class Hoge {
function __construct() {
echo 'A';
}
function Hoge() {
echo 'B';
}
}
これを実行したらphp4の場合はBが出てphp5の場合はAが出る
で、php5で__constructが無い場合はHogeが呼ばれる
0425415
2008/05/11(日) 08:33:54ID:LZ9HoYsn確かにそうでした!
>PHP4.4.4(サーバはxrea)で、
>__construct()が問題なく呼び出されているのですが、
というのは、自分のテストコードに間違いがあったための、勘違いでした。
0426nobodyさん
2008/05/11(日) 12:51:45ID:t1T6pRlq「1が出る確率は50%、2が出る確率は30%、3が出る確率は20%」
と言う風に、確率として表示する場合、どういう計算式にすればいいのでしょうか?
0427nobodyさん
2008/05/11(日) 12:55:27ID:???567・・・2
89・・・3
0428nobodyさん
2008/05/11(日) 12:55:49ID:???0429nobodyさん
2008/05/11(日) 13:28:56ID:???/*
現在理論しか通じないパソコンとプログラミングで対話中です。
人様との円滑な対話モードへの切り替えが少々上手くいかない場合や遅い場合が多々ありますので、理屈や理論以外をお求めの方はご遠慮頂くか少々お待ち頂くか生暖かい目で見守ってくださるようお願い致します。
*/
0430nobodyさん
2008/05/11(日) 13:41:54ID:???$a = array(1,1,1,1,1,2,2,2,3,3);
echo $a[array_rand($a)];
0431nobodyさん
2008/05/11(日) 13:55:36ID:???PHP5 PEAR image_graph7.1
でjpg画像を作りたいのですができません(PNGはできる)
$graph =& Image_Graph::factory("graph", array(array("width" => 400, "height" => 400, "canvas" => "PNG")));
ここの最後の方の部分をJPGにする以外に変更が必要なのでしょうか?
下記の方法だと画像JPG画像はしっかり保存されてはいます。
$out = $Graph->done(array(
'tohtml' => TRUE,
'border' => 1,
'filename' => 'tes.jpg',
'filepath' => './',
'urlpath' => './'
)
);
0432nobodyさん
2008/05/11(日) 14:05:58ID:???0434nobodyさん
2008/05/11(日) 14:57:33ID:???Apache/2.0.52
PHP 4.3.9 (cgi) (built: Sep 20 2007 19:31:11)
mysql Ver 14.7 Distrib 4.1.20
phpmyadmin-2.11.6-1.el4.rf
という環境です。この環境で、
クライアントマシンから phpmyadmin にアクセスすると、
mcrypt 拡張をロードできません。PHP の設定を確認してください
と警告を受けます。mcrypt 関係は
libmcrypt-devel-2.5.7-2.el4.kb
libmcrypt-debuginfo-2.5.7-1.2.el4.rf
libmcrypt-2.5.7-2.el4.kb
mcrypt-2.6.4-2.el4.kb
がインストールしてあるのですが。
この問題はどのようにフィックスすべきなのでしょうか?
それとも何も問題がないのでしょうか?
0435nobodyさん
2008/05/11(日) 15:12:25ID:???0436nobodyさん
2008/05/11(日) 15:15:43ID:???のRHEL4用php-mcryptを入れても大丈夫かもしれんが試してない
0438nobodyさん
2008/05/11(日) 18:57:26ID:???0439nobodyさん
2008/05/11(日) 20:39:47ID:???0440nobodyさん
2008/05/11(日) 21:00:47ID:???そんな時代にあって、俺はその天才的な人間の1人なのかもしれない。
俺のせいで、仕事がなくなって首になった奴が相当いる。
もちろん、その中には潰れた会社もある。
でも、それが自然淘汰、適者生存であり自然の摂理なのだから・・
0441426
2008/05/11(日) 23:21:03ID:t1T6pRlqありがとうございます。上手くできました。
ただ、細かい%で区切りたい場合はどうなるのでしょうか?
array内の数が増えすぎると思うのですが・・・。
if文と倍数を使う方法も考えたのですが、数学が苦手でわかりません。。
何か良い関数はないでしょうか?
0444nobodyさん
2008/05/11(日) 23:37:06ID:???0445426
2008/05/11(日) 23:42:46ID:???教えて貰ったのを参考に、以下のソースを作りました。
たぶん、行けるのではないかと思っていますが、おかしい場合は指摘して下さい。
$item = array("aaa"=>"50","bbb"=>"30","ccc"=>"20");
$num_max = array_sum($item);
foreach($item as $keys => $values){
$number = $values/$num_max*10;
for($i=0;$i<$number;$i++){
$array[] = $keys;
}
}
echo $array[array_rand($array)];
0446nobodyさん
2008/05/11(日) 23:48:23ID:???0447nobodyさん
2008/05/12(月) 00:05:59ID:???0448nobodyさん
2008/05/12(月) 00:17:13ID:???0449nobodyさん
2008/05/12(月) 00:59:12ID:???http://jp2.php.net/manual/ja/simplexml.examples.php
$obj = new SimpleXMLElement($xml);
PEARのXML_Serializerを使わないで、PHP5の関数を使って
オブジェクト$objを配列に変換するにはどうしたらいいですか?
0450449
2008/05/12(月) 01:01:55ID:???0451449
2008/05/12(月) 01:45:29ID:???秋元さんのブログの解説?
http://akimoto.jp/blog/2008/01/05/php%E3%81%A7%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92%E9%85%8D%E5%88%97%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AFget_object_vars/
よく分からなかったので、とりあえずPEAR::XML_Serializerを使うことにしました!^^
…便利すぎて勉強にならん><
0452449
2008/05/12(月) 01:49:26ID:???$unserializer = new XML_Unserializer();
$unserializer->unserialize($xml);
$array = $unserializer->getUnserializedData();
print_r($array);
これでOK
$obj = new SimpleXMLElement($xml);
でも値を取り出せるのでOKなんだけど、データ型はオブジェクトのまま
配列と同じ操作で扱うのは何か変だなーと思った
おやすみなさい
0453nobodyさん
2008/05/12(月) 01:53:48ID:???0454nobodyさん
2008/05/12(月) 07:24:54ID:o0vmBy2P今運営しているPCサイトの携帯版を作ろうと思っています。
携帯用にするとき、元のサイトのサイズが大きいため分割する必要があると思い自分なりにやってみましたが、
分割のやり方が悪いため、htmlタグの途中で切れたりして変になってしまいます。
//1ページあたりの文字数(ページのサイズ)
$pagesize=1000;
元の文字列をページサイズで割り、合計のページ数を出す
$totalpage=ceil($str/$pagesize);
//↓1ページ目の場合は、テキストが0〜1000までの部分文字列になる
$text=mb_substr($str,($page-1)*$pagesize,$pagesize);
上記のようにやってみたのですが、下記のようになったりします。
----------------------------------------------------
nページ目のテキスト終わり部分
・・・・・・・・
<a href="http:
---------------------------------------------------
n+1ページ目のテキスト始め部分
//hoge.com">ホゲドットコム</a>
---------------------------------------------------
タグの部分で分割させないためには、
1000文字を超えたところで一番最初に出てくる \n で分割したりすればいいと思うのですが、
それはどのようにやればいいのでしょうか。
アドバイスお願いします。
0455nobodyさん
2008/05/12(月) 07:42:33ID:???. が1バイトになるのか1文字になるのかは、よく知らないから自分で確認してね。
■ このスレッドは過去ログ倉庫に格納されています