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

【PHP】くだらねぇ質問はここに書き込みやがれpart8

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/08/08(月) 01:18:55ID:54u1h4+D
PHPに関するくだらない質問用すれです。
ここなら本スレで回答のないお前の下らない質問に回答があるかも知れません。
次スレは>>970あたりが建てて下さい

・過去スレ
【PHP】くだらねぇ質問はここに書き込みやがれ
http://pc5.2ch.net/test/read.cgi/php/1099322141/
【PHP】くだらねぇ質問はここに書き込みやがれpart2
http://pc5.2ch.net/test/read.cgi/php/1105218084/
【PHP】くだらねぇ質問はここに書き込みやがれpart3
http://pc5.2ch.net/test/read.cgi/php/1107780435/
【PHP】くだらねぇ質問はここに書き込みやがれpart4
http://pc8.2ch.net/test/read.cgi/php/1110697712/
【PHP】くだらねぇ質問はここに書き込みやがれpart5
http://pc8.2ch.net/test/read.cgi/php/1114787573/
【PHP】くだらねぇ質問はここに書き込みやがれpart6
http://pc8.2ch.net/test/read.cgi/php/1117945031/
【PHP】くだらねぇ質問はここに書き込みやがれpart7
http://pc8.2ch.net/test/read.cgi/php/1121100429/
0412nobodyさん2005/08/19(金) 14:17:26ID:???
PHP4時代に作成したクラスファイルとやらを晒してみたらどうよ。
0413nobodyさん2005/08/19(金) 14:24:26ID:???
>>407
display_errors = Off
04144072005/08/19(金) 14:40:12ID:???
すみません。自己解決しました。
>>411で書いたとおり(後出しスマソ)JpGraph 2.0を使っているのですが、
その設定ファイル(jpg-config.inc)に
DEFINE("CATCH_PHPERRMSG", true);
という設定があったので、これを true->false へ変更したらエラーがでなくなりました。
0415nobodyさん2005/08/19(金) 15:29:42ID:MY/rYcMm
ユーザー名とパスワードを入力してログインする会員専用のサイトで
現在ログイン中のユーザーを取得するにはどんな方法があるのでしょうか?
0416nobodyさん2005/08/19(金) 15:44:13ID:???
>>415
それだけの情報で答えられる人はエスパースレににもいないだろう。
0417nobodyさん2005/08/19(金) 15:47:28ID:oRNXECTa
教えてください。

変数名の一部に数字が入っていて、その数字を別の変数で
持っていて、つなげてひとつの変数にすることは可能でしょうか?
具体的に言うと、



$count =1;
$hoge.$count = "test";
$count++;
$hoge.$count = "aaaa";

echo $hoge1.$hoge2

出力結果
testaaaa

こんな感じの処理をしたいんです。
ちなみに上の記述では何も出てきませんでした。

ちなみに、配列にしたら、というのは無しでお願いします。
(変数名の規約で配列になっていない仕様の為)
0418nobodyさん2005/08/19(金) 15:51:32ID:???
$hoge="test";
echo $hoge.="aaaa";

$countはなんだ?
04194152005/08/19(金) 15:59:58ID:MY/rYcMm
>>416
説明不足ですみません。
一般的にどういった手法をとるべきなのかをお聞きしたかったのですが、
とりあえず現状ではログインページにて入力したユーザー名とパスワードをデータベースに照合して、
成功したらユーザー名をセッション変数に格納して各コンテンツにアクセスできるようにしています。
サーバー側で維持しているセッションのユーザーを全て取得して
「現在ログイン中のユーザーは・・・」といった表示をしたいのですが、
このようなことは可能なのでしょうか?
よろしくお願いします。
0420nobodyさん2005/08/19(金) 16:00:20ID:oRNXECTa
>>418
あースマソ
なんつーか、testaaaを表示したいとかじゃなくて
ただ例だったんだけど、例が悪かったス

んーととにかく、$hoge1、$hoge2って名前の変数があって
それをループで1と2のところ変動できないかなってこと。
で、しかも配列じゃないの。厄介です。
0421nobodyさん2005/08/19(金) 16:04:08ID:???
>>417
素直に配列にした方が良いと思うけど。

$count = 1;
eval("\$hoge" . $count . " = \"test\";");

$count++;
eval("\$hoge" . $count . " = \"aaaa\";");

echo $hoge1.$hoge2;
0422nobodyさん2005/08/19(金) 16:07:51ID:???
>>420
糞仕様を変更する














