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

くだすれPHP(超初心者用)

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/06/12(月) 14:06:01ID:???
このスレッドは、他のスレッドでは書き込めない超低レベル、 
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 
PHP使いが優しくコメントを返しますが、 
お礼はPHPの布教と初心者の救済をお願いします。 

PHP Home Page 
http://www.php.net/
0439nobodyさん2006/09/19(火) 05:45:57ID:???
>>436
$fi = file('aaa.dat');

foreach($fi as $value){
  if(trim($fi) == '') continue;
  出力処理
}

>>438
一々突っ込むほどのことではないかも知らんが、メソッドは一般にクラスのメンバ関数のことだと思うぞ。
0440nobodyさん2006/09/19(火) 05:46:44ID:???
if(trim($fi) == '') continue; → if(trim($value) == '') continue;

な、勿論。
0441nobodyさん2006/09/20(水) 09:19:03ID:HL0PU+Ol
質問お願いします。

MySQLに予め登録したテキストを呼び出してmb_send_mailで配信というのを
やりたいんですが、改行なしになってしまいます。
改行を入れたい所に\nを入れてDBに登録したんですが、うまくいきません。
何を使えば改行が入るでしょうか?
0442nobodyさん2006/09/20(水) 11:08:19ID:???
>>441
改行コードを<LF>に統一
0443nobodyさん2006/09/20(水) 14:42:19ID:HL0PU+Ol
>>442
PHPスクリプトの改行コードはLFに統一してるんですが、MySQLにも何か改行コードを
指定するんでしょうか?
04444422006/09/20(水) 15:00:36ID:???
>>443
以下のコードをmb_send_mailの直前に入れて試してごらん。
$bodyってのはメール本文ね。MySQLから取り出したテキストを$bodyに入れて。

$body = str_replace("\r\n", "\n", $body);
$body = str_replace("\r", "\n", $body);
0445nobodyさん2006/09/21(木) 14:53:07ID:???
クロスサイトスクリプティング対策についてなんですが、
掲示板を作るとして書き込むときに fwrite($datafile, "<pre>".$_POST['message']."</pre>"); 
としてみたらJAVASCRIPTも無効化されてるしいいような気がするんですが、<pre>で囲んだ程度ではやはり駄目でしょうか?
0446nobodyさん2006/09/21(木) 17:29:08ID:JVGPXujg
session_unset();
session_start();
と宣言しているページがあります。
ユーザにデータを入力させ、action=""としています。
$_POSTの内容は保持されて$_SESSIONの内容だけ削除というのは
標準の動きなのでしょうか?

確かに$_POSTの内容は残り、$_SESSIONの内容はクリアされているような
挙動はしているのですが、別の環境(作成はWinで稼動はLunuxとか)に持っていっても
同じように動くのでしょうか?
日本語が不自由っぽくて恐縮ですが教えてください。
0447nobodyさん2006/09/21(木) 17:53:38ID:???
>>445
文章に</pre>があったらどうなる?
0448nobodyさん2006/09/21(木) 23:39:17ID:???
>>445
XSSというのは実際にHTMLとして出力するときに問題になるのであって、
fwriteにはまったく関係ない。

そして専用の関数(htmlspecialcharsなど)があるんだからそれを使え。
0449nobodyさん2006/09/22(金) 00:25:57ID:???
>>446
環境変えても問題ないと思う

(Lunuxでググったら10,300件・・みんなtypoしまくってるんだなぁ・・・。)
0450nobodyさん2006/09/22(金) 00:35:07ID:7CvFXbdS
SQlite使ってるのですが
sqlite_escape_stringで"などクエリの作成時に問題の出る文字を\"に置き換えられているのですが
文字列をSQLiteで取り出す時も残ったままなので、\"の文字が表示されてしまいます。(出力先はブラウザではないので・・・)
これを戻そうと$res=str_replace('\"', '"', $res);こんな事をやりましたが、うまく行きません。
残ったままです。

