【PHP】下らねぇ質問はここに書き込みやがれ Part19
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/04/09(日) 01:31:18ID:???ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
まず読め【PHP マニュアル】
http://www.php.net/manual/ja/
本スレ【PHP】質問スレッドpart33【php】
http://pc8.2ch.net/test/read.cgi/php/1140027592/
【PHP】下らねぇ質問はここに書き込みやがれpart18
http://pc8.2ch.net/test/read.cgi/php/1142417901/
過去スレは>>2-3あたり
0425nobodyさん
2006/04/16(日) 22:11:36ID:U9is4hyDcheckboxのnameがcheck[]となっていました。
checkboxは10項目くらいあるんですけど、全部check[]です。
これはその後どうやってばらばらに受け取るんですか?
チェックボックスはラジオボタンとちがって、複数の値が送れる(?)ので
メールフォームとかで、チェックされたものだけを出力したいのですが、
いまいちうまくいきません。
0426nobodyさん
2006/04/16(日) 22:12:41ID:???0427394
2006/04/16(日) 22:20:16ID:U9is4hyDレスどうもです。
拡張子は意味無いんですか。勉強になります。
ファイル名はdate関数とかでリネームしてます。
てゆうかなんでそのままのファイル名は危険なんですかね?
htmlspecialcharsは普通にinput textをdbに入れる前に使います。
textareaの文章とかにも使います。これも意味ないですかね?
>396
その本は気になっていて、ちょっと読んだのですが、
難しそうで自分にはまだ早いかなと思ってしまいました。
もう一回読んでみます。
0429425
2006/04/16(日) 22:24:23ID:U9is4hyDvar_dampって初めて知りました。print_fとは違うんですか?
配列に格納されていたとしても、入っているもの(チェックされたもの)だけを
判別して、取り出すにはどうすればいいですかね?
0430nobodyさん
2006/04/16(日) 22:35:23ID:???ああ、アップロード以外に文字列データもあるってことね >htmlspecialchars
それなら分かる。
しかし、普通はhtmlspecialcharsはHTML出力時に使うものであってDBに入れるときに使うもんじゃないぞ。
DBに入れるときはmysql_escape_stringしとかなきゃダメだろ。
拡張子はいくらでも嘘を書けるから、むしろ1度削除して自前で判定した拡張子を付加してやった方がいい。
0431nobodyさん
2006/04/16(日) 22:36:50ID:???元々チェックボックスってチェックされたものしか送信されないような…。
後はそれぞれのvalueの内容を見て振り分けてるんじゃないの。
0432nobodyさん
2006/04/16(日) 22:53:40ID:42+ATyOFPHPinfo()は動くんだけど
echoさえ動きません。。。orz
PHP Version 4.4.1-pl1です。。
もう、インストール&アンイストールを4回くりかえしてます。
php.iniの設定は以下の通りです。
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = EUC-JP
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none
extension=php_mbstring.dll
0433nobodyさん
2006/04/16(日) 22:55:23ID:???もっとくやしく
0434nobodyさん
2006/04/16(日) 23:12:53ID:ifz+1Zn40438nobodyさん
2006/04/17(月) 00:28:08ID:ivoWdWE5どこに行けばいい?
0439nobodyさん
2006/04/17(月) 00:53:31ID:qfnqXSjS>>437
すいません
解決しました。
PHP.iniの設定をmbstring.internal_encoding = SJISにしたら直りました。
下らねぇ質問で失礼しました
0440nobodyさん
2006/04/17(月) 01:07:46ID:???0441nobodyさん
2006/04/17(月) 03:44:51ID:???誰か、該当者やちゃってくれない?
0444nobodyさん
2006/04/17(月) 12:48:59ID:Z/1jQgcoでいいだろ。ってことでしょ。
0445nobodyさん
2006/04/17(月) 13:10:32ID:???0446nobodyさん
2006/04/17(月) 13:59:46ID:rTnmXwePPHPでGDライブラリを使いたいので、必要なライブラリをインストールしたのですが
何度やってもFreeTypeを使えるようになりません。(phpinfo()で見てもFreeType Supportが有効にならない)
GD SupportやJPG/PNG Supportは有効になっていてグラフィックス関連の関数も使えるのですが・・・
OSはRedHat9、PHPやGD等のライブラリは全てソースからインストールしています。
○挑戦中のバージョン
PHP4.4.2.tar.gz
gd-2.0.33.tar.gz
libpng-1.2.8.tar.gz
jpegsrc.v6b.tar.gz
freetype-2.1.10.tar.gz
zlib1.2.3.tar.gz
PHPでGD+FreeType環境を構築された方いらしたら、./conigureのオプション指定方法やライブラリのバージョン等を教えていただけないでしょうか?
0447nobodyさん
2006/04/17(月) 13:59:47ID:???また他人を騙るアホが出てきたな
質問者は語られたくなかったらID付けましょう
ageればID付きます。
って言うのをテンプレ化キボン
それでも本人性の確認は出来ないけどね
0451nobodyさん
2006/04/17(月) 15:00:29ID:wNvi8T9B僕はmysqlのサーバ名とか「パスワードとかを、db.iniというファイルにまとめて書いておいて、phpで呼び出すときにrequire_once("db.ini")とやって、
mysql_connect($dbserver, $dbuser, $dbpass);とかやっています。
このdb.iniは普通にphpのファイル群と一緒にアップロードしていますが、
こういうのって危険なんでしょうか?
これは別のフォルダに入れてhtaccessとかで認証かけたりしたほうがいいのでしょうか?
0452nobodyさん
2006/04/17(月) 15:05:30ID:???外からは見れないところにおくか、拡張子phpとかにして、
見られても生では見えないようにしておかなきゃダメ。
0454nobodyさん
2006/04/17(月) 15:27:03ID:???0455nobodyさん
2006/04/17(月) 15:28:46ID:???0457nobodyさん
2006/04/17(月) 16:23:04ID:???proxyを経由してfile_get_contentsすることはできますか?
できるとしたら、どうすればいいでしょうか。
0458nobodyさん
2006/04/17(月) 16:26:48ID:???とりあえずこれだけはやっておけ
君のサイトのhttp://ドメイン/ウニャウニャ/db.ini
としてdb.iniが見えるかテスト
あとhttp://ドメイン/ウニャウニャ/
でディレクトリ内一覧が表示されないかもテスト汁
見えたらアウト
0460451
2006/04/17(月) 16:50:21ID:wNvi8T9Bレスありがとうございます。
ファイルを直接指定するとばっちり中身が見えます。
ディレクトリ内の一覧も正格に表示されます。
どうすればいいでしょうか?
0461451
2006/04/17(月) 16:51:45ID:wNvi8T9Bよろしくお願いします。
0463451
2006/04/17(月) 16:59:29ID:wNvi8T9B見逃してました。どうもです。
一般的というか、こういうときはだいたいこうするみたいな
セオリー的なことが聞きたいです。よろしくおねがいします。
0465nobodyさん
2006/04/17(月) 17:20:05ID:???phpでWINMXみたいのををつくりたいんですができますか?
0466nobodyさん
2006/04/17(月) 17:22:01ID:???このサイトのマニュアルを一括でプリントできない?
紙で移動中とかに読みたいんだけど
0469nobodyさん
2006/04/17(月) 17:39:54ID:???やろうと思えば出来るかもしれません。頑張ってください。
以上
--------------解決-----------------------------------
>>466さん他の方、質疑応答どうぞ。
0470nobodyです
2006/04/17(月) 18:14:21ID:AOutErUa<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp" />
<title>無題</title>
</head>
<body>
<form action="file.php" method="POST" enctype="multipart/form-data" name="file" id="file">
<input name="csv" type="file" size="60" /><br />
<input name="" value="追加" type="submit" />
</form>
<?
if(isset($_FILES['csv']['tmp_name'])){
$handle = fopen($_FILES['csv']['tmp_name'], "r");
echo "ファイルの内容<br>";
if ($handle) {
while (true) {
echo mb_convert_encoding(fgets($handle, 8192),"EUC-JP","Shift_JIS") . "<br>";
if(feof($handle)) break;
}
fclose($handle);
}
?>
0471nobodyです
2006/04/17(月) 18:15:24ID:AOutErUa<table border="1" cellpadding="3" cellspacing="0" bordercolor="#000000">
<?
$handle = fopen($_FILES['csv']['tmp_name'], "r");
echo $_FILES['csv']['tmp_name'] . "をオープン<br>";
if ($handle) {
$arr = array();
while (true) {
$arr = fgetcsv($handle, 8192);
if($arr[0]=="") break;
echo '<tr>';
foreach($arr as $value){
echo '<td>' . mb_convert_encoding($value,"EUC-JP","Shift_JIS") . '</td>';
}
echo "</tr>\n";
if(feof($handle)) break;
}
fclose($handle);
}
}
?>
</table>
</body>
</html>
----------------------------------------------------------------------------------------
上記プログラムで、Excelで出力したCSVを読み込みたいのですがLinux環境ですと漢字が入ったCSVが読めません。
テキストエディタで漢字の部分を「"」で囲むと正常に動くのですが・・・
ちなみに、windows版のPHPだと「"」がなくても読み込めました。
Linux環境で読み込む良い方法はありませんでしょうか?
0472nobodyさん
2006/04/17(月) 18:17:35ID:???0473470
2006/04/17(月) 18:23:32ID:AOutErUaやっぱそれしかないのかな・・・
0474nobodyさん
2006/04/17(月) 19:02:12ID:???$num = count($post);
for($i=0;$i<$num;$i++)
$post[$i] = nl2br($post[$i]);
$_POST = array_map('func_nl2br', $_POST);
function func_nl2br($post) {
}
0475474
2006/04/17(月) 19:04:56ID:qA+rYU42$_POST = array_map('func_nl2br', $_POST);
function func_nl2br($value) {
$value = nl2br($value);
}
他に良い方法がありましたら宜しくお願いします。
0477nobodyさん
2006/04/17(月) 20:30:41ID:???0478466
2006/04/17(月) 20:38:00ID:???0479nobodyさん
2006/04/17(月) 21:13:28ID:???0480nobodyさん
2006/04/17(月) 22:01:11ID:???先週、HTMLという言語(?)の勉強をはじめました!
気づいたらスルスル頭に入っていくというか、どういうものか理解できてしまった!
勢いでWEBサイトを作って公開しました〜>_<
それで、僕が借りてるサーバはHTMLのソースに広告タグを付加してページを
出力するようになってるんですが、そこにJavaScriptが使われていたので今日勉強しはじめました。
すると・・・もうJavaScriptがだいたいどういうものか理解できてしまった!というかWEBがだいたい
どういうものか分かった!んで、今PHP書いてます!もちろんこれはJavaScriptと違ってサーバ側で
動くのでブラクラにはあまり関係ありませんね(笑)
ぶっちゃけプログラミングってかなり簡単。。基礎さえ分かれば関数調べるだけじゃん。。
0482nobodyさん
2006/04/17(月) 22:07:16ID:???0484nobodyさん
2006/04/17(月) 22:53:40ID:???http://jp.php.net/get/php_manual_ja.chm/from/a/mirror
0486nobodyさん
2006/04/18(火) 00:40:17ID:???0487nobodyさん
2006/04/18(火) 00:46:12ID:???ただ、公式のchm形式のドキュメントは本家のスタッフが
「手動」(恐らく)で生成してるので、普通のオンラインドキュメントの
バージョンに追従しきれてない(若干古い)ので、それには注意しとくこと。
あと生成時に文字化けが混入したりすることが昔は結構あった。
前に「需要があるのなら私家版を公開しましょうか」という人がいたが
余り要望がなかったせいか、今のところそういう動きはない(と思った)
0488nobodyさん
2006/04/18(火) 01:53:16ID:ufbV+k46どうしてでしょうか?
0490nobodyさん
2006/04/18(火) 10:43:26ID:Cv/nzOIgformからPOSTされたデータの各最後尾に、
余分な空白キャラ(タブかも・・・)がくっついてきていて困っています。
一応データ展開時にrtrimすることで、余分キャラがない状態にはできるのですが、
余分キャラがついてこないようなPOSTの方法、
または余分キャラを発生させないログの作り方などの
ヒントをいただければと思う次第です・・・。
ログの作り方は
$writeDat = $number."\t".$post['title']."\t".$post['honbun']."\t".$post['hi']."\t".$post['ji']."\t".$post['cat']."\t".$image."\n";
展開は
$lines = file($setting['logfile']);
for ($i=0; $i<count($lines); $i++) {
$dat = explode("\t", $lines[$i]);
list($number,$title,$honbun,$hi,$ji,$cat,$image) = $dat;
$cat = rtrim($cat); // なぜかトリムが必要・・・
}
こんな感じです。よろしくお願いいたします。
0491nobodyさん
2006/04/18(火) 10:48:16ID:lmSkCOac0492nobodyさん
2006/04/18(火) 10:56:00ID:???フォーマットしてくれるソフトってありませんか?
if ($a == true) { print "OK"; }
↓
if ($a == true) {
print "OK";
}
みたいな感じで
0493nobodyさん
2006/04/18(火) 11:18:33ID:???0495490
2006/04/18(火) 12:50:33ID:???レスありがとうございます。
フォームを書いている部分のソースを晒してみます。
function putForm($ua,$setting,$cate) {
echo '<div class="titlebox"><h2 class="diarytitle_2">admin mode</h2></div>';
echo '<form enctype="multipart/form-data" action="admin.php" method="post">';
echo 'title <input type="text" size="60" name="title"><br>';
echo 'category<select name="cat">';
echo '<option value="">--</option>';
while (list($key, $val) = each($cate)) {echo "<option value=$key>$cate[$key]</option>";}
echo '</select><br>';
echo '<textarea rows="6" cols="60" name="honbun"></textarea><br>';
echo '<input type="file" name="uploadfile"><br>';
echo '<input type="hidden" name="action" value="write">';
echo '<input type="submit" value="write">';
echo '</form>';
}
(原因を削除してしまうのを回避するために、関数部分まるごとコピペしました)
0497446
2006/04/18(火) 13:19:13ID:QNgm/uExどうみても素人です。本当にありがとうございました。
0498490
2006/04/18(火) 13:54:39ID:???ご意見ありがとうございます。
implodeを使うと、formのhiddenで渡している値なども、
まとめてログに格納されてしまうので・・・
あ。
POSTされた内容を$postに丸投げ($post = $_POST)しているから、
そんなことになるのですね。
$post[]の内容を整理して、implodeで見通し良くログを作成したいと思います。
ありがとうございました。
0499nobodyさん
2006/04/18(火) 14:58:11ID:???> while (list($key, $val) = each($cate)) {echo "<option value=$key>$cate[$key]</option>";}
この$cateはどこでどういう風に作ってるんだ?
そこでゴミ入れちゃってるんじゃないかと思うんだが
0500490
2006/04/18(火) 15:01:51ID:???> この$cateはどこでどういう風に作ってるんだ?
別ファイルにて$cateの設定をしております。
$cate => カテゴリーの意 です。
$cate = Array (
'news' => 'おしらせ',
'music' => '音楽',
'baseball' => '野球',
'game' => 'ゲーム',
'yota' => 'ヨタ話',
'test' => 'テスト'
)
こんな感じです。趣味がバレて(*‘ω‘ *)ィャンですが。
0501nobodyさん
2006/04/18(火) 15:10:49ID:ksf2FOYQxamppにて環境を構築しています
ファイルのアップロードをPHPで実現しようとscriptを組みましたがファイル名によっては正常にアップロードされない場合があります。
アップロード前に適当な長い文字にリネームすると正常に動作するのですが、これは私の綴りに誤りがあるからなのでしょうか。
web上でphp scriptを配布されている方のscriptも走らせて見たのですが全く同じ現象で、どこが悪いのかさっぱりです。
何かバグや仕様などあるのでしょうか?
0503501
2006/04/18(火) 15:19:11ID:ksf2FOYQレス有難う御座います。
そしてすいません。
肝心な部分が抜けていました。
FILE_003.jpgが通らず、200601071530000.jpgは問題無し
前者をリネームし00aerasfsaf5.jpgにしてみましたが通らずといった感じです。
$upfile_name = $_FILES["image"]["name"];
$upfile = $_FILES["image"]["tmp_name"];
$path = dirname($_SERVER[PATH_TRANSLATED]).IMG_DIR;
if (file_exists($upfile)) {
$dest = $path.$upfile_name;
move_uploaded_file($upfile, $dest);
$ext = substr($upfile_name,-4);
rename ($dest,$path.date("20ymdhis").$ext);
$imgname = date("20ymdhis").$ext;
echo $size = getimagesize($path.$imgname);
$W = $size[0];
$H = $size[1];
0504nobodyさん
2006/04/18(火) 15:21:28ID:ksf2FOYQ原因があるとしたら、ファイル名処理が怪しいですかね。
ケツから三行目にechoとか入ってますが、なんちゃってデバッグでちゃんと取得できているか試してた名残です(汗
0505nobodyさん
2006/04/18(火) 16:04:58ID:???以下で同じ駄目だというファイル名で実験したが普通に動いているぞ?
<?php
$upfile_name = $_FILES["image"]["name"];
$upfile = $_FILES["image"]["tmp_name"];
$path = dirname($_SERVER[PATH_TRANSLATED]).'/upfile/';
if (file_exists($upfile)) {
$dest = $path.$upfile_name;
move_uploaded_file($upfile, $dest);
$ext = substr($upfile_name,-4);
rename ($dest,$path.date("20ymdhis").$ext);
$imgname = date("20ymdhis").$ext;
echo $size = getimagesize($path.$imgname);
$W = $size[0];
$H = $size[1];
}
?>
<html>
<head>
<title>テストたぼけたれ</title>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>
<body bgcolor="#FFFFFF">
<form action="./0.php" method="post" enctype="multipart/form-data">
<input type="file" name="image">
<input type="submit" value="送信">
</form>
</body>
</html>
0507nobodyさん
2006/04/18(火) 16:15:06ID:???0508501
2006/04/18(火) 16:39:57ID:???仰るとおりファイルサイズ制限によるものでした。
PHPマニュアルから関数を調べてサンプルコードをコピペした際、隠し要素のMAX_FILE_SIZEをそのままにしていたのが原因でした。
初歩的なミスで申し訳ないです。
テンパってると簡単なミスにも気づかないものですね........
0509nobodyさん
2006/04/18(火) 16:53:20ID:???$imageの後ろにゴミが付くのなら分かるが(これだと改行コードが付くだろう)
$catの方に付くってのはわからんなー
0510490
2006/04/18(火) 16:59:31ID:???レスありがとうございます。
当面は「ゴミ付データをrtrimする」という場当たり対処で乗り切りますです。
・・・目覚めは悪いですが、現状の自分のスキル不足だと割り切ります。
これから勉強していくうちに、解決策も思いつくかもしれませんし(つД`)
レスをいただいた諸氏へ感謝(。・ω・。)ゞ
0511nobodyさん
2006/04/18(火) 18:30:12ID:???$err['name'] = 'エラーメッセージ';
if( 入力チェック )
$err['tel'] = 'エラーメッセージ';
if( 入力チェック )
$err['address'] = 'エラーメッセージ';
のような入力チェックを作ったとして、
表示側を下みたいにした時、
<?= $err['name'] ?>
<input type="text" name="name"><br>
<?= $err['tel'] ?>
<input type="text" name="tel"><br>
<?= $err['address'] ?>
<input type="text" name="address"><br>
error_reportingの設定によってUndefinedが出るんだけど、
error_reporting関数か.htaccessを使って設定を変えるのと、
表示側を
<? if( isset($err['name']) ){ echo $err['name']; } ?>
とするのとどっちがいいんだろう?
0512nobodyさん
2006/04/18(火) 18:42:51ID:FgrLDE8s分数(秒数)単位で結果を出力させるにはどうしたらいいでしょうか?
http://iodine-127.no-ip.info/math/countdown.php
こんな感じなんですが、文字で出力させたいのです・・・
0513nobodyさん
2006/04/18(火) 20:30:38ID:???http://pear.php.net/package/PHP_Beautifier
0514nobodyさん
2006/04/18(火) 20:31:20ID:0MA4uQo3phpのファイルはエディタの設定をシフトJISにしています。ヘッダのcharsetはshift-jisです。phpmyadminの最初のページで、languageをjapanese(ja-sjis)にしています。php.iniのmbstringの項目ではmbstring.internal_encoding = SJISになっています。
以上が全て同じなら、文字コード的に問題無いでしょうか?作ったシステムは今のところ正常に動いています。
それと、なんだかんだいってEUC-jpでつくるのがベストみたいな話を聞いたのですが、なぜでしょうか?
よろしくお願いします。
0515nobodyさん
2006/04/18(火) 21:24:39ID:ezAkcLQV指定したディレクトリで指定した拡張子のMIME typeが何と設定されてるか
httpd.confやら.htacccessやら調べて取得してくれる関数ってありませんか
0516nobodyさん
2006/04/18(火) 23:04:17ID:???「なんだかんだでEUC-JP」の理由が理解できないうちは、
なんだかんだでEUC-JPにしとくといいと思うよ。
EUC以外のエンコードを採用するのに確固たる理由や確信が持てるように
なったら、それにすれば良いとです。
0518470
2006/04/19(水) 00:05:26ID:???http://s2.muryo-de.etowns.net/~teti/tools.phps
どっかエラーがありそう。
文字コード「EUC」の改行コード「LF」に変換してからしか使えないし
何か、良い方法無いかな・・・
0519nobodyさん
2006/04/19(水) 00:16:42ID:47s4d2RMというか、2byte文字が入っていると$_FILES['upfile']['name'];でファイル名が収得できません。
拡張子のみが返ってきます。
英数字のみのファイルはアップロード出来るので、2byte文字が原因だとは思うんですがどうすればいいのでしょうか?
$filename = $_FILES['upfile']['name'];
$enctype = mb_detect_encoding($filename);
$filename = mb_convert_encoding($filename,"EUC-JP","enctype");
if (move_uploaded_file($_FILES['upfile']['tmp_name'],$updir.$filename)
== FALSE){
print("アップロードに失敗しました。");
}else {
print( $filename . "アップロードしました。");
}
0520nobodyさん
2006/04/19(水) 00:43:16ID:???たとえばDBとコネクトするごとにtryしたほうがいいのか
クエリを発行するごとにtryしたほうがいいのか・・・
皆さんは例外結構使ってまつか?
0521514
2006/04/19(水) 01:05:36ID:3WMC/UyZレスありがとうです。
SJISとかのデメリットってなんですかねぇ?
たまにUTF8を激しく推奨みたいのも見かけますし、
なにがいいのかわからないです。
自分的にはSJISが好きなのですが、予期せぬ\マークがでたりしますが、htmlspecialcharsとかstripslashesをやると消えるので、
あまり不具合も感じません。
具体的なお話がきけると有り難いです。
よろしくお願いします。
0522nobodyさん
2006/04/19(水) 01:48:03ID:???DBへ値を保存するときにはちゃんと文字コードを意識しなければだめ。
最近はサーバ環境がユニコードのためか、viでそのまま文字が読めることに
UTF-8はいいなと感じてる。
携帯はSJISがいいでしょ?
■ このスレッドは過去ログ倉庫に格納されています