${'hoge'.$count}
0423nobodyさん2005/08/19(金) 16:10:57ID:???
>>417
こんなんでもできたよ。

$count = 1;
$tmp = "hoge" . $count;
$$tmp = "test";
$count++;
$tmp = "hoge" . $count;
$$tmp = "aaaa";

print $hoge1.$hoge2;
04244212005/08/19(金) 16:12:05ID:???
>>422
おおぉ、すげえ。${} で参照だけでなく代入も出来るのか。
知らなかったよ。PHPって何でもありだな。
>>421はスルーしてくだされ。
0425nobodyさん2005/08/19(金) 16:17:01ID:oRNXECTa
>>422
ま、まあそうなんですが引継ぎの仕事で、前の人が配列で定義してやがらないので
これから全部配列にすると大変なことが起きるんで、逃げの対策としてってことです。

${}使わせてもらいます。

>>421
evalでもいけました。ありがとうございます。
0426nobodyさん2005/08/19(金) 16:18:06ID:/9DHVQ9O
$offset=$_REQUEST['offset'];
if($offset) {
return TRUE;
}

とあるんですが、$offsetが0の場合FALSEになってしまいます。
パラ渡しで、offset=0の時とoffset=NULLの時があり、NULLの
時だけFALSEにしたいんですが、どすればいいんでしょ?
$offsetに値を渡す時に文字指定してあげればいいと思うですが
そんな関数ってあるんでしょか?
0427nobodyさん2005/08/19(金) 16:23:37ID:???
>>426
http://jp.php.net/manual/ja/types.comparisons.php
0428nobodyさん2005/08/19(金) 16:27:58ID:???
>>426
===

!==
04294262005/08/19(金) 17:06:47ID:???
>>427-428
ありがとございました!おかげさまで
if($offset!==NULL)
で解決いたしました。
04304262005/08/19(金) 17:20:01ID:???
あれ?
と思ったらダメくさい。
if($offset!==NULL)
まちがいですた・・・(T.T)
もうちょっとがんばってみます。
0431nobodyさん2005/08/19(金) 18:04:29ID:???
phpのソース上で、例えばlsコマンドなどのシステム系コマンドを
実行するのは可能ですか?Perlは出来たんだけど・・・
0432nobodyさん2005/08/19(金) 18:12:19ID:???
>>431
>>350-352
0433nobodyさん2005/08/19(金) 18:14:13ID:???
>432
おぉーーー、見落としてたー!
つ�d
0434nobodyさん2005/08/19(金) 18:21:50ID:???
ローカルで、PHPをテストしたせい(?)かもしれないんですが…
昨日からハードディスクの回転が止まりません。異常ですよね。

電源落としてもHDDが動きっぱなし。。。。
0435nobodyさん2005/08/19(金) 18:27:30ID:???
それはホラーだな。いや、怪談か。
ディスクだけに番町皿屋敷ってね。
0436nobodyさん2005/08/19(金) 18:27:58ID:???
電源落としてもHDDが動きっぱなし、つーのは異常というか夢の永久機関の出現というか、、、
04374342005/08/19(金) 18:38:22ID:???
間違えました。電源落としても→再起動しても です。
ブォーンって凄い音がしてます。どうしたら。…
0438nobodyさん2005/08/19(金) 18:41:06ID:???
スレ違いだから糞して寝ろ
04394342005/08/19(金) 18:55:27ID:???
Internal Server Error
0440nobodyさん2005/08/19(金) 18:57:12ID:???
お前らの頭の中がInternal Server Error
04413982005/08/19(金) 19:29:57ID:qEImwFqo
cookieについて質問させていただいた者です。
内容がJavaScript関係の気がするので、そちらのスレッドで聞いてみます。
0442nobodyさん2005/08/19(金) 20:20:46ID:KoUPvsHD
明らかに文法的に合ってるのにParse errorというのが出ます
誰かたすけて!!
0443nobodyさん2005/08/19(金) 20:28:44ID:???
>>442
エラーが出なくなるまでソースを削っていく。
0444nobodyさん2005/08/19(金) 20:44:09ID:KoUPvsHD
>>443
そうやったら、//がある奴以外全部なくなった・・・・
0445nobodyさん2005/08/19(金) 20:49:56ID:???
その作業で数行に収まった筈だから、そのエラーとソースを貼ってみ。
0446nobodyさん2005/08/19(金) 21:10:33ID:KoUPvsHD
// タイトル名
$title = "掲 示 板";