どうにか戻す方法はないのでしょうか?
0451nobodyさん2006/09/22(金) 00:36:56ID:???
>>450
PDOのプレイスホルダを使う。
0452nobodyさん2006/09/22(金) 00:47:03ID:???
phpでmysqlのデータベースにアクセスするプログラムを作成したのですが、
以下のエラーが出ています。
Fatal error: Call to undefined function mysql_connect() in /usr/local/www/data-dist/index.php on line 9

このエラーは、おそらくmysqlで提供しているphp向けの関数mysql_connnectが
認識できていないのではないかと考えていまして、
おそらく、php側の設定の追加が必要だと思うのですが、
具体的に何をやればいいのでしょうか?

ちなみに環境は以下の通りです。

■OS
FreeBSD 5.4

■phpのバージョン
$ pkg_info | grep php
php5-5.0.3_2 PHP Scripting Language (Apache Module and CLI)

■mysqlのバージョン
$ pkg_info | grep mysql
mysql-client-4.1.10a Multithreaded SQL database (client)
mysql-server-4.1.10a Multithreaded SQL database (server)

よろしくお願い致します。
0453nobodyさん2006/09/22(金) 00:48:42ID:???
>>452
ビルドの時にMySQLの組み込みを指定したか。
0454nobodyさん2006/09/22(金) 05:28:38ID:???
FreeBSDなんだけど、
PHPのmail関数使うのに、ポート空ける必要ないよね?
昔Linuxでやった時は要らなかったはず・・・
何故か外部にメール遅れない・・・

ググったらその手の質問は多いのに、どこも解決策が書いてませんでした・・・。
0455nobodyさん2006/09/22(金) 05:30:35ID:???
>ググったらその手の質問は多いのに、どこも解決策が書いてませんでした・・・。

あるあるwww
横槍ばっかになるんだよな、mail使うヤツだとおせっかいが沸くからw

ちなみに、ググったなら気づいてると思うがsendmailの問題であってPHPの問題じゃないから
解決したいなら、該当スレ当たれ。


あと、メールサーバーへ接続しての送信なんだからポート開放は不要
厳密にはサーバーといっても、サーバークライアントモデルのクライアントの相当する機能だから。

0456nobodyさん 2006/09/23(土) 01:39:07ID:???
フォームから入力された値を確認ページに表示させ、
その後、送信ボタンでメール送信します。
確認ページでは、$_postデータにforeachでhtmlspecialchrasをかませ、
&などの文字がエンティティ化されるのはいいのですが、
メールで送った文字も&と表示されてしまいます。
メールでは&に戻して送りたいのですがどうすればよろしいでしょうか?
0457nobodyさん 2006/09/23(土) 02:02:39ID:???
メールで送った文字もアンド記号amp;と表示されてしまいます、です。
0458nobodyさん2006/09/23(土) 06:26:47ID:???
>>456
バカかお前は。
$_POST変数をそのまま丸ごとforeachでエスケープかけてるんなら
メールでもエスケープされたままになるのは当たり前だろ。

HTML表示用変数とメール原稿用変数を分けて、それぞれ$_POSTから格納しろ。
そしてそれぞれ適切な処理を施せ。
0459nobodyさん2006/09/23(土) 11:27:14ID:???
POSTの受信速度に影響が出そうな設定ってありますか?
同じスペック、同じバージョンのサーバーなのに、レンタルサーバーでは8Mのファイルの受信に8秒
一方自宅やその他の自分の設定したサーバーでは1分の状況です。
ローカルホストで実験しているので、回線の速度の問題ではないと思うので、何か設定でもあるのかと疑っています。
ApacheやLighttpdなど色んなサーバーに変えたりしても同じなので、PHP側の設定を疑っています。
0460nobodyさん2006/09/23(土) 11:30:56ID:???
>>425-426でも話出てるが、PHP5のPOSTは遅い。
ちなみにfopen()などファイルオープンではなく、POSTである。

