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

【PHP】下らねぇ質問はID出して書き込みやがれ 123

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2012/09/25(火) 23:39:55.21ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
PHP】下らねぇ質問はID出して書き込みやがれ 122
http://kohada.2ch.net/test/read.cgi/php/1344963135/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
0783nobodyさん2012/11/08(木) 13:07:23.32ID:???
>>782
すいません、自己解決できました。
setcookie関数の構文記述に誤りがあり、クライアント側に作成されていませんでした。

場所はC:\Documents and Settings\ユーザ\Cookiesでした。
0784nobodyさん2012/11/08(木) 18:36:46.59ID:???
>>782-783 >>1
0785nobodyさん2012/11/08(木) 23:34:29.59ID:f/f3pzKJ
(mb_系でない)文字列関数は、マルチバイト文字の後続バイトにマッチしてしまうのがいけないのであり、
先行バイトと後続バイトがはっきり区別できるUTF-8では問題ない、という解釈は合っているでしょうか。
置換がpreg_replaceやmb_ereg_replaceではなくstr_replaceで済むのならその方が楽ですし、
正規表現ではなくただの置換の方が内部の処理量も少なくて済むような気がするのですが。
0786nobodyさん2012/11/09(金) 05:17:11.99ID:???
はっきり区別できる根拠は?
0787nobodyさん2012/11/09(金) 05:19:04.13ID:???
>>778
検索エンジンを騙して無駄な検索結果を増やす行為
07887852012/11/09(金) 08:26:28.79ID:fHegqpBv
>>786
ビット列10で始まるバイトが後続バイト、それ以外が先頭バイトだと思いますが、例外でもあるんでしょうか?
0789nobodyさん2012/11/09(金) 16:54:02.12ID:SzfafX2y
>>787
いや、PC用のページとスマホ用のページで振り分けたいだけですよ
0790nobodyさん2012/11/09(金) 17:13:03.25ID:rpNskGII
mode_write つてのをつかって

@ http://mankoumai.com/test.php

でこれまでアクセスしていたんですが

A http://mankoumai.com/test

でもアクセス出来る様にしたいです。
また、@でアクセスが来た場合にはAにリダイレクトさせるにはどうしたらいいでしょうか?
0791nobodyさん2012/11/09(金) 17:37:28.37ID:???
mod_rewriteスレへ
0792nobodyさん2012/11/09(金) 23:14:28.63ID:???
マンコがうまいわけねーだろ!
0793nobodyさん2012/11/09(金) 23:18:13.73ID:VsVEo1TJ
質問です

コミュニティーサイトを作って
その中でメンバー同士がメッセージを送れる仕組みを用意したとします。

荒らしが現れたらスパムメッセージを送りまくるようになると思います。
それを防ぐためにメッセージ送信時にcaptcha認証を行うのは
一般的ですか?他に何かいい対策はありますか?
0794nobodyさん2012/11/10(土) 00:21:55.25ID:???
ログインユーザーにまでCAPTCHAを求めるとウザい

1分とか1時間に送れるメッセージ数に上限を設ける
一度に多数の人に送れないようにする
同じ内容を同じ人に続けて送れないようにする
NGワードを設ける
サイト外(のメールアドレス)には送れないようにする

とか考えたらいくらでも思い浮かぶのが普通

他のサイトがどうしてるか学ぶべき
0795nobodyさん2012/11/10(土) 01:04:32.30ID:xD0ruwyN
奇遇だな。

荒らすのが趣味な俺様が通りますね。
0796nobodyさん2012/11/10(土) 01:08:09.64ID:/09E68J7
>>794
貴重なご意見ありがとう

それらを規制するための具体的な数値でのルール決めが非常にシビアになってきますね。
0797nobodyさん2012/11/10(土) 01:23:42.70ID:???
WEB+DB PRESS って本読んでる人いる?
0798nobodyさん2012/11/10(土) 11:21:45.36ID:???
>>796
ユーザー自身に嵐をブロックさせるとか
「この情報を管理者に報告」とかで荒らされた人に報告してもらって
NGレベルが一定より上がったら管理者が目視確認して対処すれば良い
そのあと強制退会とかさ