// タイトル文字の色
$tCol = "#666666";

// タイトル文字サイズ
$tSize = '24px';

// 本文文字サイズ
$bSize = '13px';

// 本文文字スタイル
$bFace = '"MS UI Gothic", "MS Pゴシック", Osaka';

// 記事題名の色
$subCol = "#DD0000";

// スクリプトURL
$script = './aska.php';


// 管理用パスワード
$pass = '0123';
0447nobodyさん2005/08/19(金) 21:12:18ID:KoUPvsHD

// 最大記事数(これを超える記事は古い順に削除)
$max = 50;

// 戻り先URL
$home = "../index.html";

// タイトル画像を使う場合 (http://から画像を指定)
//$ImgT = "";
//$ImgW = 300;# 横幅サイズ
//$ImgH = 70;# 縦幅サイズ

// bodyタグ
$body = '<body bgcolor="#F0F0F0" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">';

// URLの自動リンク (0=no 1=yes)
$autolink = 1;

// 引用部色変更
// 1 : 色指定を行うと「引用部」を色変更します
// 2 : この機能を使用しない場合は何も記述しないで下さい ($refCol="";)
//$refCol = "#804000";


// メール通知機能
// 0 : 通知しない
// 1 : 通知する → 自分の投稿記事も通知する//
// 2 : 通知する → 自分の投稿記事は通知しない
$mailing = 0;

0448nobodyさん2005/08/19(金) 21:14:30ID:KoUPvsHD
// メール通知先アドレス(メール通知する場合)
$mailto = '[email protected]';
// タグ広告挿入オプション
// → <!-- 上部 --> <!-- 下部 --> の代わりに「広告タグ」を挿入。
// → 広告タグ以外に、MIDIタグ や LimeCounter等のタグにも使用可能。
$banner1 = '<!-- 上部 -->'; # 表示部上部に挿入
$banner2 = '<!-- 下部 -->'; # 表示部下部に挿入

// 記事の更新は method=POST 限定する場合(セキュリティ対策)
// → 0=no 1=yes
//$postonly = 1;

// 他サイトから投稿排除時に指定する場合(セキュリティ対策)
// → 掲示板のURLをhttp://から書く
$baseUrl = '';

0449nobodyさん2005/08/19(金) 21:16:26ID:KoUPvsHD
//一ページ表示件数
$page_view = 10;

// 制限投稿間隔(秒数)
// → $regCtl での投稿間隔
$wait = 60;

//データファイル名
$data_file = "bbsas.dat"



// アクセス禁止
// IPを""の中に書いて下さい ,で区切って下さい
//例)array("127.0.0.1", "333.333.333.3", "555.5.5.5")
$yada = array("test", "test2");