ためしにPHP4にしてみ。
多分片方の速いってサーバーは4だろ。
うちもファイルのアップロード数十倍伸びて唖然としたクチ
0461nobodyさん2006/09/23(土) 17:44:50ID:???
>>459
両者のPHPやApacheのバージョンも書かないと。
0462nobodyさん2006/09/23(土) 19:49:02ID:???
初心者です。
POSTで、次のページに送って表示させると文字化けが。
両方のページをEUC-JPで保存してるのに何でですか?
mb_detect_encodingで、その送られた値を見ると、SJISになってしまっています。
教えてください。
0463nobodyさん2006/09/23(土) 19:59:48ID:???
462です。
formで、enctype="multipart/form-data"で上記の値を送信しているのですが、
このenctypeを外すと、普通にEUCで表示されます。
ファイルをアップするとSJISに勝手に変わってしまうのでしょうか?
どうすればいいのでしょうか、教えてください。
0464nobodyさん2006/09/23(土) 20:10:35ID:???
PHP5は糞だったのかw
0465nobodyさん2006/09/23(土) 22:45:21ID:???
jpgの画像をアップしても、JPG、PNG、GIF形式以外の写真ファイルは登録できません、と表示される
何でだ?
$ext = array("JPG","GIF","PNG");
if(is_uploaded_file($_FILES["uploadfile"]["tmp_name"])){
$fileinfo = pathinfo($_FILES["uploadedfile"]["name"]);
$fileext = strtoupper($fileinfo["extension"]);
if(!in_array($fileext, $ext)){
$errors[] = "JPG、PNG、GIF形式以外の写真ファイルは登録できません";
}
0466nobodyさん2006/09/23(土) 22:49:40ID:???
上のじゃない。こっちです。
if(in_array($fileext, $ext)){
print "aaa!";
}else{
$errors[] = "JPG、PNG、GIF形式以外の写真ファイルは登録できません";}
0467nobodyさん2006/09/23(土) 23:08:12ID:???
解決した。単にtypeミスだ。
しかし、タイプミスほど腹が立つものねぇ。
0468nobodyさん2006/09/23(土) 23:09:03ID:???
小一時間悩みまくってtypoとかあるあr
0469nobodyさん2006/09/23(土) 23:45:41ID:???
甘いな
0470nobodyさん2006/09/24(日) 00:17:27ID:???
Sqliteなんですが、
$query="INSERT INTO user_uniq (mail,pass,uniq) VALUES('$_mail','$_pass','$uniq')";
こんな感じにすると、メールの@マークで怒られます。
Warning: sqlite_query() [function.sqlite-query]: unrecognized token: "@"

今まで、これでやって、普通に動いてきたし
今も別のコードで、この方法で動いているのですが、何か特別な変化があると、挙動が変わるのでしょうか?
0471nobodyさん2006/09/24(日) 00:39:32ID:???
事故解決しました。
単なるミs
0472nobodyさん2006/09/24(日) 16:57:26ID:???
>>452みたいに
/usr/local/www/data-dist/index.phpと絶対パスが見えてしまうのとmysql使ってるってのを隠したいが、エラーに成っても隠せる方法無いの?
このままじゃ運用につかえない。orz
0473nobodyさん2006/09/24(日) 17:03:52ID:???
っ XXXII. エラー処理およびログ記録関数
0474nobodyさん2006/09/24(日) 20:04:14ID:???
これか。
XXXII. エラー処理およびログ記録関数
ttp://www.php.net/manual/ja/ref.errorfunc.php

スクリプトの先頭で、
ini_set('display_errors', 0);
error_reporting(0);
してみたが、パースエラーには効かないのかよ。orz
PHP-users 26772によれば、スクリプトが実行されないと効力が無いらしい。orz
0475nobodyさん2006/09/24(日) 20:17:58ID:???
try{} catch {} して catch {} でログに書き出すとかする。画面には出力されないはず。

でもFatal Errorは無理だったような気が。
0476nobodyさん2006/09/24(日) 22:24:10ID:???
>>474
パースエラーが出るような状況で運用にするなよ
0477nobodyさん2006/09/25(月) 00:51:05ID:???
リナクスのバージョンアップ、アパチのバージョンアップ、マイSQLのバージョンアップ、PHPのバージョンアップ
パースエラーが出ない保証なんて無いよ。

複数台で負荷分散してたりすると、phpスクリプトがダウンロードできたりして楽しい状況。
まあ上場したミクシもパールスクリプトがダウンロードできるミスをやらかしたけど。
0478nobodyさん2006/09/25(月) 00:51:52ID:???
一応あれ保存してるwww
0479nobodyさん2006/09/25(月) 01:01:40ID:???
クレクレ!!!
0480nobodyさん2006/09/25(月) 01:02:40ID:???
mixiってmod_perlで動いてるんだろ?
ちょっと見てみたい。
0481nobodyさん2006/09/25(月) 01:38:01ID:???
>>477
>複数台で負荷分散してたりすると、phpスクリプトがダウンロードできたりして

どうして負荷分散するとスクリプトがダウンロード可になるの?
負荷分散と直接関係あるの?
0482nobodyさん2006/09/25(月) 02:02:08ID:???
テスト環境を整えずにバージョンアップするなってこった。
04834832006/09/25(月) 15:10:08ID:???
tanaka→CSVファイル一行分のデータ
yasuda→キーワードが入った配列

Function Search_Pattern($tanaka,$yasuda)
{
for($loop = 0;$loooop < count($yasuda);$loooop++) {
if($yasuda[$loooop] == "") continue;
if(!ereg($yasuda[$loooop],$tanaka)) return 0;
}

return 1;
}

yasudaさんはフォームに入力されたキーワードなんだけど、
「ー」をフォームに入力すると、
>Warning: ereg() [function.ereg]: REG_EBRACK in /xxx/xxx/xxx/xxx.php on line xx
て、エラーが出てしまう。調べてみると、
「Shift-JISじゃだめだEUCにしろ」みたいなことらしいのだけど、
意味がよく分からないです。
HTMLのヘッダー部分を直しても、何も起きないし、
<meta http-equiv="content-type" content="text/html; charset=EUC">
ファイルをEUCにして保存して、アップしたら文字化けしました。
CSVのデータ内容の都合上「ー」は避けて通れないので、
どうしたら良いか教えてください。よろしくお願いします。
0484nobodyさん2006/09/25(月) 16:03:14ID:zOMXhHPD
PHPでアップローダー作ってるのですが、
動画をアップロードして、その動画のサムネイルも
ウェブ上に表示される方法に関して、
詳しく書かれた専門書があればお勧めいただければありがたいです。
0485nobodyさん2006/09/25(月) 17:48:42ID:???
>>484
そんな本は無い。
それくらい自分で実装方法が思いつかない&調べられない、という
レベルなら、諦めたほうがいい。
0486nobodyさん2006/09/25(月) 18:06:15ID:???
いや、あきらめるな調べろ
0487nobodyさん2006/09/25(月) 18:20:53ID:???
いや、あきらめたりもしくは調べろ
0488nobodyさん2006/09/25(月) 19:48:15ID:???
いや、根気良く質問し続けろ
0489nobodyさん2006/09/25(月) 21:45:43ID:???
ほう、動画のサムネイル表示か。
やったことないから俺は分からない。だからちょっと面白い。

よし、やってみよう。
0490nobodyさん2006/09/25(月) 22:05:02ID:???
yahooで「php 動画 サムネイル」で検索したら1番上に出てきたけど。
ffmpegってエクステンションがあるみたいね。

わりと分かりやすいドキュメントもあるし。

調べるってことをしないのかね・・・
04914832006/09/25(月) 22:30:14ID:???
2バイト目が正規表現の特殊文字と一致するのが原因?らしい??
むむむ……??
0492nobodyさん2006/09/25(月) 22:37:20ID:???
>>491
charset=euc-jp じゃない?
04934912006/09/25(月) 22:40:59ID:???
回答どうもありがとうございます。
指摘箇所を修正したのですが文字化けしました。
「そこを直すだけ」だとだめなんでしょうか・・。
0494nobodyさん2006/09/25(月) 22:48:31ID:???
んー

[ php.ini ]
mbstring.language = Japanese
mbstring.http_input = auto
mbstring.http_output = EUC-JP

っていうか今483のコード目通したけど、明らかにおかしいから文字コード以前にそれを直すべき。
for文の変数がおかしい。eregの使い方間違ってると思われる。あと、一般的にFunctionはfunctionで。
0495nobodyさん2006/09/25(月) 22:52:46ID:???
回答どうもありがとうございます。
ですが、回答の内容が理解できません。(頑張って調べてみますが)
明らかにおかしいとのことですが、
取り敢えず「ー」を検索キーワードにしなければ正しく動作してます。
0496nobodyさん2006/09/25(月) 22:59:55ID:???
いやいや、これじゃ$yasuda[0]取れてないじゃん。
0497nobodyさん2006/09/25(月) 23:03:12ID:???
内部・出力・スクリプト・CVSファイル・POSTされたデータ のエンコーディングは全部EUCか?

tanaka と yasuda にする意味が分からん。
どうせ意味を持たない名前の変数なら hoge とかにした方が分かりやすい
function Search_Pattern($key, $csv)
{
 foreach ($csv as $line) {
  if($line == "") continue;
  if(!mb_ereg(mb_convert_encoding($line,"EUC","SJIS"), $key)) return 0;
 }
 return 1;
}

まぁあれだ、エスパー的に考えると多分POSTされたデータがSJISだからEUCに変換すれば通るんじゃないか
2バイト目が\x5Cな文字を受け取ると失敗する
0498nobodyさん2006/09/25(月) 23:05:34ID:???
あ、申しわけない。$loopの"o"の数は無視してください。
それは、間違いです。
実際は、全部$loooopです。
0499nobodyさん2006/09/25(月) 23:09:28ID:???
書いた後で思った。
$tanakaって分割されたCSVの一行なのに、$lineって変だな
05004832006/09/25(月) 23:24:18ID:???
>>497さんに指摘されて、全てのファイルを見直したら、
CSVファイルがShift-JISになってたので、ECUにしたら、
「ー」の検索結果が上手く表示されました。感動!
普段使ってるHTMLエディターがそういう設定ないので、
あんまり気に止めてなかったことでした。
mb_convert_encodingとか見たことないこと書いていただいたので、
それも参考にしてみたいと思います。

それでは、皆さん、ご迷惑お掛けしました。
頑張りまーす。
0501nobodyさん2006/09/26(火) 00:38:00ID:???
PHP5のPOST処理が遅いって、このスレで何度か出てたので調べてみた。

PHP/4.3.11
PHP /5.1.6

で、両方Apache/2.0.53で動かした。
ソースは

$file=$_POST['FILE'];
$fp = fopen('testfile', 'w');
var_dump(fwrite($fp, $file));
fclose($fp);
echo "OK";

こんな単純な処理、
んで、5Mちょうどに作ったランダムな文字を埋め込んだテキストデータを送ってみた。
PHP5側が32秒、PHP4側は3秒

…なんだろう、この差は('A`)
ちなみに、php.iniは新たに排除された物以外同じ。
POSTに関連するような項目は無いはず。
0502nobodyさん2006/09/26(火) 00:49:08ID:???
こ・・このあり得ない程の差は一体どこが問題なんだ・・・
0503nobodyさん2006/09/26(火) 01:45:38ID:???
セキュリティ耐性の向上でいろいろチェックでもしてるのでは?
バッファーオーバーフロー対策だけでもかなりのオーバーヘッドが発生して処理速度が落ちると思う。いちいちサイズチェックしてる訳だし。
プロファイル取って精査してみると原因が分かるかもね。
05045012006/09/26(火) 02:12:00ID:???
関係ありそうなのといえば
magic_quotes_gpcだろうけど
これを無効にしても変わらんね。
まぁ、チェックはこれだけではないと思うので、オプションでいじれない範囲になるのかな
0505nobodyさん2006/09/27(水) 06:20:17ID:???
>>501のソース
最初ファイルの書き出しの所でオーバーヘッド起きてるんだと信じ込んでたが
$file=$_POST['FILE'];
の直後に、echo 'OK';exit();
やっても、OKが返るまでに相当時間がかかる。
さらに、$file=直前の一行目に書いても同じ。

ちなみに、俺はWindows版のPHPで試したが、その場合PHP4/5ともに30秒くらいかかった。
んで、FreeBSDマシンもあるので、>>501とほぼ同じマシンで試したら、4/5ともにほぼ同じ30秒くらい。

ところがどっこい、xreaのPHP5採用鯖とPHP4採用鯖で試したら、2秒で完了した。
同じく外部で借りてる鯖で試してもそんなもん。
この2つの共通点はLinuxって事だな。

俺の結論としては、4/5の差じゃなくて、OSの何かの差だと思うんだが・・・。
PHP.iniファイルは当然あわせてるし、他に考えられん。
0506nobodyさん2006/09/27(水) 06:23:50ID:???
>>505を見ると、俺にはハードウェアの違いに見えるんだが…
Windows版はGUI立ち上がってるからCPUパワーが一段階下がる。
何となくお前のFreeBSDマシンはメインマシン下がりの1世代か二世代前のマシンな希ガス
POST処理って何気にCPU食うからな。URLエンコードやmagic_quotes_gpcの有無に限らず結構チェックが多いから
0507nobodyさん2006/09/27(水) 12:43:34ID:???
そりゃ素人が作った鯖と、それで飯食ってるプロが建てた鯖とでは違うと思うが。
xreaはRAID搭載ジーオン鯖だったりしないか?
0508nobodyさん2006/09/27(水) 13:13:40ID:???
getimagesizeで、警告がでるときとでないときがあるのですが、どうしてですか?
if(getimagesize($_FILES["upfile"]["tmp_name"])){
$errors = "画像形式のファイル以外は登録できません";
}
空のjpgをアップすると、警告と$errorが表示されます。
でも、テキスト形式のファイルをjpgにして、アップすると、
$errorは表示されるのですが、警告は表示されません。

マニュアルには、
filename のイメージにアクセスできない場合、もしくは有効な画像でない場合、getimagesize() は FALSE を返し、E_WARNING レベルのエラーを発生させます
と書いてあるのですが、どうしてでしょうか?
もし、よろしければ、教えてください。
0509nobodyさん2006/09/27(水) 17:55:56ID:???
>>508
ファイルがアクセス可能であればE_WARNINGはでないようだ
マニュアルのミスだね
0510nobodyさん2006/09/27(水) 17:56:10ID:???
>>507
POSTで受信する段階ではRAIDとか関係ないでしょ
0511nobodyさん2006/09/27(水) 21:49:52ID:???
>>508
マニュアルのミスっすか!
ありがとうございます!!
0512nobodyさん2006/09/28(木) 05:09:14ID:???
phpで構造体(c言語でいう、structに相当するもの)を表現するには、
通常どのようにするのでしょうか?
0513nobodyさん2006/09/28(木) 09:24:11ID:???
配列かオブジェクト使え
0514nobodyさん2006/09/28(木) 09:41:40ID:vmB3T9I4
>>505
文字コード何にして送ってる?
FreeBSDは、EUC/ECU-JPだから
その変換作業がオーバーヘッドになってると思われ。OSの差が本当に原因なら
0515nobodyさん2006/09/28(木) 09:44:55ID:???
日本語扱わないなら文字コードは関係ないよ。latin1相当だ。
0516nobodyさん2006/09/28(木) 11:09:55ID:???
誰かFreeBSD環境とLinux環境を切り替えれる人が>>501のソースを実行してみりゃわかる話。
OSレベルで差が出るとは思えんが・・・
>>501が同一マシンで実行したのなら、何かOSの差異に問題があるんだろうな。
でも、PHP4と5だろ・・・、うちじゃ差は無かったよ。FreeBSDマシンだがどっちも同じくローカルで30秒ほど
本当に一桁で完了なんてすんの?
流石にこのマシンLinux入れるわけにはいかないので試せないけど、もしそういう結果が出るなら乗り換えてしまいたいかも・・・
0517nobodyさん2006/09/28(木) 11:47:29ID:la8GqmPx
echoとprintが両方使えるのですが、どちらを使う方が良いのでしょうか?
0518nobodyさん2006/09/28(木) 12:51:26ID:???
殆ど同じだから好みで使い分けていいよ。
ただし、どちらかに統一するように!

void echo ( string arg1 [, string ...] )
int print ( string arg )

>戻り値
・echo は戻り値がない
 NG : echo echo echo echo "hoge";
・print は常に1を返す
 OK : print print print print "hoge";
 → hoge111

>引数
・echo は「,」(コロン)で区切った文字列を連結して出力する事ができる
 echo "hoge", "hage", "hige";
 → hogehagehige
(普通にドットで文字列連結できるからあんまり意味ないけど、違いって事で)
0519nobodyさん2006/09/28(木) 12:53:18ID:???
・・コンマなのになぜコロンと書いてるんだろうか・・・ orz
0520nobodyさん2006/09/28(木) 15:08:09ID:???
>>518
わかりやすくありがとう

がんがるノシ
0521nobodyさん2006/09/28(木) 17:51:44ID:???
聞いてくれ!みんな!
ming居れたいんだけどコパーイルエラーでちゃう。


dbl2png.c:31: error: 文法エラー が "png_uint_32" の前にあります
等のエラー
make[2]: *** [dbl2png] エラー 1
make[2]: Leaving directory `/usr/local/src/ming-0.3.0/util'
make[1]: *** [utils] エラー 2
make[1]: Leaving directory `/usr/local/src/ming-0.3.0'
make: *** [all] エラー 2

ming のアーカイブをダウンロードし、展開して
ming-0.3.0.tar.gzとming-php-0.3.0.tar.gz 他にも居れないとダメん?
make
エラー
糸冬

OS:CentOS4.2
Apache1.3.3+modssl
PHP4.3.11
Postgres7.2.2

色々調べたがイマイチグット来るものが中田・・・。
0522nobodyさん2006/09/28(木) 18:13:15ID:ESgbH1eM
曜日選択のPHPを作っています。
mofu.phpにはチェックボックスに月〜土まであり、submitすると、mofu.phpで判定を行います。

<input name="ShopOpenW[]" type="checkbox" id="ShopOpenW[]" value="月" <? if(in_array("月",$_POST['ShopOpenW'],TRUE)){echo "checked"; } ?>>月

としたのですが、チェックが入っていない状態でsubmitすると、

Warning: in_array() [function.in-array]: Wrong datatype for second argument と怒られます。

でもチェックを入れた状態でsubmitするとWarningも出ないし、期待通りチェックボックスにチェックが
ついたままの状態になります。

このWarningをつぶす方法を教えてください。
0523nobodyさん2006/09/28(木) 18:17:16ID:???
>>522
まぁ、一つの方法としてはエラーレベル下げるとか。
05245222006/09/28(木) 18:28:24ID:ESgbH1eM
チェックボックスに1つもチェックが付いていない=空のデータ、
つまり配列じゃないぞゴルァというエラーであると思ったので、
if($_POST["ShopOpenW"]==""){
$_POST["ShopOpenW"]=array();
}
として空白のときは空の配列になるようにしました。
期待通りの動作にはなりましたがなんか正統な方法じゃないような
気がするのでもっといいアイデアがあればお願いします。

>>523
あえてエラーレヴェルは下げない方向で・・・
ヘタレなので別の部分で対処すべき不具合も見えなくなっちゃうかも
なので・・・。
0525長文ですいません。2006/09/28(木) 18:35:24ID:???
ログイン後のユーザーページを表示させるのに、セッションを使っているのですが、
これはセキュリティ的にやはり危ないのでしょうか?
というのも、現在、パスワードなどの認証後、$_SESSION["userid"]= $userid みたいな感じで、
値をいれ、各ページでその値が空でなければ、$_SESSION["userid"]の値を元に、
個々のユーザーのデータを抽出して、表示させています。
ただ、$useridはDBからそのまま持ってきた値を使っています。
だから、会員ナンバー1の人はその$useridが1となってます。
これは、すごい危険ですかね?
もし、よろしければ、どういった管理をすれば良いのかアドバイスをください。
宜しくお願いします。
0526nobodyさん2006/09/28(木) 18:47:04ID:???
>>524
<? if($_POST['ShopOpenW']){echo "checked"; } ?>
じゃ、ダメ?
0527nobodyさん2006/09/28(木) 18:49:07ID:???
>>525
login_idっていうの作って見れば?
わたしはUserId.liginIdでハッシュをつくってるけど
まぁ、ログイン時にDBを更新しないといけないけどね・・・
05285222006/09/28(木) 19:06:14ID:ESgbH1eM
>>526
配列に入ってるから無理やり引きずり出さないと使えないと思ってたのに、
こんなにスマートに使えるなんて・・・。
知りませんでした、勉強になります。
0529長文ですいません。2006/09/28(木) 19:11:09ID:???
>>527
ありがとうございます。なるほど、そうしたほうが良さそうですね。
でも、初心者の自分にはちょっと面倒そう。。
でも、そんなこと言ってられないっすよね!
ありがとうございます。
でも、普通はそんな感じで管理するのですかね?
05305222006/09/28(木) 19:12:13ID:ESgbH1eM
>>526
1個だけチェックのときは上手くいったけど
全部同じように処理したら1個チェックをつけただけで
全部のボックスにチェックが付いちゃった。
びっくり〜(●o●)
0531nobodyさん2006/09/28(木) 19:16:30ID:???
>>530
えーまじでぇー
中に'月'って入ってるか見ないとダメか!;
0532nobodyさん2006/09/28(木) 19:20:27ID:???
>>529
めんどくさかったら
login_idだけでもいいんじゃない?

さっきからオレ一人しか答えてないような気がするが。
0533nobodyさん2006/09/28(木) 19:29:54ID:???
>>530
受け取って表示するプログラムってどんなん?
0534530=5222006/09/28(木) 19:38:21ID:ESgbH1eM
>>533
お店が開いてる曜日をチェックするセクションを作ってます。
ただ営業時間とかお店の名前(読み方をカタカナで)とかいろいろ
あって、お店の名前のカタカナ項目にカタカナ以外が入ってたりとか
しないかをチェックしています。
で、カタカナ項目にエラーがあるのにチェックした曜日が消えちゃダメ
なので、前に入力された情報を保持する方法を考えています
やっぱり曜日はセットで保持するべきだと思って、チェックボックスの
項目を配列でまとめています。
0535長文ですいません。2006/09/28(木) 19:42:22ID:???
>>532
もっとめんどくさがって、$useridに数回、endodeした値を
セッションに入れるじゃ、セキュリティはダメですかね!?
すいません、質問ばっかして><
0536nobodyさん2006/09/28(木) 20:01:49ID:???
>>534
でけた。

表示。

$day_arr=array("dummy","月","火","水","木","金","土");
for($i=1;$i<count($day_arr);++$i){
echo '<input name="ShopOpenW['.$i.']" type="checkbox" id="ShopOpenW['.$i.']" value="'.$day_arr[$i].'"';
echo "> ".$day_arr[$i];
}

受取

$post_data = $_POST['ShopOpenW'];
$day_arr=array("dummy","月","火","水","木","金","土");
for($i=1;$i<count($day_arr);++$i){
echo '<input name="ShopOpenW['.$i.']" type="checkbox" id="ShopOpenW['.$i.']" value="'.$day_arr[$i].'"';
if(array_search("$day_arr[$i]",$post_data)) echo "checked";
echo "> ".$day_arr[$i];
}

これでDo?
0537nobodyさん2006/09/28(木) 20:04:45ID:???
>>535
直接useridを持ち歩かなければいいしょ!
なんらかの方法でハッシュ化とか別の物を使用するとかすれば
0538530=5222006/09/28(木) 20:13:59ID:ESgbH1eM
わーお
すごいのきたー。
これ使わせてもらいまっす。

ありがとうございました〜。
■ このスレッドは過去ログ倉庫に格納されています