>>797
たまに見るね、今出てるのは安全なサイト構築とかだっけ?
「安全な…」とか言われると見なきゃいけないような気がしてくるw
0799nobodyさん2012/11/10(土) 11:45:52.82ID:???
>>797
10年分のが全部入ってるDVD買ったわ
0800nobodyさん2012/11/10(土) 14:37:38.21ID:???
>>796
お前の作った産廃なんて誰も使わないのに何でそれな心配してるの?
まさか産廃を使ってもらえると思ってるの?w
ウ\゙\ァ\カは無敵だなwwwwwwwwwwwwwww
0801nobodyさん2012/11/10(土) 15:10:05.05ID:6XHTxJnV
>>798
ありがとう

>>800
現時点でもすでに3万人のアクティブユーザーがいて
その中には荒らしもいて困ってる
0802nobodyさん2012/11/10(土) 15:43:46.49ID:+S6U6CYO
phpで二つの変数に同じ値を足すときってどうしますか?
$a = "piyo";
$b = "mage";
$a .= "hoge";
$b .= "hoge";
みたいなときに、.="hoge;をまとめられますか?
0803nobodyさん2012/11/10(土) 15:50:11.79ID:???
>>802
$a & $b .="hoge";
0804nobodyさん2012/11/10(土) 15:52:15.13ID:???
>>802
マルチ乙
ウ\゛\ァ\カ
0805nobodyさん2012/11/10(土) 15:53:39.56ID:???
>>804
お前はさっきから何と戦ってるんだ?
池沼?
0806nobodyさん2012/11/10(土) 15:55:14.63ID:+S6U6CYO
>>803
それってバージョン依存な書き方だったりしますか?
僕の5.3.5環境だと結果が$a=>"piyo",$b=>"magehoge";になります
0807nobodyさん2012/11/10(土) 15:56:45.22ID:???
>>806
$a && $b に変更しる
0808nobodyさん2012/11/10(土) 15:57:43.50ID:+S6U6CYO
>>807
$a = "piyo";
$b = "mage";
$a && $b .= "hoge";
とやってもpiyoとmagehogeになります。。
0809nobodyさん2012/11/10(土) 16:30:30.10ID:???
>>808
$a || $b だとどうよ?
0810nobodyさん2012/11/10(土) 16:34:15.27ID:+S6U6CYO
>>809
$a || $b .= "hoge"; はpiyoとmageのままです
ちなみにあなたの環境では&でできたんですか?
0811nobodyさん2012/11/10(土) 17:24:20.37ID:???
>>810
いいえ
あくまで貴方を弄ぶために適当に書いてみました

ウ\゛\ァ\カw
0812nobodyさん2012/11/10(土) 23:08:00.59ID:+S6U6CYO
>>811
要するにわからないってことですか・・・・
0813nobodyさん2012/11/10(土) 23:46:58.31ID:slna0j84
$a=(object)["0"=>"zero","a"=>"aaa"];
この状態でzeroにアクセスするにはどうしたらよいのでしょうか
$a->0や$a[0]は当然エラーが出てしまいますし
foreachで順番に回すしか無いのでしょうか。

また、この状態で"1"=>"one"を追加するにもどうしたらよいのでしょうか
これもやっぱり、$a[]="one"、$a->1="one"は出来ませんし…
0814nobodyさん2012/11/11(日) 00:09:30.89ID:???
>>801
好奇心で聞くけど、3万人ユーザーいたら広告で食える?
0815nobodyさん2012/11/11(日) 00:37:11.24ID:???
>>812
PHPなんか使ってるからそんなところで無駄な時間使うんだろ

これ以上時間と労力を無駄にしたくなかったらさっさと他言語に移行しろ

人生を無駄にしたくて仕方ない場合のみPHPを使い続けろ
0816nobodyさん2012/11/11(日) 01:34:23.00ID:???
>>815
嫌いな言語のスレでうだうだ言ってるのは時間の無駄じゃないのかな?
0817nobodyさん2012/11/11(日) 01:41:38.05ID:???
>>812
出来ないことで、いつまで荒らしと遊んでるの? さっさとNG