Parse error: parse error, unexpected T_VARIABLE
まずこの最後の行からエラーが出るんです
そのあとは//以外全部がエラーです・・・
0450nobodyさん2005/08/19(金) 21:18:41ID:???
オマイはアホウか。エラーが出る最小のところまで削って、そこだけ書け。
んで、$data_file = "bbsas.dat" の末尾に ; がない。
以上
0451nobodyさん2005/08/19(金) 21:23:11ID:???
PHPはほとんど触った事が無い人なのかな?
各行で // 以降はコメント(説明書きで実行には影響しない=削っても良い)なので、
さらにエラーが出なくなるまで(上下から)削っていくと、
$data_file = "bbsas.dat"
$yada = array("test", "test2");
この2行くらいまで削れるっと。
上の行の最後に ; が抜けてるっぺ。
0452nobodyさん2005/08/19(金) 21:23:52ID:KoUPvsHD
>>450
ほんとだ!!!!!;がない!!!
解決しました!!!ほんとありがとうございました!!
これのために5時間費やした・・・
0453nobodyさん2005/08/19(金) 21:25:08ID:???
>>442 >>446-449
明らかに文法的に合ってるのにParse errorというのが出ます
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
( ´,_ゝ`)プッ
0454nobodyさん2005/08/19(金) 21:25:24ID:KoUPvsHD
>>451
はい・・・PHP初めて三日目です・・・
これまでプログラミングはHSPしかやったことがありません
ご迷惑おかけしました
0455nobodyさん2005/08/19(金) 22:19:39ID:???
>>452
その5時間は無駄ではない。みんな一度は通る道。
経験者からすれば、つまらないミスだけど、原因を突き止めたこの爽快感、わすれるなよ。そして、君が経験を積んで、困ってるやつがいたら、手を貸してやることだ。
0456ハゲド2005/08/19(金) 22:28:45ID:???
なぜなら、すべてのプログラマは、最初初心者だったのだから。
0457nobodyさん2005/08/19(金) 22:30:23ID:???
ミスをしない初心者がどこにいる、、、
0458nobodyさん2005/08/19(金) 22:46:06ID:???
結局、なんの切り分けも出来ずに丸投げしただけなんだから、原因を突き止めた爽快感なんて
味わえる訳ねえべ。
HTMLなんかでも、結果がおかしい時に削って範囲を絞るぐらいはするだろ。
HSPは使ったことあるがPHPは慣れていなくて。。。というレベルではないな。
5時間はただただ無駄に過ごした時間。
0459nobodyさん2005/08/20(土) 02:15:08ID:???
>>458
まぁ、そう言うなって。イヤだったら答えなきゃいいだけだし。
漏れ自身、まだ初心者の域だけど、自分に答えられる事は答える。
初心者にわかるように答える、それが自分の知識の再確認になるんだ。
助けてもらった事は数知れず。感謝でいっぱいです。
>>452が>>442みたいなことを言った事を、のちのち「恥ずかしい」と思えるようになれば、いいんじゃないかな?

>>452
「プログラムは思ったように動くのではなく書いた通りに動く。」
UNIXの格言です。
0460nobodyさん2005/08/20(土) 12:24:38ID:???
;と:とか間違うこともある。すげー気付かない。
0461nobodyさん2005/08/20(土) 12:38:02ID:???
そういうのは慣れだろうね。場所に応じて指が勝手に選択してるというか。
他人の書いたソースなら見落とすかも知れない。まぁ、走らせればエラーで分かるけど。
0462nobodyさん2005/08/20(土) 15:42:52ID:???
昨日switchのcase:をcase;って間違えて書いたんだけどなぜか動いた
04634592005/08/20(土) 16:44:04ID:???
漏れが良くやっちゃうのは、変数上書き系。
× if($hoge = "hage")
○ if($hoge == "hage")
ロジックを思いついてハァハァして関数を一気に書くとこのミスをよくやる。
あと、自分で定義した変数名をすっかり忘れてて上書きとか。

藻前らはどんなミスしますか?

0464nobodyさん2005/08/20(土) 16:53:49ID:???
あんまりPHPのスクリプトで使ってるのを見かけないけど、
if("hage" == $hoge) てな感じに先に文字列を書いておけば == を = にしちゃった時にエラーになるね。
0465nobodyさん2005/08/20(土) 16:55:23ID:???
>>463
入れ子の括弧の数。

>>464
しかし、気持ち悪い書き方。
0466nobodyさん2005/08/20(土) 17:10:11ID:???
>>465
それなりのエディタを使用していれば括弧の数で間違うことはあまりないと思うけど。
if("hage" == $hoge) の書き方は宗教論争に発展しやすいんで感想は述べないほうが。。。
0467nobodyさん2005/08/20(土) 17:38:56ID:cxKBVtTD
PHPとMySQLを使用しています。

DBのフィールドを
 words BLOB
とします。

PHPで
$title = addslashes($_POST['title']);
$keyword = addslashes($_POST['keyword']);
を1つのフィールドに登録して
$sql = "insert into tablex (words) values (";
$sql .= "'".$title."\001".$keyword."' )";
$result = mysql_query($sql, $con);
のような登録ってありなんでしょうか。

つまりバイナリデータ"\001"はエスケープしなくて
そのまま使えますか。

--つづく--
0468nobodyさん2005/08/20(土) 17:40:00ID:???
--つづき--

こんなことするのわけは、
select * from tablex where title like '%abc%' or keyword like '%abc%'
を
select * from tablex where word like '%abc%'
で済ませられることぐらいなんですけど。

また、PHPではバイナリを気にせず文字列のように使えますか。

つまり、前述のような使い方が出来たとして、
$sql = "select * from tablex where word like '%abc%'";
$result = mysql_query($sql, $con);
$row = mysql_fetch_assoc($result);
$words = $row['createdate'];
$words = preg_split("/\001/", $words);

$title = $words[0];
$keyword = $words[1];
で取り出すことが出来ますか。

実際こんなことするか決めかねていますけど。
0469nobodyさん2005/08/20(土) 17:42:37ID:???
perlライクに
if($hoge eq "hage")
とか使いたい。
0470nobodyさん2005/08/20(土) 17:45:21ID:???
前身がパーラーな漏れは、
ヒアドキュメントの;の位置をよく間違える。
04714592005/08/20(土) 18:18:54ID:???
>>464
比較するところ、=が一個足りなくて代入しちゃう、おまけにそれがtrueで意図しない条件分岐のブロックを実行しちゃうわ、変数は上書きしちゃうわ、って意味でかいたんですが。>>463ってそんな変な書き方かな?
if($hoge == "hage"){
$kekka = "ハゲです";
}else{
$kekka = "ハゲじゃないです";
}
echo #kekka;
って続く訳ですが。
>if("hage" == $hoge)
逆だぁ、こんなの初めて見た。

>>465
かっこは先に書いちゃうように心がけてるんであんまりやらないなぁ。

>>470
非亜ドキュメントの最初と最後の行まで、タブでインデントしちゃう、ってのもたまにやります。
0472nobodyさん2005/08/20(土) 19:58:50ID:oc0A9ckR
>>469
Perlな人って、覚え初めの頃ってそういう比較演算子気持ち悪いと思わなかったのかな?
俺はプログラムJavaScriptから入ったから、慣れない書き方に挫折した。。
0473nobodyさん2005/08/20(土) 21:22:44ID:???
とりあえず、ニーモニックかYO!!って突っ込みいれた。
0474nobodyさん2005/08/20(土) 21:50:06ID:???
突然 Google Web API の日本語が通らなくなったんだけど
仕様とか変わった?
04754672005/08/20(土) 22:09:13ID:???
>>467
実際にバイナリデータをSQL出来るか確かめようと思って試したが、
置換を間違えてこうやってた。
$contents = $_POST['contents'];
$contents = preg_replace("/=/", $contents, "\002");
しばらく気がつかんかった。


ところで、
$contents = preg_replace("/^==+$/", "<HR>", $contents);
のような ^ $ は使えないのでしょうか。
実際出来なかったのですが、何か方法あるのでしょうか。
0476nobodyさん2005/08/20(土) 23:15:52ID:???
>>475
> $contents = preg_replace("/^==+$/", "<HR>", $contents);
おしりに改行とか入っているのでは?
0477nobodyさん2005/08/20(土) 23:24:29ID:???
>>470
あとヒアドキュメントの>>と<<<も。
>>472
あまり変には思わないな…
BASICの変に大文字なのと、IF THENとか.5とかGOTOの方がキモイと思う
0478467,4752005/08/20(土) 23:49:47ID:???
>>476 ありがとう。

<TEXTAREA>による複数行なので\r\nが入っています。

ということは、
$lines = preg_split("/\r?\n/", $contents);
foreach( $lines as $line )
みたいにしないとだめって事なのですか。
これだと何か効率悪そうに感じたので。
0479nobodyさん2005/08/20(土) 23:51:05ID:???
言語にキモイも何もないだろ…
そんなことじゃ手に職付かないぞ
0480nobodyさん2005/08/21(日) 00:11:01ID:???
アセンブラ最強。
見やすいもへったくれもない。
0481nobodyさん2005/08/21(日) 00:21:05ID:???
ハンド逆アセンブルがんがれ
0482nobodyさん2005/08/21(日) 00:28:21ID:saxbkmPu
PHP5でフォームからデータを取得してsendmailで内容を受信する為の
php.iniの設定とコードを打って実行してみたのですが、なりません。
コードと、php.iniの見直しはそれぞれ7回ずつしました。

誰か
助けてください!!

ソースが必要であれば
書き出しますのでよろしくっす。

0483nobodyさん2005/08/21(日) 00:28:24ID:???
APL、Basic、C、Delphi、Eiffel、Fortran、Guile.. てな感じでアルファベット20個を(た・・たぶんまだ)使えるオイラは、
キモさというより各言語間の影響みたいなものを感じる。
そんな感じで各言語の構文を見ていくと面白い。
Perlのelsifなんかは、Perl使いの人はせっかちだなぁ eを打つのも面倒なのか 省略しすぎ、とか。
0484nobodyさん2005/08/21(日) 00:35:22ID:???
>>482
OS名と、受信(?)に使っている関数名と、受信に関係するphp.iniの設定はどうなってますか?
また、関数に渡している実際の変数の値をecho等で表示した場合に、希望する値になってますか?
0485nobodyさん2005/08/21(日) 00:39:48ID:???
>>482
エラーを嫁。次はsendmailがその鯖で使えてるかどうかを調べる。

>>483
どれがどの言語の文法だったか忘れるでしょ…。
e入れるんだっけ?外すんだっけ?みたいな。
忘れるのも得意になる。
使ってて感じる各言語のクセ以外覚えない事にしてるけど。
0486nobodyさん2005/08/21(日) 01:03:35ID:saxbkmPu
>484,485
早速の応答感謝します!

OSは、WinXPです。
関数は、mb_send_mail関数です。(マルチバイト関数のSENDMAIL版ですかね。)
php.iniの設定ですが、行数で言えば
101行目 バッファリングの有効化
115行目 出力ハンドラの設定 mb_output_handler
422行目 出力文字コードの設定 Shift-JIS
436行目 外部ファイルの検索先 .;c:/php/includes;c:/php/PEAR
443行目 ドキュメントルート c:/Program Files/Apache Group/Apache2/htdocs
450行目 拡張モジュール(php_*.dll)を含むフォルダ c:/php/ext
570行目 マルチバイト関数を有効化
1105行目 デフォルトの言語 Japanese
1110行目 PHP内部の文字コード EUC-JP
1113行目 HTTP入力の文字コード auto
1117行目 HTTP出力の文字コード SJIS
1124行目 入力文字コードの自動変換を有効化
1128行目 文字コード検出の優先順
1132行目 代替文字 auto
1133行目 スクリプトで使用する文字コード EUC-JP

関数に渡している実際の変数の値をecho等で表示した場合に、希望する値になってますか?
に関しては、恐らく答えはYESだと思うのですが、自信をなくしました。。。

エラーは、出ないんです!
フォームから送信するとちゃんとデータを取得した後
元の画面に戻るようにしてるのですが、メールの受信だけ出来てないんです。

やはり、
ソースを書き出した方が良いでしょうか?
0487nobodyさん2005/08/21(日) 01:07:29ID:???
Shift-JISなど存在しない
0488nobodyさん2005/08/21(日) 01:11:10ID:saxbkmPu
>>487
ご指摘ありがとうございます!
私の打ち間違いでした!
正しくは、Shift_JISです!

ご親切にありがとうございました!
0489nobodyさん2005/08/21(日) 02:09:59ID:???
>>486
ttp://www.php.net/manual/ja/ref.mail.php
Windows環境でmail関数(mb_send_mailも)を使うと、
メール鯖(同じ鯖内でも)とネットワーク接続してメールを送信することになる。
(Windows以外では、sendmailプログラムに直接データを渡す)
なので、php.iniの中で、どのメール鯖と通信するかと設定する必要がある。(SMTP,smtp_port,sendmail_from)
(日本語マニュアルのMail設定オプション説明の SMTP int の行は smtp_port の間違いだね。)

要は、メール鯖を用意(自鯖でもいいし、プロバイダのメル鯖でもいいし)していて、
そのメール鯖の情報がphp.iniに適切に設定されている必要があります。
(んでも、プロバイダのメル鯖は、spam対策で POP before SMTPの制限があったりする。その場合は×)

メール送信に失敗した場合は、falseが返ってくるので、
if(!mb_send_mail(〜)) echo 'メール失敗'; てな感じでエラー処理をします。
0490nobodyさん2005/08/21(日) 02:25:23ID:saxbkmPu
>>489
深夜にもかかわらず、ご丁寧に返してくれてありがとうございます!
php.iniの設定ですが、あと2つ書き忘れていましたので
追記します!

607行目 自分が利用可能なメールサーバ プロバイダのウイルスチェック用のSMTPサーバ指定
611行目 上記で使っている自分のメールアドレス指定
をしていました。

489さんのおっしゃる通り、適切に設定されていても
spam対策で POP before SMTPの制限がある場合はダメなのですね。。。
因みに、今日プロバイダに電話確認したばかりなのですが
何と訪ねたら良かったのでしょうか?
あと、その回避法などはないものでしょうか?

図々しいとは思うのですが宜しくお願いいたします。
0491nobodyさん2005/08/21(日) 02:40:37ID:???
>>490
図々しいと思うのならPOP before SMTPをググって理解しやがれ。
人に聞く前に自分が思いつく回避法を試せ。
0492nobodyさん2005/08/21(日) 03:32:08ID:saxbkmPu
>>491
申し訳ないです。
私の勉強不足だと思います。
POP before SMTPについては、SMTPではそれだけでは認証が出来ないため
一度popでIPのログを残して、一定時間内にアクセスがあった場合のみ且つ
popに残ったIPのログと同じものだった場合にのみ、認証されて送信される

という理解だったのですが、これに見合うためのpopにアクセスするために
どうすれば良いかという方法を本とネットでここ3日間ほどずっと悩んでも分からずに、
(OEで一度"送受信"ボタンを押してすぐに、IEでフォームから送信をする始末で..)

幅広い知識がないと、やはり難しいものですね...

491さん、ご気分悪くされたのなら申し訳ございません。
自分でももう一度いろいろ調べた上で質問させて頂きたいと思います。
0493nobodyさん2005/08/21(日) 03:51:01ID:???
あってるよ。だから、CGIでPOP鯖にログインすりゃ良い。
0494nobodyさん2005/08/21(日) 03:58:08ID:saxbkmPu
>>493
ありがとうございます!!
POPにログインの方法を調べて作ってみます!!
出来たらお礼を言いに来ます!
絶対作って、絶対来ます!!

親切にいろいろアドバイスをくれた皆さん
ご指導ご鞭撻ありがとうございます!
頑張りたいんです!!
まだまだ知識不足なんですが
これからもどうぞ宜しくお願いします!!

では、失礼します。
0495nobodyさん2005/08/21(日) 04:05:56ID:???
>>494
えーと、POP before SMTPの制限があることは確実なんですか?
>>489で書いたのは、プロバイダのメル鯖利用は簡単にできない事がある、という例です。

そういう制限があるかどうかは、プロバイダのヘルプページに制限事項と
メールソフトでの設定方法が書いてある事が多いので、そこから推測することができます。
POP before SMTP以外にも、SMTP AUTHやら 色んな制限方法があります。

で、POP before SMTPが邪魔になっているのなら、>>493が言ってるような処理を
fsockopen関数あたりを使ってやればよいかと。
「POP before SMTP fsockopen php」あたりでググればそのものズバリのものが見つかるかも。
真面目にやる場合は、POP3(Post Office Protocol version3)を調べてゴニョゴニョと。
0496nobodyさん2005/08/21(日) 05:37:10ID:saxbkmPu
>>495
はい。今日(と言っても半日ほど前ですが)プロバイダに電話で聞いたところ
SPAM対策に時間での制限と、30分以内に500通をこえるメールの送信は出来ないように
規制を掛けているそうです。
ちなみに、メールサーバでのウイルスチェックを申込んでいるので利用しているのは
AUTH.***.jpというサーバになっています。

まだメーラーのことからPOP before SMTPについてや
PHP5でのメールの送信の方法(実例)、POP3へのアクセス・ログインの
方法を調べていたところでした!

fsockopen関数のこと、ありがとうございました!!
PHP初心者の私には、まだ手も足も出ませんが、少しの助言を貰えるだけで
かなり助かります!あとは、自分で出来る限り調べて理解していきたいと思います☆

本当に、親切に教えて頂いてありがとうございます!!
0497nobodyさん2005/08/21(日) 06:05:43ID:g7cZnge0
PHPとMySQLを使用しています。

ひらがな、カタカナ、半角カタカナを区別しないでDBから検索するとしたら、
PHPでひらがな、カタカナ、半角カタカナをひらがなに変換してDBに登録し、
SQLのwhereもPHPでひらがなに変換するっていうのありですか。

勝手にひらがなになってしまうのは妥協するものとします。

それよりもっといい方法があるのなら教えてください。
0498nobodyさん2005/08/21(日) 10:37:35ID:???
>>497
元データはそのままにして、全部ひらがなにしたフィールドを用意する。
取り出すときは元データを取り出す。
0499nobodyさん2005/08/21(日) 19:12:08ID:???
array_multirortについてなんですが使い方がよくわかりません。
たとえば
$A[0][NO] = 3
$A[1][NO] = 1
$A[2][NO] = 2
$A[0][NAME] = "ほげ"
$A[1][NAME] = "ほげほげ"
$A[2][NAME] = "ほげほ"
を[NO]順にならびかえて
$A[0][NO] = 1
$A[1][NO] = 2
$A[2][NO] = 3
$A[0][NAME] = "ほげほげ"
$A[1][NAME] = "ほげほ"
$A[1][NAME] = "ほげ"
としたいのですが。
過去ログに似たようなのがあったんですが自己解決したみたいで。くだらないですがお願いします。
0500nobodyさん2005/08/21(日) 19:15:23ID:???
array_multirortではなくarray_multisortでした。あと最後のは
$A[2][NAME] = "ほげ"
でした。
0501nobodyさん2005/08/22(月) 11:42:38ID:???
>>497
俺も検索用変換済みの検索用フィールドを用意するのが良いと思うよ。
「タイトル」「本文」なんかをまとめて検索用フィールドに突っ込むとかもできるし。
#where句の LIKE 対象が1フィールドで済む
0502nobodyさん2005/08/22(月) 12:55:50ID:mbIy2UAI
パスの中の ./ や ../ を展開(?)して、それらを含まない形のパスにしたい。
一番エレガントだと思う方法を答えてください。
パスのルール。
 ・パスは絶対パスで、/ から始まる
 ・ファイル・ディレクトリ名は . で始まることもある ex) /www/htdocs/.htaccess
 ・パスがディレクトリ名で終わる時は / で終わる
 ・万一 ../ を展開して、ルートの下に下りてしまうようなときは、/ もしくはヌルストリングを解とする
どうよ?
正規表現一発で処理しようとトライしたんだけど、なかなかどうして難しいもんです。
0503nobodyさん2005/08/22(月) 13:04:01ID:???
>>502
意味不明。
パスといっても、サーバパスとURI上のパスがアル。
掲げたルールはなんに対してのルールなんだか・・
元?変換後?
もう少し、状況踏まえて判りやすく。
0504nobodyさん2005/08/22(月) 13:10:42ID:???
>>502
パスが存在するっていう前提だがrealpath()ではあかんのか?
05055022005/08/22(月) 13:14:45ID:???
>>503
サーバパスです。
入力されるパスは上記ルールに従っています。
この条件で、./ や ../ を含んでいるパスを適切の処理して、それらを含まないパスを返す関数を作ると考えてください。

でも、../ を処理してルートの下に下りたときは、>>502 のルールだと難しいかもしれないですね。
とりあえずこういったイリーガルな場合は、各自挙動を決める、ってことでどうでしょう?
というか、切実な質問ではなく、エレガントな解を求めるパズルのようなものだと考えてください。

自分の作った一部を挙げると、 ./ を展開する部分までしかできてないですが

function toruDot($path)
{
 $ans=Preg_Replace('/\/(\.\/)+/','/',$path); // ./ を取る
 // ここに ../ を取る処理を書く
 return $ans;
}

てな具合です。
今自分のやり方だと、../ をループで取り除くような処理になってしまうのですが、これをもうちょっとすっきりできないかと。
05065042005/08/22(月) 13:16:58ID:???
>>504
ありゃ、便利な関数があるもんですね。
自分の無知さに打ちひしがれてしまいました・・・

でも、できれば単純な文字列処理にしたいです。
そのパスがサーバ上に存在するかどうかは無関係にしたいです。
0507506=5022005/08/22(月) 13:18:00ID:???
>>506 の名前欄まちがえました。502 です。
05085022005/08/22(月) 13:34:54ID:???
んー、なんかイマイチなんで出さなかったのですが、やっぱり一応答えが出る版を書いておきます。

function toruDot($path)
{
 $a=Array();
 foreach(Explode('/',$path) as $nm) {
  if($nm=='.') continue;
  if($nm=='..') {
   if(Empty($a)) break;
   Array_Pop($a);
  }
  else {
   $a[]=$nm;
  }
 }
 return Join('/',$a);
}

スッキリしないですよね?
正規表現一発ぽんとかでできるといいなぁ・・・
 
0509nobodyさん2005/08/22(月) 14:08:07ID:g44ZS3v9
ユーザー定義関数の中でグローバルスコープの配列変数を
参照するのはどうしたらいいのですか?
0510nobodyさん2005/08/22(月) 14:11:06ID:???
>>509
つ http://php.s3.to/man/language.variables.scope.html
0511nobodyさん2005/08/22(月) 15:03:43ID:???
>>502
>パスのルール。
> ・パスは絶対パスで、/ から始まる

>>505
>入力されるパスは上記ルールに従っています。
>この条件で、./ や ../ を含んでいるパスを適切の処理して

入力値が絶対パスで/から始まるんじゃないの?
どこに、./ や ../ が含まれるというの?


そもそも「入力されるパス」ってどこから入力されるのよ。
■ このスレッドは過去ログ倉庫に格納されています