【PHP】下らねぇ質問はID出して書き込みやがれ 119
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2012/05/16(水) 21:44:16.40ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 118
http://kohada.2ch.net/test/read.cgi/php/1335198562/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0698nobodyさん
2012/06/10(日) 00:06:03.13ID:???$result = array_values(array_unique(array_merge($foo, $bar)));
var_dump($result);
array(3) {
[0]=>
string(6) "google"
[1]=>
string(5) "yahoo"
[2]=>
string(8) "facebook"
}
0700nobodyさん
2012/06/10(日) 00:16:56.97ID:???array_values()でなんとかなりました
0701nobodyさん
2012/06/10(日) 00:41:01.93ID:/FvQmmQ6海外から英文のタイトルと本文を取得してきて(charset=iso-8859-1")、
それをファイルに書き込もうと思っています
しかし、
$fp = fopen($file_name, "w");
fwrite($fp, $content);
にてファイルを作成したらWindowsに表示される、
タイトルの中のCafeというファイル名が文字化けし、
また、ファイルを秀丸にて開くとShift-JISとなって文字化けしてしまっています
自分は設定など基本的に全てUTF-8にて統一しているのですが
どのようにすれば、タイトルと、ファイルを開いた時に文字化けせずに開けるようになるのでしょうか?
宜しくお願いします
0702701
2012/06/10(日) 00:46:10.38ID:???失礼しました
0703nobodyさん
2012/06/10(日) 00:46:19.33ID:???0705nobodyさん
2012/06/10(日) 10:34:39.38ID:???0706nobodyさん
2012/06/10(日) 17:13:30.35ID:pCGv1Wua[10-Jun-2012 07:26:50 UTC] PHP Warning: readfile(
この時間の部分を日本時間にするにはどうしたら良いんですか
0707nobodyさん
2012/06/10(日) 18:30:14.62ID:???次の行でfalseチェックしてるっつうの・・・@はダサいし
0708nobodyさん
2012/06/10(日) 19:31:53.73ID:???0709nobodyさん
2012/06/10(日) 19:50:38.33ID:???1,サーバの環境変数いじる
2,php.iniにdate.timezone = Asia/Tokyo指定してみる
エラーログとってないしやったことないからあってるかしらんけどきっとこのへん
>>707
チラ裏
0710nobodyさん
2012/06/11(月) 03:45:36.48ID:jrHSEb2l0712nobodyさん
2012/06/11(月) 05:59:24.75ID:???ストーカー?
0713nobodyさん
2012/06/11(月) 06:36:32.95ID:???0714nobodyさん
2012/06/11(月) 11:55:26.81ID:???0715nobodyさん
2012/06/11(月) 14:13:28.56ID:???0716nobodyさん
2012/06/11(月) 16:02:46.57ID:???0717nobodyさん
2012/06/11(月) 18:10:41.65ID:???バグというかマニュアルの不備というか、ちょっと酷い
0718nobodyさん
2012/06/11(月) 18:55:42.46ID:???0719nobodyさん
2012/06/11(月) 20:26:31.81ID:BvAs1C4Bどれも <?= ?> ではなく <?php echo ?> で出力してるのですが
なぜ echo を使ってるのでしょうか?
0720nobodyさん
2012/06/11(月) 20:33:01.14ID:???0721nobodyさん
2012/06/11(月) 20:42:14.29ID:BvAs1C4Bそれだ!
0722nobodyさん
2012/06/11(月) 20:43:15.00ID:???とくにサーバ構成がわからない場合
個人開発ならすきにすればいいんじゃないでしょーか
0723nobodyさん
2012/06/11(月) 20:55:21.85ID:???厳格なXMLとしてのXHTMLなぞ誰も使わない事が分かったため
5.4からは普通に使っていい
0724nobodyさん
2012/06/11(月) 21:51:59.63ID:1LdtwXlOcookieで制御する場合はcookieを削除したら何度でもクリックできるし、
DBにクリックした人のIPアドレスを登録して確認する方法も
IPアドレスをその都度変えられたら、何度もクリックできます。
同じ人が何度もクリックできないようにしたいのですが、
どうすればいいのでしょうか?PHPでは無理でしょうか?
0725nobodyさん
2012/06/11(月) 21:57:43.33ID:???お礼ぐらい言えよ
まぁ無理だ
Flash使えば少しは対策になるぞ
ブラウザのクッキーは知ってても
Flashのクッキーを知らない奴は多いからな
0726nobodyさん
2012/06/11(月) 22:01:25.33ID:1LdtwXlOMACアドレスも変更する事って可能ですよね?
連続クリック対策が出来ないなら、Googleの広告とかも
基本的にはクリックしまくれるのでしょうか?
そしたら広告主がかなり損だと思うのですが・・・
0727nobodyさん
2012/06/11(月) 22:13:30.46ID:???不確かな情報からGoogleは広告主保護にアカウント潰してるじゃん
アボセンスだのアドセンス狩りだのでggrks
0728nobodyさん
2012/06/11(月) 22:43:01.56ID:1LdtwXlO何とか出来ないという事で納得しました。
0729nobodyさん
2012/06/11(月) 23:08:26.94ID:???クライアントのMACはそもそも届かないから変更も意味ない
0730nobodyさん
2012/06/12(火) 00:07:02.10ID:???あとは、電話番号ぐらいか。
電話の音声自動応答も安くなったし。
0731nobodyさん
2012/06/12(火) 00:20:48.46ID:???クッキー削除してもIPやホスト変えてもFlashのshared object削除しても部ロク解除できない
会員としてログインしてなくてもブロック解除できない
どうやってユーザを特定しているのか知りたい
PHPできるのか知りたい
0733nobodyさん
2012/06/12(火) 01:15:22.34ID:???0735nobodyさん
2012/06/12(火) 06:46:41.67ID:???存在する価値なし
0736nobodyさん
2012/06/12(火) 13:52:46.01ID:???DB読み込みのところで
$r = $this->Table->findById(1);
とやって1行取得して$rに入れているんですが、更に$rに一行追加する場合は
どうすればいいんでしょうか?
$r .= $this->Table->findById(2);
とやっても$rに2行分格納されませんでした。
0737nobodyさん
2012/06/12(火) 13:54:20.27ID:nVFOyccY0738nobodyさん
2012/06/12(火) 14:20:01.29ID:???それはフレームワークの質問であり、PHPの質問じゃなくね
使い方を知りたいのなら質問するよりマニュアル読んだほうがいいよ絶対
cakePHPは知らないけど、名前から推測するに
それは取得する行数ではなく取得したいデータのidを入れるところじゃね
0740nobodyさん
2012/06/12(火) 14:36:36.21ID:???0741nobodyさん
2012/06/12(火) 16:36:48.12ID:???>>1って一言いえばいいだろ
わざわざ1行目で解説してやるなんて俺優しいな
0742nobodyさん
2012/06/12(火) 16:43:59.43ID:okd1h7wf0743nobodyさん
2012/06/12(火) 16:49:25.87ID:???0744nobodyさん
2012/06/12(火) 16:53:17.89ID:???0745nobodyさん
2012/06/12(火) 17:02:05.91ID:???htaccessで余計なことしてない限り拡張子phpでphpとして動作するわけで、
外から接続パスワード書かれてるスクリプトにアクセスしてもechoしてない限り何も表示されない。
心配ならpublic_htmlの上に置けばいい。
どのみちサーバに不正アクセスされたらおしまいなので過剰な対策は不要。
それよりもFTPパスワードを定期的に変える、信頼できるサーバを使用する、とかのほうが大事。
0746nobodyさん
2012/06/12(火) 17:13:07.08ID:???質問の意図どおりかわからんが
$r[] = $this->Table->findById(1);
$r[] = $this->Table->findById(2);
こういうことか?
0747nobodyさん
2012/06/12(火) 17:20:18.25ID:???0748nobodyさん
2012/06/12(火) 18:23:50.03ID:0LcYAtZOmysql_real_escape_string使うと\→\\になるので
mysqlからレコード取り出すとき必ず
str_replace("\\\\", "\\"って\\→\とやってるのって自分だけなんでしょうか
皆さんも変換戻ししてますか?
0749nobodyさん
2012/06/12(火) 18:26:25.47ID:???>> mysqlからレコード取り出すとき必ず
http://php.net/manual/ja/function.mysql-real-escape-string.php
>> SQL 文中で用いる文字列の特殊文字をエスケープする
用途がまったく違うよね
0750nobodyさん
2012/06/12(火) 18:28:51.86ID:0LcYAtZOmysqlから保存されたレコード取り出すとき必ず
str_replace("\\\\", "\\"って\\→\とやってるのって、でした言葉足らずですみません
0751nobodyさん
2012/06/12(火) 18:44:16.04ID:???そのまま \ で入ってるはずだが、何か勘違いしてないか?
0752nobodyさん
2012/06/12(火) 18:47:40.00ID:???insertやupdateはそのまま生のデータを入れるんだぞ
0753nobodyさん
2012/06/12(火) 18:53:29.94ID:okd1h7wfありがとうございました!
0754nobodyさん
2012/06/12(火) 18:58:24.37ID:???>>752は、ただの釣りだから読み流しな。
別段\をINSERTするときにmysql_real_escape_stringで\\に変換されも
データベースには、\で入ってSELECTかけたときに\で出てくるわけだから、わざわざreplaceかける必要なくないか?
そも、そのほかに余計なエスケープ処理かけてないか?それ
マジッククオートとか。
0755nobodyさん
2012/06/12(火) 18:59:11.62ID:???改行の\nと文字列の\nの二種類がある。
改行の場合はエスケープしても\nのままで文字列の場合は\\nになる。
0756nobodyさん
2012/06/12(火) 19:20:36.44ID:???↓
サーバー「ピピピ、エスケープしてアホン\\nちんの状態で保存します」
↓
さーて、名前登録できてるかなー?
↓
あれっ!?僕の名前が「あほん\\nちん」になってるー!?
こういうことか?
textファイルとかに保存するならありえるが、mysqlに保存して取り出す場合にゃ"\\n"になってるわけだから
html上では\nと出力されるのではと
0757nobodyさん
2012/06/12(火) 19:27:26.67ID:???PHPとMYSQLを使って、ポータルサイトを作ろうと思っているPHP初心者です。
文字コードをUTFで作りたかったのに、間違えてEUCでデータベースを作ってしまい
テーブルの設定やデータの入力など、相当進めてしまっております。
後からデータベースの文字コードを変更する方法はあるのでしょうか?
0758nobodyさん
2012/06/12(火) 19:29:55.78ID:???2. >>1嫁 MySQLの問題でPHP関係ないだろ
3. ここはサポセンじゃないしさくらに問い合わせろ
0759nobodyさん
2012/06/12(火) 19:41:21.97ID:???んなら無理だから、phpでレコードを取り出して一つずつエンコードして新しいトコに入れるって作業がんばれ
0760nobodyさん
2012/06/12(火) 19:49:50.80ID:k2RV9mU7$data = arrya("one", "two", "three");
$box = arrya( "data" => $data, "hoge" => $hoge, "test" => $test);
として他の変数と一緒に$boxに入れて別ページにPOSTしてるのですが、
受け取り側で
$box_tmp = $_POST[$box];
$tmp = $box_tmp['data'];
echo $tmp[0];
といまのところしていますが、もっとスマートに$dataを呼び出す書き方はないでしょうか?
0761nobodyさん
2012/06/12(火) 19:50:36.72ID:???mysql_real_escape_stringしたもんをtxtに保存する馬鹿がどこにいるんだよ
完全に設計ミスだろそれ、 mysql_real_escape_stringはmysqlに保存するためだけにあるんだぞ
0762nobodyさん
2012/06/12(火) 20:29:36.85ID:???0763nobodyさん
2012/06/12(火) 20:30:51.41ID:???0764¥¥¥¥¥¥
2012/06/12(火) 23:12:51.42ID:???0765760
2012/06/13(水) 02:32:25.27ID:cb0bx+coarryaはarrayの誤りです・・。
引き続きお願いします。
0767nobodyさん
2012/06/13(水) 21:24:00.45ID:or2b+9hv一応できるにはできるのですが、全然スマートじゃなくて困っています。
最もスマートな書き方を教えてください。
0768nobodyさん
2012/06/13(水) 21:33:46.63ID:???0769nobodyさん
2012/06/13(水) 22:00:37.41ID:Xfic0PiWecho date('n/d', time()+86400*7);
$weekday = array( "日", "月", "火", "水", "木", "金", "土" );
echo "(".$weekday[date("w")].")";
みたいなものを関数にするしかないな
曜日の漢字表記、有ると思ったらなかった
0770767
2012/06/14(木) 00:37:06.56ID:???ありがとうございます。こんな感じになりました。
恐らくこれが一番スマートかな。
$day0 = getTime(86400 * 0);
$day1 = getTime(86400 * 1);
$day2 = getTime(86400 * 2);
echo $day0 ."<br>";
echo $day1 ."<br>";
echo $day2 ."<br>";
function getTime($value){
$time = time() + 9 * 3600 + $value;
$week = array("日","月","火","水","木","金","土");
$yobi = $week[gmdate("w",$time)];
$datetime = gmdate("n/j({$yobi}) H:i:s",$time);
return $datetime;
}
0771nobodyさん
2012/06/14(木) 00:46:54.43ID:???引数を今日から何日後かを示すようにして
単に0とか1を渡すようにして
86400は中の$timeの計算で入れればいいじゃん
と思いました
0774nobodyさん
2012/06/14(木) 02:15:49.29ID:bzeb90diphpinfo()を表示させてもpdoの項目が全く表示されません
どうすればいいですか?
一応php.iniでは以下の部分のコメントアウトを外しました
extension=php_pdo.dll
extension=php_pdo_mysql.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
0775nobodyさん
2012/06/14(木) 02:36:26.54ID:NQVryiBI・フォームの確認画面を想定
・htmlを入力されたらエスケープする
・空欄で送信されたら任意のhtmlをエスケープなしで出力する
で、今自分で設定してるsmartyの設定とテンプレートタグは以下です
$smarty->default_modifiers = array('escape:"htmlall"'); //変数を何でもエスケープ
{$rs.yourName|default:'<span style="color:#f00">未入力</span>'} //空欄だった場合赤字で「未入力」と出力したい
しかしうまくいきません
default_modifiersの設定のせいで変数中のhtmlのタグが埋め込まれてもエスケープされるのは良いとして、
空欄時に出力される未入力にまでエスケープが適用されるため<span>タグも表示されてしまいます
{$rs.yourName|default:'<span style="color:#f00">未入力</span>' nofilter} としたところ、
入力値の変数までエスケープされなくなりました
どうやったら効率的にescapeの適用・非適用を設定できるでしょうか? よろしくお願いします
0776nobodyさん
2012/06/14(木) 02:37:08.45ID:???標準でバンドルされてるだろ
余計なことしてなければ勘違いじゃね?
詳細はマニュアル見ること
とりあえずこれ実行してみれ
<?php
class_exists('PDO') or die('PDO undefined');
try {
$pdo = new PDO('sqlite::memory:');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->query('create table t (c integer)');
$pdo->query('insert into t values(2525)');
$res = $pdo->query('select c from t limit 1')->fetch();
echo $res['c'];
} catch (PDOException $e) {
echo $e->getTraceAsString();
}
PDO undefinedが表示されたらインストコしなおすのが手っ取り早い
2525が表示されたらPDO SQLiteは正常に使える
PDOExceptionが出たら俺がなんかミスしてる
0777nobodyさん
2012/06/14(木) 02:42:14.14ID:bzeb90diPDO undefinedが出力されました
インストールし直します
ご丁寧な対応どうも有難う御座いました!
0778775
2012/06/14(木) 02:49:05.70ID:NQVryiBIdefault_modifiersのエスケープの設定を解除して、
{$rs.yourName|escape|default:'<span style="color:#f00">未入力</span>'}
とすれば意図通りに動いてくれました
しかし何か冗長な気がします。もっと効率的な方法はないでしょうか?
よろしくお願いします
0779nobodyさん
2012/06/14(木) 03:20:58.15ID:???そのへんの人が適当にビルドした罠バージョンかもしれないっすからな
0780nobodyさん
2012/06/14(木) 05:10:57.21ID:???$cnt=1000;
$s=""; for($n=0; $n<(1<<16); $n++) $s.=chr($n);
$basetime = 9999;
for($k=0; $k<3; $k++) {
$t = microtime(true); for($n=0; $n<$cnt; $n++) crc32($s); $t = microtime(true) - $t;
if($t<$basetime)$basetime=$t;
}
$sfnc = array('crc32','md5','sha1');
foreach( $sfnc as $fn ) {
$t = microtime(true);for($n=0; $n<$cnt; $n++) $has = $fn($s);$t = microtime(true) - $t;
echo sprintf("{$fn} %3.0f",100*$basetime/$t ) . "% len=". strlen($has) ."\n";
}
$hfnc = array('md5', 'md5', 'haval128,3', 'salsa20', 'ripemd256', 'sha1', 'haval256,3', 'salsa10', 'haval256,5', 'sha224', 'ripemd320', 'sha256');
foreach( $hfnc as $fn ) {
$t = microtime(true);for($n=0; $n<$cnt; $n++) $has = hash ( $fn, $s, TRUE );$t = microtime(true) - $t;
echo sprintf("hash/{$fn} %3.0f",100*$basetime/$t ) . "% len=". strlen($has) ."\n";
}
0781nobodyさん
2012/06/14(木) 14:34:56.13ID:???$a = "aaa bbb";
最初に現れたスペース以前の文字を削除して $a = "bbb"としたい
下らない質問ですがお願いします
0783nobodyさん
2012/06/14(木) 15:10:11.39ID:???0784nobodyさん
2012/06/14(木) 15:58:18.96ID:???substr
0785nobodyさん
2012/06/14(木) 16:06:29.54ID:???0786nobodyさん
2012/06/14(木) 16:09:07.18ID:???0787nobodyさん
2012/06/14(木) 17:59:30.53ID:???0788nobodyさん
2012/06/14(木) 18:07:10.79ID:v75Tj5Q8>>1
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
こんなこと書いて恥ずかしくね?
0789nobodyさん
2012/06/14(木) 18:25:18.90ID:???0790781
2012/06/14(木) 19:31:33.68ID:???0791781
2012/06/14(木) 20:23:38.16ID:???0792nobodyさん
2012/06/14(木) 21:50:48.81ID:???0793nobodyさん
2012/06/14(木) 21:52:16.51ID:???帰る巣がなくなったからって居つかなくていいよ
0794nobodyさん
2012/06/14(木) 22:02:21.62ID:???0795nobodyさん
2012/06/14(木) 22:28:20.99ID:???0796nobodyさん
2012/06/14(木) 23:03:53.95ID:nLtLti5o1 => 100,
5 => 500,
10 => 1000
);
$b=array();
$i=0;
foreach( $a as $value ){
$b[$i]=$value;
$i++;
echo $value."<br />\n"; // 改行しながら値を表示
}
配列$aの中身を配列$bにまるまるコピーする時ってこんな感じですか?
普通はどうやるのですか?
0797nobodyさん
2012/06/14(木) 23:14:05.10ID:???完
■ このスレッドは過去ログ倉庫に格納されています