>>813
current($a) で

$a->{0}でアクセスできるんだけど、それは $a["0"]であって、
この方法で変換した場合は、 $a[0](のようなもの)なので、ソレを直接とる記法がない。
arrayに変換してやれば戻るけど
0818nobodyさん2012/11/11(日) 06:59:58.94ID:???
>>813
PHPの数ある欠陥の一つだな
0819nobodyさん2012/11/11(日) 07:13:11.33ID:???
ことわ
0820nobodyさん2012/11/11(日) 14:06:46.12ID:A0HHXkrC
simplexml_loadのパース精度はよくない。全オプションをやってみたが。

<?php
$opt=array();
$opt['LIBXML_COMPACT']=LIBXML_COMPACT;
$opt['LIBXML_DTDATTR']=LIBXML_DTDATTR;
$opt['LIBXML_DTDLOAD']=LIBXML_DTDLOAD;
//$opt['LIBXML_DTDVALID']=LIBXML_DTDVALID;//DTD(Document Type Definition:文書型宣言)を利用することで、パーサがデータの妥当性を検証。
$opt['LIBXML_NOBLANKS']=LIBXML_NOBLANKS;
$opt['LIBXML_NOCDATA']=LIBXML_NOCDATA;
$opt['LIBXML_NOEMPTYTAG']=LIBXML_NOEMPTYTAG;
$opt['LIBXML_NOENT']=LIBXML_NOENT;
$opt['LIBXML_NOERROR']=LIBXML_NOERROR;
$opt['LIBXML_NONET']=LIBXML_NONET;
$opt['LIBXML_NOWARNING']=LIBXML_NOWARNING;
$opt['LIBXML_NOXMLDECL']=LIBXML_NOXMLDECL;
$opt['LIBXML_NSCLEAN']=LIBXML_NSCLEAN;
$opt['LIBXML_PARSEHUGE']=LIBXML_PARSEHUGE;
$opt['LIBXML_XINCLUDE']=LIBXML_XINCLUDE;
$opt['LIBXML_ERR_ERROR']=LIBXML_ERR_ERROR;
$opt['LIBXML_ERR_FATAL']=LIBXML_ERR_FATAL;
$opt['LIBXML_ERR_NONE']=LIBXML_ERR_NONE;
$opt['LIBXML_ERR_WARNING']=LIBXML_ERR_WARNING;
$opt['LIBXML_VERSION']=LIBXML_VERSION;
//$opt['LIBXML_DOTTED_VERSION']=LIBXML_DOTTED_VERSION;
@mkdir("txt");
$xmltxt=file_get_contents("http://www.dailymotion.com/rss/jp/1";);
foreach ( $opt as $key => $val) {
echo "$key\n";
$rss = simplexml_load_string($xmltxt,"SimpleXMLElement", $val);
file_put_contents( "txt/$key.txt" , print_r($rss,true) );
}
0821nobodyさん2012/11/11(日) 15:00:14.57ID:???
rssはこれか。


<?php
include_once('simplepie/autoloader.php');
@mkdir("cache");
$feed = new SimplePie();
$feed->set_feed_url("http://www.dailymotion.com/rss/jp/1";);
$feed->init();
$feed = $feed->data['child']['']['rss']['0']['child']['']['channel']['0']['child'][''];
echo "maximum of the allocated memory = " . memory_get_peak_usage(true)/(1<<20) . "M byte\n";
file_put_contents( "SimplePie.txt" , print_r($feed, true) );
0822nobodyさん2012/11/12(月) 11:41:01.71ID:IhXlrx2G
どこで聞けばいいかわからないのでここで質問させてください。
ブログサービスにはping通知のサービスがあると思いますが、
自分のドメインでそのpingを受信することはできないのでしょうか?

pingがどういう形式で送信されているのかがわかればできそうなんですが、
それがわかりません。
0823nobodyさん2012/11/12(月) 12:34:19.69ID:???
>>822
Google先生に「更新PING XML PHP」で聞けば
どういうフォーマットで送られてきているか
書いてあるサイトをわんさか教えてくれるぜ!
0824nobodyさん2012/11/12(月) 13:02:34.44ID:IhXlrx2G
>>817
ありがとうございます

<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>weblogUpdates.ping</methodName>
<params>
<param><value>自分のサイトのタイトル</value></param>
<param><value>自分のサイトのURL</value></param>
</params>
</methodCall>

こんな書式見つけたんですが、pingって更新した記事のURLは送ってこないのでしょうか?
事前にブログ運営者のRSSフィードURLを調べといて、更新通知があったらそっから最新記事を取得するって感じでしょうか?
0825nobodyさん2012/11/12(月) 14:21:04.70ID:???
pingも分からないゴ-ミがコーディングやっててマジでウケるw
さすがphpを選ぶだけのことはあるなw
0826nobodyさん2012/11/12(月) 14:40:01.78ID:IhXlrx2G
>>819
お前もプログラミング始めたときはゴミだったんだよ
それを思い出せ
0827nobodyさん2012/11/12(月) 15:14:44.52ID:???
ゴージャス
ミステリー
0828nobodyさん2012/11/12(月) 15:53:34.36ID:???
日本語通じない荒らしに反応すんなよ。スルースキル身につけろ
0829nobodyさん2012/11/12(月) 18:45:43.66ID:Qov88rFj
現在、DBというクラスの中で各テーブル毎の処理を if で分けてます
見辛いので継承というのは使ってみたいのですが、これはテーブルを変える度にクラスを作り直さないといけないですよね?
クラス内で関数を書き換える方法って他にありますか?
getDataという関数があったとしてテーブルを切り替えたときにgetDataも書き換えたいのですが・・
0830nobodyさん2012/11/12(月) 18:50:43.05ID:???
スルー
0831nobodyさん2012/11/12(月) 21:03:43.88ID:0jsaB5yd
TeraTermで見た時に
PHPで日本語ファイル名を読み取って var_dump すると文字化けするんですけど
そのファイルの中身を読取TeraTerm上に吐き出した場合には
文字化けしていません。

lこれっていったい何が原因なのでしょうか?
0832nobodyさん2012/11/12(月) 21:08:05.67ID:???
もしかして:PHPの内部エンコーディング
0833nobodyさん2012/11/12(月) 21:13:36.23ID:0jsaB5yd
>>832
??? UTF-8にしてます。
また、ターゲットのファイルの中身も UTF-8 で統一しています。
何より、
read.php の中で 【ほげほげデータ.dat】 を読み込み
終了タイミングで

echo "データ読込に成功しました!!";

と記述した場合には、TeraTerm上に文字化けせずに正常に表示されます。

PHPの文字コードは、UTF-8に統一されているという認識ですが
間違っていますでしょうか?
0834nobodyさん2012/11/12(月) 23:12:20.07ID:???
PHPやってるとホント無駄なところで無駄な時間を使うんだな
まぁお前が好き好んで人生のうちの何時間かをその無駄なことに注ぎ込みたいのならいいだろ
0835nobodyさん2012/11/12(月) 23:25:04.25ID:???
全部utf-8で統一してるなら文字化けするわけがない。
teratermってことはどっかsshしてるんだろうけど
$ echo $LANG
とか
$ nkf -g data
とか
teraterm自体の設定を見てみるとかしてみて。
0836nobodyさん2012/11/12(月) 23:31:29.31ID:???
PHPで、年単位で無駄にしてる馬鹿も多い
0837nobodyさん2012/11/12(月) 23:43:44.35ID:0jsaB5yd
>>835
やりたい事は出来るのでOKなんですが
コマンドを試してみたところ次のありさまでした。

% echo $LANG
LANG: Undefined variable.

%nkf -g data
data: No such file or directory
0838nobodyさん2012/11/12(月) 23:46:43.05ID:???
存在するファイルにしろ
0839nobodyさん2012/11/13(火) 02:25:13.36ID:???
正規表現\sのホワイトスペースが具体的になんであるか確認した。



HT(水平タブ) is a white space.
LF(改行) is a white space.
FF(改頁) is a white space.
CR(復帰) is a white space.
(スペース) is a white space.





$arr = array(
"NUL(null文字)", "SOH(ヘッダ開始)", "STX(テキスト開始)",
"ETX(テキスト終了)", "EOT(転送終了)", "ENQ(照会)",
"ACK(受信OK)", "BEL(警告)", "BS(後退)",
"HT(水平タブ)", "LF(改行)", "VT(垂直タブ)",
"FF(改頁)", "CR(復帰)", "SO(シフトアウト)",
"SI(シフトイン)", "DLE(データリンクエスケープ)", "DC1(装置制御1)",
"DC2(装置制御2)", "DC3(装置制御3)", "DC4(装置制御4)",
"NAK(受信失敗)", "SYN(同期)", "ETB(転送ブロック終了)",
"CAN(とりけし)", "EM(メディア終了)", "SUB(置換)",
"ESC(エスケープ)", "FS(フォーム区切り)", "GS(グループ区切り)",
"RS(レコード区切り)", "US(ユニット区切り)", "(スペース)" );
foreach ( $arr as $val => $str) {
$t = preg_replace('/\s+/', '', chr($val));
if(strlen($t)===0) echo "{$str} is a white space.\n";
}
0840nobodyさん2012/11/13(火) 02:28:40.86ID:???
正規表現の置換で\sを[\0- ]にすると、文字でないものは削除できるが、エンコード次第では普通の文字も消えてしまうのか?
0841nobodyさん2012/11/13(火) 03:25:03.45ID:???
strip_tagsは構文や命令は解析してないらしい。




strip_tags関数の穴
例。
$str = "<b>余計な文字列</b>削除しないで><動く物も動かなくなっちゃうよ!";
echo strip_tags($str);
結果
余計な文字列削除しないで>

bタグはきちんと削除されていますが「しないで><」の後ろもタグと判断されて削除されちゃってます。
意図的に半角の不等号を使ったのですが、HTMLじゃない文字列まで削除されるのはちょっと困ります。
http://d.hatena.ne.jp/tek_koc/20080930/1222732987
0842nobodyさん2012/11/13(火) 03:29:31.34ID:???
タグ中に><使ったらHTML構文エラーだろ。アホか。
0843nobodyさん2012/11/13(火) 03:51:39.88ID:???
strip_tags($s) の代わりを作った。少しはタグらしいものを削除できる。

$s = preg_replace("@<[\/\!]?[a-zA-Z]+[^<>]*>@s", '', $s );
0844nobodyさん2012/11/13(火) 19:57:36.38ID:r7+OKuGH
そこは削除じゃなくエスケープでしょ?!
やり直し!
0845nobodyさん2012/11/13(火) 21:50:58.10ID:???
ソース読め
0846nobodyさん2012/11/13(火) 22:06:57.01ID:???
>>843
<script<script>>alert('err');</script</script>>
0847nobodyさん2012/11/13(火) 23:14:24.94ID:B6JGLfv/
ヒアドキュメント内で使えない文字ってありますか?

?>書くとおかしくなる気がするんですが勘違いでしょうか?
0848nobodyさん2012/11/13(火) 23:21:25.87ID:MQzA8bHk
「2012-08-21」という文字列を「2012年08年21日」に変換するにはどうしたら良いでしょうか?
いろんなやり方あると思いますが、教えてください。お願いします
0849nobodyさん2012/11/13(火) 23:30:05.71ID:B6JGLfv/
>>84はわすれて
0850nobodyさん2012/11/14(水) 02:36:04.20ID:???
>>848
いろんなやり方があると分かってるのに聞くってどういうこと?
0851nobodyさん2012/11/14(水) 02:53:09.72ID:???
echo date("Y年m月d日", strtotime("2012-10-25"));
0852nobodyさん2012/11/14(水) 09:09:07.23ID:???
PHP 5.4 (5.4.9RC1)
VC9 x86 Thread Safe (2012-Nov-07 22:35:53)
http://windows.php.net/qa/
0853nobodyさん2012/11/14(水) 10:37:53.58ID:???
>>848
print vsprintf("%04d年%02d月%02d日" ,sscanf("2012-08-21","%d-%d-%d") );
0854nobodyさん2012/11/14(水) 11:32:53.97ID:???
>>850
自分のやってる正規表現で置換する以外の賢い方法を知りたかったので

>>851,853
おおー、両方とも知らなかったです
ありがとうございました
0855nobodyさん2012/11/14(水) 12:24:11.16ID:???
>>854
速度は正規表現の方が劇的に速い
0856nobodyさん2012/11/14(水) 12:48:39.37ID:???
存在しない日付のとき問題出るしな
出たほうがいい場合が多いが
0857nobodyさん2012/11/14(水) 13:30:38.94ID:???
>2012年08年21日
年月日じゃなくて年年日にしたいそうだぞ
0858nobodyさん2012/11/14(水) 13:37:42.81ID:???
こういうやついるよな
0859nobodyさん2012/11/14(水) 14:24:47.65ID:Yf+k1U8+
【OS名】windows7
【PHPのバージョン】5.2.3
【連携ソフトウェア】MySQL5.5
【質問内容】
phpとmysqlで情報処理系のWEBアプリを構築しているのですが、
DBへのインサート時、 〜 (波線)が入力されているとインサートに失敗してしまいます。
文字コードが怪しいと思いましたが、DB・phpどちらもUTF8になっており問題ありません。
どなたか思い当たりがある方いらっしゃいましたらご教授頂けると幸いです。
0860nobodyさん2012/11/14(水) 14:28:32.15ID:???
一般的なデータベースにはバイナリ文字列は入れられないのが普通。
エスケープ、エンコードして入れるのが安全。
0861nobodyさん2012/11/14(水) 14:31:16.69ID:???
utf8_unicode_ci → utf8_general_ci
0862nobodyさん2012/11/14(水) 14:31:40.40ID:???
mysql_real_escape_string (PHP 4 >= 4.3.0, PHP 5)
SQL 文中で用いる文字列の特殊文字をエスケープする
代替策について
この拡張モジュールを使うことはおすすめできません。 MySQLi あるいは PDO_MySQL を使うべきです。
詳細な情報は MySQL: API の選択 や それに関連する FAQ を参照ください。
http://phpspot.net/php/man/php/function.mysql-real-escape-string.html
08638592012/11/14(水) 14:38:37.19ID:Yf+k1U8+
ご返答ありがとうございます。
言葉足らずで申し訳なかったのですが下記のようにエスケープしてクエリに渡している状態です。
最終的に発行しているmysqlをコピーしてコマンドプロンプトから直接入力すると正常にインサートできます。

// MySQLへの接続処理
$dbc = mysql_connect($this->host, $this->user, $this->pass);
// データベース選択
$result = mysql_select_db($this->database, $dbc);
mysql_set_charset("utf8");

if($result) {

$mysql = "INSERT INTO test ";

$mysql .= "(example";

$mysql .= ") VALUES ( ";

$mysql .= "'".mysql_real_escape_string($form[example])."'";

$mysql .= ")";

echo $mysql;

$result_flg = mysql_query($mysql, $dbc);

if($result_flg) {
echo 'インサート成功';
} else {
echo 'インサート失敗';
}
}
0864nobodyさん2012/11/14(水) 14:38:50.94ID:???
怪しい入力を残しておくとこうなる可能性。


SQLインジェクション - Wikipedia
SQLインジェクションとは、アプリケーションのセキュリティ上の不備を意図的に利用し、
アプリケーションが想定しないSQL文を実行させることにより、データベースシステムを不正に操作する攻撃方法のこと。
また、その攻撃を可能とする脆弱性のこと。

実例
2005年5月に発生した、価格.comのWebサイト改竄 クラブツーリズム事件の犯人は価格.comへの不正アクセスも行っていた。
2005年8月に判明した、静岡新聞社アットエスの個人情報漏洩 - クラブツーリズム事件と同一犯
2005年11月に発生した、ワコールオンラインショップのクレジットカード情報を含む個人情報漏洩
2005年11月に発生した、キッズオンラインのアカウント情報漏洩
2006年1月に判明した、スカイソフトのクレジットカード情報を含む個人情報漏洩 スカイソフトは閉店へと追い込まれた。
2007年7月に判明した、@SOLAショップのクレジットカード情報を含む個人情報漏洩
2008年3月に発生した、トレンドマイクロ、@nifty、クリエイティブメディアのWebサイト改竄
2008年3月に発生した、サウンドハウスのクレジットカード情報を含む個人情報漏洩
2008年4月に発生した、カービューのWebサイト改竄
2008年5月に発生した、アイドラッグストアー、アイビューティーストアーのクレジットカード情報を含む個人情報漏洩
2008年5月に発生した、富士山マガジンサービスのWebサイト改竄
2008年6月に発生した、アイリスプラザのクレジットカード情報漏洩
2008年7月に判明した、ナチュラムのクレジットカード情報を含む個人情報漏洩
2008年7月に発生した、米国向けプレイステーションのWebサイト改竄
2008年7月に発生した、独立行政法人石油天然ガス・金属鉱物資源機構のWebサイト改竄
2008年10月に発生した、ゴルフダイジェスト・オンラインのWebサイト改竄
2010年1月に発生した、モンベルのクレジットカード情報漏洩
2010年7月に発生した、コーエーテクモホールディングスのGAMECITY会員の個人情報漏洩
2011年4月から発生している、ソニーのプレイステーションネットワークの個人情報漏洩に始まる、ソニーグループの個人情報漏洩。
0865nobodyさん2012/11/14(水) 14:43:17.89ID:???
>>863
安全な文字列へ変換してもダメなのか。そしたらわからん。
0866nobodyさん2012/11/14(水) 14:47:43.98ID:???
とりあえずbase64でエンコードしてみてダメか確認してみては?
base64関数は使いこなされていてバグは考えられず、確実に安全な文字列になる。
0867nobodyさん2012/11/14(水) 14:50:12.58ID:???
>>863
データベースへ送信するコマンド全体をエスケープしとけ。
エスケープしてる部分としてない部分が混合すると不具合が出る可能性ある。
0868nobodyさん2012/11/14(水) 14:51:06.06ID:???
まー、多分そういうことじゃないと思うよ。
まず、
echo 'インサート失敗'.mysq_error(); にしてみ。
0869nobodyさん2012/11/14(水) 15:00:32.51ID:???
え、何?
お前ら全角チルダと波ダッシュのよくある問題パターンでしょ・・・
見当はずれの書き込み多すぎワロタ
0870nobodyさん2012/11/14(水) 15:09:30.07ID:???
>>869
あれはいつもの人でしょ?
08718592012/11/14(水) 15:15:06.31ID:Yf+k1U8+
皆さんご教授ありがとうございます。
mysql_error()によるエラーは以下のようになってます。
やっぱり文字化けしているようです。
Incorrect string value: '\xEF\xBD\x9E' for column 'example' at row 1

「波線」で調べて情報が出てこず苦戦していたのですが波ダッシュで検索をかけると
>>869さんの仰っている通りメジャーな問題のようですのでもう少し調べてみます。
0872nobodyさん2012/11/14(水) 15:24:05.18ID:???
>>869
データベースには正しくエンコードしたら、jpgでもzipでも入れられるが。
任意のバイナリデータでは波ダッシュも全角チルダも含む可能性があるが、そんな問題に出会ったことがない。
挿入以外の文字コード変換でエラーになってるのでは?
0873nobodyさん2012/11/14(水) 15:36:45.31ID:???
文字化けじゃなくて、DBの設定があってないだけですね。
0874nobodyさん2012/11/14(水) 15:44:04.85ID:???
スクリプトファイルの文字コードがUTF-8じゃないんだろ
0875nobodyさん2012/11/14(水) 17:18:39.07ID:???
EFBD9Eね
なるほど
0876nobodyさん2012/11/14(水) 17:22:58.46ID:???
Rawデータ、無変換データをbase64でテキストにしとけ
0877nobodyさん2012/11/14(水) 19:46:09.89ID:zP8rSMne
>>862
これさ、文字コードを適切に設定してれば問題なくね?
0878nobodyさん2012/11/14(水) 21:25:11.35ID:???
>>876
いまだにこういうレベルの低いノウハウがサイトに山盛り残ってるんだよな。
間違った対処法で誤魔化したりしてるから、一向に正しい知識がつかない上に、トラブルの元でしかない。

Incorrect string value のエラーを返してるのは mysql側 で \xEF\xBD\x9E が受け取れないって言ってる、
そのうえ、UTF8の他の字ならいいんだろ? DBの設定違い以外に無いじゃないか。
DBの設定をどうやって確認して、どうなってたのか見せてみ。
0879nobodyさん2012/11/14(水) 21:51:21.15ID:JaYxwXt2
TeraTermでさくらインターネットに接続し
下記コマンドを実行すると正常にcakePHP2.0 で定義したシェルが実行される状態です。
%php /home/myaccount/cake/app/Console/cake.php HogeMaster Hoge hikisu_hoge -app /home/myaccount/apps/hogehoge.com

このコマンド実行をcronにてさせようとしていますがやり方が分かりません。

http://memo.mkmin.com/cakephp/?p=13
このサイトを参考に次のシェルを作成し
/home/myaccount/apps/hogehoge.com/Vendor/cron_hoge.sh

< 中身 >
#! /bin/sh
/usr/local/bin/php /home/myaccount/cake/app/Console/cake.php HogeMasteer Hoge aaabbb -app /home/myaccount/apps/hogehoge.com

と定義したんですけど、どうやってこのシェルを実行したらよいのでしょうか?

TeraTerm上から
Vendorのパスまで移動し ./cron_hoge.sh をやろうとしたところPermission deniedのエラーメッセージが表示されてしまいます。
0880nobodyさん2012/11/14(水) 22:20:55.34ID:???
文字コードの設定やデータベース仕様に左右されるのは面倒。
base64_encode(gzdeflate($bindata, 1))か
base64_encode(gzcompress($bindata, 1))
でテキストにして挿入しとけ。
データベース固有のエスケープ(エンコード)関数と比べ、サイズも速度も良い場合が多い。
08818792012/11/14(水) 23:14:29.21ID:JaYxwXt2
自己解決

楽勝でした。
0882nobodyさん2012/11/15(木) 02:14:55.08ID:???
gzdeflateとgzcompressを計測してみた。圧縮率に差はでなく速度でgzdeflateが有利ぽい。

<?php
define('repeat', 1000);
$urls=array(
'http://www.youtube.com/', 'http://www.yahoo.co.jp/', 'http://www.amazon.com/', 'http://jp.msn.com/',
'http://blog-imgs-43-origin.fc2.com/m/a/k/makamaka001/11050050044.jpg',
'http://blog-imgs-32.fc2.com/s/a/n/sannan6666/20080109091130.png',
'http://blog-imgs-19-origin.fc2.com/k/i/t/kitarock/obama.jpg');

$fncs = array('gzdeflate','gzcompress');
$tmp = array('time'=>0, 'size'=>0);
$cnt=array('gzdeflate'=>$tmp,'gzcompress'=>$tmp);
foreach($urls as $url) {
echo "downloading...$url\n";
$data = file_get_contents($url);
foreach($fncs as $fnc) {
echo "measuring in progress...$fnc\n";
timer();
for($n=0;$n<repeat;$n++) $cnt[$fnc]['size']+=strlen($fnc($data, 1));
$cnt[$fnc]['time']+=timer(); }
print_r($cnt); }

function timer() {
static $flg=0,$start=0;
if(!$flg) { $flg=1; $start = microtime(true); return; }
$t0=microtime(true); $t1=$t0-$start; $start=$t0;
return $t1; }
■ このスレッドは過去ログ倉庫に格納されています