09/03/09 05:29:29
姉妹スレ
【PHP】ID出さなくても質問OKなスレ【初心者歓迎】
スレリンク(php板)
↑
こちらはIDださないで質問するスレ
3:nobodyさん
09/03/09 10:41:46
中途半端にスレたててんじゃねえ!
テンプレがたりねえだろksg
4:nobodyさん
09/03/09 12:32:31
文句言う暇があるなら自分でやれよ
俺は携帯だからめんどい
5:nobodyさん
09/03/09 16:52:14 An8QqtfK
質問です。
動的ページを静的ページに変え、
GETで指定したURLのデータを取得したく、
下記のように設定しました。
------------------
■ sample.php
<?php
$url = $_GET['url'];
$file = file_get_contents($url);
?>
■ .htaccess
RewriteEngine on
RewriteRule url/(.*)$ sample.php?url=$1
------------------
URLリンク(sample.com)にアクセスすると、
I/O warning : failed to load external entityエラーが表示されてうまくいきません。
問題の原因わかりますか?
以下、補足。
URLリンク(sample.com)
では、正常に動作します。
また試しに、
<?php
$url = "URLリンク(www.yahoo.co.jp)<)
にアクセスすると、正常に動作します。
6:nobodyさん
09/03/09 16:54:22
rewriteの記述がおかしい件
7:nobodyさん
09/03/09 18:48:52 An8QqtfK
ありがとうございます。どう書けばいいんですか?
8:nobodyさん
09/03/09 18:52:59
先ず君は以下の知識がないから勉強しなさい
ここで聞かなくてもググれば解説サイトも多いので
URLリンク(example.com)
↓
URLリンク(example.com)
9:nobodyさん
09/03/09 20:24:08 An8QqtfK
>>8 (´・ω・`)
スラッシュがダメなんだよね。
オレ、正規表現すごく苦手なんだ。
エロい人、答え教えてー(>_<)
10:nobodyさん
09/03/09 20:49:14
>>9
RewriteEngine On
RewriteRule ^url/(.*)$ sample.php?url=$1 [L]
11:nobodyさん
09/03/09 21:17:55 l0zAqNTV
PHPで新しいページを開くことはできないんですか?
おとなしくその処理だけjavascript使っといたほうがいいですか?
12:nobodyさん
09/03/09 21:20:18
>>11
そういうのはクライアントサイドスクリプトの仕事
13:nobodyさん
09/03/09 21:41:22
<a target="_blank"
14:nobodyさん
09/03/09 21:47:24
>>13
補足しとくが、それはクライアントのほうな
15:nobodyさん
09/03/09 21:51:15
だから?
16:nobodyさん
09/03/09 22:04:02 ObAH+zkj
クラスの継承って、機能を追加したいとき親クラスとほとんど変わりなければ、
もう親クラスを書き換えてしまったほうが気持ち悪くないように思えるのですが、
親を書き換えて機能を追加すると面倒くさい作業になるという場合以外に、
プログラムを書く初期段階で敢えて継承を使うときって例えばどんなときありますか
17:nobodyさん
09/03/09 22:14:56 4+GIMEEF
質問です。
PHPでHTMLページの解析をやりたいのですが、いろいろな方法があるようです。
今はどの方法がいちばんお薦めなのでしょうか?
個人的には、SimpleXMLのような使い方ができるとありがたいです。
18:nobodyさん
09/03/09 22:29:28
>>17
DomDocument::loadHTML -> simplexml_import_dom
でSimpleXMLでHTMLも扱えるようになる
でも俺は Simple HTML DOM Parser の方が好きだな
19:nobodyさん
09/03/09 22:29:49
>>16
オブジェクト指向設計を実装するとき
>>17
DOMとか
20:nobodyさん
09/03/09 22:48:20
file_get_contents or file + 正規表現
21:nobodyさん
09/03/09 22:53:19
>>20
正規表現では限界がある
22:nobodyさん
09/03/09 22:54:47
1文字ずつ見ていくやりかたもあるな
23:nobodyさん
09/03/09 22:55:16
>>20
一番下策だろw
24:17
09/03/09 22:57:35 4+GIMEEF
皆さん、ありがとうございます。
SimpleXML ではなく、PEAR XML_Serializer で使うとすると、どうするのが
おすすめでしょうか?
特に、タグが整合していないようなHTMLにうまく対応するには、どういう方法
があるでしょうか?
25:nobodyさん
09/03/09 23:07:37
pearのそのライブラリは重大なバグが潜んでるってバグ情報に載ってたぜ
26:17
09/03/09 23:14:07
>>25
ありがとうございます。XML_Serializerは、すでに自分以外の人間によって
導入済みなので、気をつけて使うことにします。
ところで、こんなのを見つけました。
HTMLを整形式のXML文書に修正するPHPクラス : Under Construction, Baby
URLリンク(www.rcdtokyo.com)
27:nobodyさん
09/03/09 23:49:28 wECRTT84
ちょっと角度の違う質問ですみませんがよろしくお願いいたします
プログラミングができることとPHPができることはイコールでしょうか?
基本的なプログラミング作法を習得すればpython,perl,rubyを覚えるのは簡単ですか?
28:nobodyさん
09/03/09 23:51:12
>>27
そういう質問が出るということは
あなたはプログラミングはまったくやったことがない?
29:nobodyさん
09/03/09 23:51:45
努力次第
30:5
09/03/10 00:17:26 IndrzJie
>>6 >>8 >>10 あらためて、ありがとうございます。
file_get_contents($url); でエラーがでる原因は、
クエリーにスラッシュが2回連続したのが含まれる場合、
$_GET['url']の値が http:/www.yahoo.co.jpになって、
スラッシュが勝手に省略されるのが原因でした。
31:nobodyさん
09/03/10 07:31:38
>>27
イコールじゃないってのはwikipediaで知らない言語を調べたときに
書いてある内容がチンプンカンプンだったりしたことがあったりしてわかるだろ
図書館なり本屋なりで計算機科学の大学の教科書みたいな本を手に入れてきて、
そんな質問したことで欝になるがいいさ
32:nobodyさん
09/03/10 08:33:34
>>27
>プログラミングができることとPHPができることはイコールでしょうか?
PHPもプログラム言語の1つなので間違ってはいないけど
PHPができるようになってプログラミングできるとかは公言しないほうがいい
世の中にはすごい人はいっぱいいるので
その人たちとの会話するには1歩ひかないと痛い目見る
PHPだけをやってるうちは難しい話ふられてもわからないからね
>基本的なプログラミング作法を習得すればpython,perl,rubyを覚えるのは簡単ですか?
簡単かどうかは経験次第
基本的にベースができてれば仕様書読めば組むことができるが読み方がわからないと話にならない
PHPマニュアルと他言語のAPI仕様書なんかは結構違ってくるので
その差をどう吸収できるかが最大の問題
言語をたくさん覚えたいというならPHPを最初にやるのはおすすめしない
いろんな言語のベースになってるCやJavaをやったほうが短期間で効率よく移行できると思う
33:nobodyさん
09/03/10 09:00:49
効率よく移行したいからCやJavaから始めるとか打算的なことやっても
大抵微妙で終わる気がするが
34:nobodyさん
09/03/10 09:18:01
独学とか言うのは信用ならない
学校がいかに効率的なシステムなのかは後悔したときになって初めて分かるw
35:nobodyさん
09/03/10 09:22:13
WebプログラミングができるということはPHPだけではやっぱだめなんだよな
いろんな技術ができてはじめてWebプログラミングができるといえるようになると思う
たとえばECサイトの構築なんかに必要なものは
HTML+CSS+JavaScript+PHP+XML Schema+XML(RSS等も)+DB(SQL)
RIAの選択肢によってはアプレットやFlash(Flex)やSilverlightなんかも
そのほかにもプロトコル(http,https)なんかの知識も必要だったり地獄
PHPができるってことは単にPHPができるってことなんだと思うわ
36:nobodyさん
09/03/10 09:34:24
なに語っちゃってんだよ
37:nobodyさん
09/03/10 09:41:12
>>24
Tidyは?
38:nobodyさん
09/03/10 09:48:07
>>35
PHPだけで言えると思ってたなんて甘すぎ
39:nobodyさん
09/03/10 09:58:42
何をいってんだおまえは
40:nobodyさん
09/03/10 10:20:12 oLUhH3AJ
今まで完全に手続き型でやっていたプログラムを、
オブジェクト指向で書き直そうと思うのですが
怖くて一歩前へ踏み出すことができません・・
書いたプログラムの規模や内容によるとは思いますが、
何かコツとか、やるならこれもやっておけみたいな点がありましたら教えてください
41:nobodyさん
09/03/10 10:34:24
なんのためにやるの?
42:nobodyさん
09/03/10 10:35:09
Javaの入門サイト池
43:nobodyさん
09/03/10 10:52:25
>>40
テストファーストだけはやっといて損はないからやとけ
44:nobodyさん
09/03/10 10:55:45
41のように答えられないんだったら無理して答えなくていいよ。
散々知識知恵を絞って、うまい回答ができないのを自ら晒しているだけ。
45:nobodyさん
09/03/10 10:59:09
お前は何を言ってるんだ
46:nobodyさん
09/03/10 11:08:50 uqvOEBO8
こんにちはをオブジェクト指向で書きたいのですがサンプルが見つかりません
どなたか教えてくだいさ
47:nobodyさん
09/03/10 11:10:19
こんにちはをオブジェクト指向でって何だ
48:nobodyさん
09/03/10 11:14:40
<?php
class hello
{
function ko(){echo 'こ';return $this;}
function n(){echo 'ん';return $this;}
function ni(){echo 'に';return $this;}
function ti(){echo 'ち';return $this;}
function ha(){echo 'は';return $this;}
}
$obj= new hello();
$obj->ko()->n()->ni()->ti()->ha();
?>
49:nobodyさん
09/03/10 11:17:34
>>48
それどういうオブジェクト指向設計?
50:nobodyさん
09/03/10 11:32:55
>>48の理解に苦しむんだが
51:nobodyさん
09/03/10 11:33:11
return $this かっけえ
52:nobodyさん
09/03/10 11:50:13
メソッドチェーンをおぼえて使いたくて仕方なかったんだろ
53:nobodyさん
09/03/10 11:54:07
<?
class greeting{
function hello(){ return "こんにちは"; }
function goodevening(){ return "こんばんは"; }
}
class bibiru extends greeting{
function goodevening(){ return "こんばんみ"; }
}
class arare extends greeting{
function hello(){ return "んちゃ"; }
}
$bibiru = new bibiru();
echo $bibiru->hello()." ".$bibiru->goodevening()."<br>";
$arare = new arare();
echo $arare->hello()." ".$arare->goodevening()."<br>";
?>
54:nobodyさん
09/03/10 12:02:02
>>46
class Hello {
static function main() {
echo "Hello world!";
}
}
Hello::main();
PHPはメインメソッドが存在しないからいちいち呼び出さないとだめ
純粋なオブジェクト指向言語じゃないので全てをオブジェクトで包む必要がない
よってPHPでHello worldを出力するだけなら
クラスを使うのは用途としておかしい
55:nobodyさん
09/03/10 12:06:59
サーバでうpしないで読む練習のためソースを読んでみたのですが>>53さんのを読むと
こんにちは こんばんみ
んちゃこんばんは
って表示されるのでおkですか?
56:nobodyさん
09/03/10 12:10:21
>>55
OK
57:nobodyさん
09/03/10 12:14:29
単にメソッドをオーバーライドしてるだけじゃん
インタフェースはどうした.デザパタはどうした.
58:nobodyさん
09/03/10 12:18:06
手取足取りしたけりゃ専用スレでやってくれ
スレリンク(php板)
59:nobodyさん
09/03/10 12:21:04 TmDav5cL
【data.php】
$title = "タイトル";
$h1 = "見出し1";
$p = "文章です";
【template.html】
<html>
<head>
<title>{title}</title>
</head>
<body>
{h1}
{p}
</body>
テンプレート(template.html)を元に{title},{h1},{p}にdata.phpにためてあるデータを値を入れたいのですが
データの数は日々追加したり削除することも考えうるのですが
どのようにしたらいいでしょうか?
【求める結果】
<html>
<head>
<title>タイトル</title>
</head>
<body>
見出し1
文章です
</body>
60:nobodyさん
09/03/10 12:31:53
一番簡単なのは テンプレートエンジンを使うこと。
61:nobodyさん
09/03/10 12:35:28
<?php echo $title; ?>
62:nobodyさん
09/03/10 12:40:01
>>61
そんなの流行らないから
63:nobodyさん
09/03/10 12:40:40 TmDav5cL
smartyで>>59みたいに分離してこんにちはと表示させる書き方を教えてください
勉強のために書きたいんです
64:nobodyさん
09/03/10 12:57:58
>>59
function convert() {
include func_get_arg(1);
return preg_replace(
'/\{([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\}/e',
'isset($$1) ? htmlspecialchars($$1, ENT_QUOTES) : \'undefined\';',
file_get_contents(func_get_arg(0)));
}
echo convert('template.html', 'data.php');
65:nobodyさん
09/03/10 12:59:19
コードが少ないけどさっぱりわからんねえわw
66:nobodyさん
09/03/10 13:02:43
>>52
>>48 は単なるメソッドチェーンじゃない。
「流れるようなインターフェース」ってやつだよ。
キーワード引数のかわりに fluent interface (流れるようなインターフェース) を使う - kwatchの日記
URLリンク(d.hatena.ne.jp)
67:nobodyさん
09/03/10 13:08:37
fluent interfaceになってない件
68:nobodyさん
09/03/10 13:10:23
匿名関数とかクロージャーとかでいいじゃん・・・
69:nobodyさん
09/03/10 13:24:59
## PHPによる、連想配列を使ってキーワード引数をエミュレートした例
$rows = Query.find_all('stocks', array('where'=>'price >= 1000',
'order_by'=>'name',
'limit'=>10));
これ本当に例?
70:nobodyさん
09/03/10 13:53:03 9aCbhHpk
ArrayAccessをある基底クラスにimplementしたら、
その基底クラスより前に拡張クラスを書くと
「クラスがない」というエラーが出るようになりました。
基底クラスの後ろに拡張クラスを移動するとエラーは消えましたが。
なぜ、ArrayAccessをimplementすると
こんなRubyやPhthonのような動作をするようになるのでしょうか?
71:nobodyさん
09/03/10 14:09:35 v2XXMSa6
>>70
日本語で書いてくれ
基底クラスより先に拡張クラスを書けば、基底がないって言われるのはあたりまえ。
ArrayAccessをimplementしたなら、interfaceを実装すればいいだけ。
ArrayAccessがどうとかは関係ない。
72:nobodyさん
09/03/10 15:24:38
>>69
>>1
73:nobodyさん
09/03/10 16:02:30
>>70が言いたいのはこの現象だろう
1: class C extends B {} // 1: をコメントアウトすると動く
2: class B extends A {}
3: class A {}
コンパイル時、 C は未定義のクラス B を参照しているので解決を保留する
B もまた同様に保留され、A のみ定義した時点で終端に達しそのまま打ち切る
そして実行時に入って再度 C>B を解決しようとするが B が未定義のままなので Class 'B' not found になる
1: をコメントアウトした場合は、B は A しか参照していないので実行時に解決できエラーも出ない
ただ組み込みクラス、インターフェイスによって実行前解決が出来る出来ないの違いが出る理由は分からない
ソースを追いかけられる人に任せる
var_dump(class_exists('Klass', false)); // false
var_dump(interface_exists('IA', false)); // true
var_dump(interface_exists('IB', false)); // false
interface IA {} // 実行前に解決
eval('interface IB {}'); // 実行時に解決
class Klass implements IA, IB {} // 未解決の IB があるので実行時まで解決を遅らせる
var_dump(class_exists('Klass', false)); // true
var_dump(interface_exists('IA', false)); // true
var_dump(interface_exists('IB', false)); // true
74:nobodyさん
09/03/10 16:16:23
>>73=>>70
本人乙
75:nobodyさん
09/03/10 16:26:30
>>73
それが不思議に思うのは、実装系以外におまいさんルールのほうが理想的とおもってるからじゃね?
普通に、実行時のロードされてるかどうかの違いでしかない > 組み込みも含めて。
76:73
09/03/10 17:02:25 AQjjLY2m
>>75
遅延評価の一例上げただけだ、説明が下手なら悪い
俺がソースを読まないと説明できないと言ってるのは次の挙動
// SPL組み込みクラス true true
var_dump(class_exists('ArrayObject', false), class_exists('XArrayObject', false));
class XArrayObject extends ArrayObject {}
// SPL組み込みインターフェイス true false
var_dump(interface_exists('ArrayAccess', false), interface_exists('XArrayAccess', false));
interface XArrayAccess extends ArrayAccess {}
あと>>70と俺は別人だからな、IDは出しとく
77:nobodyさん
09/03/10 17:10:59
>>76
それが説明できないって言ってるけど、何を説明してほしいんだ?
あるがままだろ
78:nobodyさん
09/03/10 17:13:24
>>76
一応説明しとくか。
上のケース、
XArrayObjectはvar_dump評価時にすでにロードされてる。
下のケース
XArrayAccessはvar_dump評価時にロードされていない。
よって、そのような動作になっている。
79:73
09/03/10 17:35:45 AQjjLY2m
分かりました質問としてやりなおします
【OS名】 Windows XP SP3, FreeBSD 6.4
【PHPのバージョン】 5.2.9, 5.3-dev, 6.0-dev
【質問内容】
組み込みのクラスとインターフェースで、
定義済みになるタイミングに違いが出る理由もしくは原因を教えて下さい
ソースコードは>>76です
>>77,78のような観察日記な回答は要りません
80:nobodyさん
09/03/10 17:43:40
>>79
仕様です
81:73
09/03/10 17:49:35 AQjjLY2m
>>80
仕様ですね、ありがとうございます
82:nobodyさん
09/03/10 19:29:40 U6ySWdbJ
先輩方に質問です。
phpの掲示板を運営しているのですが、海外からの宣伝書き込みを阻止したいのですが、半角英数記号のみ書込禁止は↓の構文で大丈夫だったんですが、半角スペースが含まれると対応できません。。。
何か良い方法はありませんか?
if (preg_match(\"/^[!-~]+$/\", 変数名))
83:nobodyさん
09/03/10 19:49:22
>>82
Akismet
84:nobodyさん
09/03/10 20:30:26
逆の発想でひらがなかカタカナが含まれていなければはじくとか
そっちの方が効率的だと思うよ
85:nobodyさん
09/03/10 20:37:13
>>82
\b
86:nobodyさん
09/03/10 20:38:17
半角英数の書き込みができないその手の対策はもう去年までの話だろ
時代に取り残されるぜ
87:nobodyさん
09/03/11 15:51:06
やっておくのが無駄とは思わないけどな
88:nobodyさん
09/03/11 16:49:42
すいません。ラウンドロビンや負荷分散の説明見ました。
PHP側としてはどうしたらいいでしょうか?
同期ってレンタルサーバーの複数台プラントかは
勝手にやってくれるんですか?
89:nobodyさん
09/03/11 16:50:50
当然
90:nobodyさん
09/03/11 16:53:54
ありがとう。複数台運営が将来の夢でしたので調べていました
91:nobodyさん
09/03/11 17:14:13 Txff9mTl
$a=isset($_REQUEST['b'])?$_REQUEST['b']:'';
php学習2日目の名無しです
このスクリプトの意味を教えていただけませんか
92:nobodyさん
09/03/11 17:16:18 L2Yi36ri
$a = 0;
if($a === 0){
echo "ok";
}else{
echo "";
}
で問題なく、okが出るのですが、
pdoで、$aをbindParamしたものを間に挟むと、elseしてしまいました
$a = 0;
・・・
$result->bindParam(":A",$a,PDO::PARAM_INT);
・・・
if($a === 0){
echo "ok";
}else{
echo "";
}
しかし、
$a == 0 とすればokでした。
原因は何なのでしょうかよろしくおねがいします
php5.2.6 OS windows
93:nobodyさん
09/03/11 17:16:19
>>91
三項演算子
94:nobodyさん
09/03/11 17:17:34
>>87
やらなくていいって話ではなくて、それは古いって話だ
素人乙
95:nobodyさん
09/03/11 17:27:49 Txff9mTl
>>93
理解できました
ありがとう
96:nobodyさん
09/03/11 17:54:26 aBj2wILp
PHPで、端末のOS・ブラウザ・IPなどを取得できるのは知っているんですが、固体識別番号(?)を取得することは可能でしょうか?
以前に、他人の家から漏れている無線LANの電波を悪用して、殺人予告したヤツが捕まりましたが、ノートPCリカバリ→他人の電波で殺人予告→再リカバリとやればバレないような気がします。
厨房質問でお恥ずかしいですが、よろしくお願いします
97:nobodyさん
09/03/11 18:04:38
通報しました
98:nobodyさん
09/03/11 19:13:57 TxDdMOL9
「最新記事一覧」とか「サイト内検索」とかの機能を
プラグインとしてまとめて、下のようにして読み込んでいます。
$plugin_name = "new_list.php";
define("PLUGIN_DIR",プラグインまでのパス);
if(file_exists(PLUGIN_DIR."/".$plugin_name)){
include PLUGIN_DIR."/".$plugin_name;
newList(); //プラグイン内の関数を実行
}
こうするとプラグインの数だけ毎回includeする事になるのですが
負荷がかからないか、後々めんどうなことにならないかと懸念しています。
自分では予測できないのですが、「こういうやり方だとこうなる」
というような指摘があれば、教えて下さい。
99:nobodyさん
09/03/11 19:55:56
>>96
リカバリしてもmacアドレス変わらないから無理じゃね?
100:nobodyさん
09/03/11 20:05:36
>>98
そういう時のためにinclude_onceとかrequire_onceという組み込み関数が用意されてるけど、負荷が高くなるのでお勧めしない
なのでプラグインがクラスで実装されているなら、ファイル名とクラス名を統一しておいて
$files = glob(PLUGIN_DIR .'/*.php');
foreach ($files as $file) {
if (!class_exists(pathinfo($file, PATHINFO_FILENAME))) require $file;
}
などとすればいいんじゃない?
101:nobodyさん
09/03/11 20:09:31 BrBOeywI
初めて書き込みさせて頂きます。
【OS名】Windows XP
【PHPのバージョン】php4.4.9
【連携ソフトウェア】Apache2.0.63, MySQL Server 6.3
【質問内容】
pearを導入したく、go-pear.batを実行して試みたのですが、
Extracting installer..................
Using local package: PEAR.............ok
Using local package: Structures_Graph....ok
Preparing installer..................
Warning: fopen(XML/RPC.php): failed to open stream: No such file or directory in
C:\php\temp\PEAR\Remote.php on line 187
For this remote PEAR operation you need to load the xmlrpc extension or install
XML_RPC
続行するには何かキーを押してください . . .
というエラーが出てしまい、途中で止まってしまっているようです。
インストールされていないためにPEARコマンドも実行できません。
php.iniのinclude_pathにpearディレクトリへのパスや、extensions_dirなども
見直しましたが、他に何が悪いのかわからず困っております。
102:nobodyさん
09/03/11 20:16:34
困っておりますじゃなくて、何が知りたいのか書けば?
困っておりますじゃぁ、「そうですか」としか言えない気もするが、
めっちゃ親切な人がいれば答えてくれるのかもしれんけど。
それはそうと、PHP5にして試してみたら?
go-pearが古いのかもしれないよ。
103:101
09/03/11 20:34:19 BrBOeywI
すみません、自己解決までには至っていませんが、少し先に進むことができました。
上記失敗の原因はphp.iniのphp_xmlrpc.dllがコメントアウトでした。
これを外し、必要となるiconv.dllをsystem32にコピーしてから試したところ、
PEAR_Remote (pear.php.net:80) : unexpected HTTP response
という別のエラーが出るようになりました。
こちらの対処法を調べてみることにします。
>>102
その通りですね、失礼しました。
以後、質問の意図を明確にするよう注意しようと思います。
104:認定回答者
09/03/11 20:39:09 nPJIwFx5
>>102は素人だからスルーでおk
105:nobodyさん
09/03/11 21:01:13
>>104
他の回答者を格付けできるほどの立派な頭脳をお持ちなら、何故そこで最適解をお示しにならないのでしょうか?
不思議で仕方がありません><
106:nobodyさん
09/03/11 21:18:55
ファイルアップロードの質問です。
クライアントの方はJavaScript/VBScriptで、バイナリファイルをサーバー(PHP)へ
アップロードしたいのですが、どのようにすればいいでしょうか?
JavaScript は
var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP"); //XMLHttpRequest();
xmlhttp.open('POST', 'URLリンク(hoge)', true);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send('formdata=123');
とすると、PHPの方で'123'は取れるのは確認しました.問題はバイナリで、
"ADODB.Stream"でバイナリファイルを str=Read(); strをBase64変換しようとするのですが
使っている変換用モジュールが駄目なのかもしれませんが、ここでこけてしまいます。
まずはBase64変換でポピュラーなやり方を説明しているサイトなどありませんでしょうか
お願いいたします。
107:nobodyさん
09/03/11 21:46:49
>>106
<input type="file">
108:nobodyさん
09/03/11 22:14:08
任意のフォルダ名を入力させて、その中のファイルをULさせようとしております。
<input type="file">はひとつひとつファイル選択しないといけないので、、、
109:nobodyさん
09/03/11 22:14:35
>>105
必死だな
110:nobodyさん
09/03/11 22:20:34
,..-─‐-..、
/.: : : : : : : .ヽ
R: : : :. : pq: :i}
|:.i} : : : :_{: :.レ′
ノr┴-<」: :j|
/:r仁ニ= ノ:.ノ|! _
/:/ = /: :/ }! |〕) コツン
{;ハ__,イ: :f | /´
/ }rヘ ├--r─y/
/ r'‐-| ├-┴〆 _, 、_ '⌒ ☆
仁二ニ_‐-イ | | ∩`Д´)
| l i 厂  ̄ニニ¬ ノ ⊂ノ >>108
,ゝ、 \ \ __厂`ヽ (__ ̄) )
/ /\_i⌒ト、_ ノrr- } し'し′
└-' ̄. | |_二二._」」__ノ
111:nobodyさん
09/03/11 22:23:31
,..-─‐-..、
/.: : : : : : : .ヽ
R: : : :. : pq: :i}
|:.i} : : : :_{: :.レ′
ノr┴-<」: :j|
/:r仁ニ= ノ:.ノ|! _
/:/ = /: :/ }! |〕) コツン
{;ハ__,イ: :f | /´
/ }rヘ ├--r─y/
/ r'‐-| ├-┴〆 _, 、_ '⌒ ☆
仁二ニ_‐-イ | | ∩`Д´)
| l i 厂  ̄ニニ¬ ノ ⊂ノ >>109
,ゝ、 \ \ __厂`ヽ (__ ̄) )
/ /\_i⌒ト、_ ノrr- } し'し′
└-' ̄. | |_二二._」」__ノ
112:nobodyさん
09/03/11 22:23:43
>>108
氏ね
113:98
09/03/11 23:04:15
>>100
こういうやり方、はじめて知りました!
ちょっとよく分からない関するとかありますが、調べてみます。
ありがとうございました。
114:nobodyさん
09/03/11 23:06:48
<img src="URLリンク(xxx.com)">
サーバーを引っ越したらこういうような画像が表示ができなくなりました。
いろいろ試してみたところどうも引越し先のサーバーが上の表記のものを
画像として認識してないと思われます。
画像元は他サイトなのでいじれません。
どうすれば画像として認識してくれるのでしょうか?
accessで何かすればいいのかなとは思っていますがどう書けばよいでしょうか
ご教授お願いします。
115:nobodyさん
09/03/11 23:32:05 Co0l4rZT
>>114 どうかな?
<?
header("Content-type: image/gif");
$url = "URLリンク(xxx.com)";
readfile("{$url}");
?>
116:nobodyさん
09/03/11 23:47:01
>>92
使用しているDBまた、どんなSQLを実行したか分からないけど、
bindParamは変数は参照としてバインドされるので、
メソッドの中でPDOドライバが何か余計なことをしたのかもしれないね。
bindParamの前後で、デバッガか、var_dumpで変数をチェックしてみては?
117:114
09/03/12 00:02:38
>>115
できました!!
ありがとうございます
118:nobodyさん
09/03/12 00:11:31
初歩的な質問で恐縮です。
正規表現で複数回続く文字 。 を一回に置換したいです。
以下で試しましたがうまくいきません。
最長マッチ?のしかた教えて下さい。
mb_regex_encoding("sjis");
$text = "今日は木曜日です。。天気は晴れ。。。。";
$text = preg_replace("/。+/","。", $text);
119:nobodyさん
09/03/12 00:22:47
>>118
preg_replace('/(。)+/', '。', '今日は木曜日です。。天気は晴れ。。。。');
で、できた。
括弧が必要な理由は分からん。
120:nobodyさん
09/03/12 00:23:56
それじゃ”。”にしか対応できてへん
121:nobodyさん
09/03/12 00:25:48
>>119-120 できました。ありがとうございます。
122:nobodyさん
09/03/12 01:21:32
オブジェクト指向なるものを調べ始める
↓
みんなで開発するときは作業分担効率化
↓
フレームワークを使うのが当たり前
↓
ある程度自動でさくさくプログラム書けるらしい
↓
なんか自分でやった感がなさそうな気がしてモチベーション下がってきた・・・
まだ初心者すぎるし、ずっと手続き型でやるほうがいいのだろうか・・・
でも作業分担ですっきり綺麗にプログラムかけるのとか憧れるし、
そんなことができるなら今のうちにやっておいたほうがいいし、
でもプログラム自動生成とかになるらしい?からそれになれちゃうと、
今度は手続き型で覚えてきた基礎がおろそかになって忘れそうな部分が多そうで怖い・・・
一体どうしたら
123:nobodyさん
09/03/12 01:37:44
別に手続き型言語でもフレームワークとか自動生成とかあるだろ
問題を分けて考えるべきだ
124:nobodyさん
09/03/12 01:54:01
一人OOPで作業分担もヘチマもないだろw
125:nobodyさん
09/03/12 01:59:09
誰にも見せないプログラムでも
後から見て、
おお~これは見やすくて編集しやすいな~
みたいに言われそうなの書いてみたい
126:nobodyさん
09/03/12 02:19:19
>122
・21世紀にもなってOOPができないエンジニアはゴミ
・OOPでないコードは、ひとりで書くコードでもゴミ
・「手続き型のコード」が何を指すか知らんが、PHPの文法はどのみち完璧にしないと何も出来ない
・個々のフレームワークの知識は要らん
MVC構造とは何かを頭に叩き込んでから、必要なものを自分で書け
OOP分かってない奴はクラス使っても糞コードしか書けないのと同じで、フレームワークを使おうが基礎が出来てない奴のコードはやっぱりクズだ
・ガタガタ抜かす前に動くコードを書けよハゲ
自動でサクサクできる?んじゃあやってみろよハゲ
手を動かさないエンジニアはゾウリムシ以下だ
127:nobodyさん
09/03/12 04:31:24
>>118,119
補足
mb_regex_encoding()はmb_ereg*()にしか適用されないので
マルチバイト文字だと認識できていない事が原因
その例ならpreg_replace()ではなくmb_ereg_replace()を使う
128:nobodyさん
09/03/12 09:10:37
今はアスペクト指向なんてものがあるんですよ
129:nobodyさん
09/03/12 09:36:10
手続きとかオブジェクトとかアスペクトとか手段でしかないからそれありきで考えるなんてアホ
成果上げるためにどう開発するのがいいか個別に考えればええやん
130:nobodyさん
09/03/12 09:55:01
開発速度を犠牲にしても初心者は手続きで何がどうなっているのかを
ちゃんと見極めたほうがいい
仕事になればたいした技術もおそわらず
FWとAPIの使い方を覚えさせられてラピッド開発させられるだけ
短期間で効率的に開発というのは業務では中核となる課題だが
結果ゆとりを多く生み出してる
131:nobodyさん
09/03/12 11:25:18
すいませんブログを作りたいのですが必要最低限の機能は以下でそろってますか?
トラックバック
書き込み(コメント、記事投稿)
ログ出力
132:nobodyさん
09/03/12 11:26:19 blHr3iRk
すいませんid出し忘れました
133:108
09/03/12 11:41:37
さっさと回答しろよ初心者ども
134:nobodyさん
09/03/12 11:46:49
ブログに必要なものは
↓
135:nobodyさん
09/03/12 11:48:27
根気
136:nobodyさん
09/03/12 13:49:23
>>131
最低限、カテゴリ別一覧とカレンダーと月別一覧は必要だろう
137:nobodyさん
09/03/12 13:56:45
>>136
最低限、占いとポストペットとログールは必要だろう
138:nobodyさん
09/03/12 14:26:31
ウェブログリングをお忘れでない?
139:nobodyさん
09/03/12 17:18:46
>>136
カテゴリ別一覧とかカレンダーとか月別一覧とか
生きた化石がこんなところにもいるんですね
140:nobodyさん
09/03/12 17:39:53 w9p/Xb/s
カテゴリ別一覧の仕組みがいまいちわからないんですけど
どのような仕組みでしょうか?
141:nobodyさん
09/03/12 17:50:28
SELECT title,body,entrydate FROM entry WHERE categoryid=1;
142:nobodyさん
09/03/12 17:52:19
>>139
あなたは使いにくいものはかっこいいと勘違いしてるクリエイターさんですね
143:nobodyさん
09/03/12 19:04:33 y65Mhsc8
配列から要素を抜き出し、その分を詰めたいのですが、どうするのがスマートですか?
$array = array('a','b','c');
$str = pick($array,1);
↓
$array : array('a','c')
$str : 'b'
のような動作をさせたいです
144:nobodyさん
09/03/12 19:11:59
>>143
$str = $array[1];
unset($array[1]);
145:nobodyさん
09/03/12 19:26:26
unset使うコーディングはクズだな
146:nobodyさん
09/03/12 19:26:42
>>143
list($str) = array_splice($array, 1, 1);
>>144
unsetは数値キーを再割り当てしない
147:nobodyさん
09/03/12 19:44:54
>>146
ありがとうございました
148:nobodyさん
09/03/12 21:50:39 Y3aY0Tvp
PHP+MYSQLで、MySQL寄りの質問になると思うんですが、
MySQLのスレッドがなかったので…。
スレ違いなら申し訳ないです。
[testテーブル]
no(オートインクリメント)
name
1・フォームからnameデータを受け取り、testテーブルにINSERTで入力。
2・その後すぐに、1の入力で作成されたレコードのnoを引き出す。
これを行うのに最適な方法はなんでしょう?
nameはキーではなく重複する可能性があるのでnameでのselectは不可です。
とりあえず2で
select * from test order by no desc limit 0,1
で取り出す方法を考えたんですが、
その場合1と2の間に一貫性?を持たせなければなりません。
この一貫性を保持させる方法がMySQLにあるのかPHPにあるのか・・・。
もしこの方法が最適なら一貫性を持たせる方法
(できれば例のコード)を教えてください。
また他に最適な方法があるならぜひお願いします。
149:nobodyさん
09/03/12 21:53:28
>>148
説明
int mysql_insert_id ([ resource $link_identifier ] )
直近の INSERT クエリにより AUTO_INCREMENT カラム用に生成された ID を取得します。
150:nobodyさん
09/03/12 22:12:31 w9p/Xb/s
classの継承についてちょとよく分からないので質問です。
class Main{
function dbList(){
// MySQLから特定のテーブルリスト一覧を取得する
}
}
class Sub extends Main{
function output(){
$list = $this->dbList(); // Mainからテーブルリストを取得
}
function output2(){
$list = $this->dbList();
}
}
こういうclassがあったとして、Sub内のoutput()を実行すると
MainのdbList()を実行することになりますよね?
そしてoutput2でdbList()を使いたい場合、再度実行する事になりますよね?
そうではなくて、Mainで設定した内容を使い回しするような事って出来ないのでしょうか?
151:nobodyさん
09/03/12 22:29:49
>150
function dbList(){
if(false === isset($this->dbList){
$this->dbList = mysql_fetch_なんとか();
}
return $this->dbList;
}
遅延初期化とか呼ばれるテクニックで、割と定石。
使いすぎるとカオスになるので、どの値をどのクラス/インスタンスで保持するかは慎重に検討したほうがいい。
152:nobodyさん
09/03/12 23:11:07 Y3aY0Tvp
>>149
まずint mysql_insert_id ([ resource $link_identifier ] )
について調べてみます。
助言本当にありがとうございます。
153:nobodyさん
09/03/12 23:53:49 ZuCT+g0F
file.txtにcsvで以下のように記録しました
これからファイルからデータベースにデータを移し替えたいと思ってます
id,name,age
1,木村,10
2,佐藤,20
3,木下,30
4,山田,40
5,坂本,50
mysqlを使用した場合でダイレクトにid2の佐藤さんのデータのみを取得するにはどうしたらよろしいでしょうか?
ファイルですとforeachでまわしてexplodeで区切る感じで、データを全部読み込んで処理させてるのですが
データベース使ってもデータは全部読み込んでまわして取得するのでしょうか?
154:nobodyさん
09/03/12 23:59:52 qegdPp88
タブ区切りのbbs.cfgからexplodeで設定値を取り出す
このとき、配列の要素が100個ぐらいだとして、
こういう場合はいちいち使うものに変数名をつけるか、
それとも配列の[数字]でつかうのか、
どっちが一般的なんでしょ?
こういう場合に限らず、一般的に他の言語とかでも
たくさんの値を使う場合はどういう管理をしてるんでしょう??
155:nobodyさん
09/03/13 00:15:24
>>153
データーベースの場合は、
WHERE id=2
とかって指定すれば、id=2のデーターだけ
読み込める。
156:nobodyさん
09/03/13 00:27:47
>154
個数はあんま関係ないな。
論理的に「同じようなものが100個」ならば、100要素の配列を使う、というだけ。
例えば>153のデータが100行ならば、人間が100人なわけで、100要素の配列に格納するのは理にかなっているわけだ。
だが、列が3列だからといって、各行を3要素の配列で表現したりはしない。idと年齢は別の概念だからな。
たとえスリーサイズとか干支とか住所とかで各行の要素が何十とあったとしても、数字添字の配列にはしない。
$person[0] = array( 'id' => 1, 'name => '木村', 'age' => 10);
$person[1] = array( 'id' => 2, 'name => '佐藤', 'age' => 20);
みたいな連想配列に格納する。もしくはクラスを使う。
1行ずつ処理する場合も
list($id, $name, $age) = explode(',', $line);
みたいにやった方が、コードが読みやすいはず。
157:nobodyさん
09/03/13 00:43:01
>>154 >>156
俺は100も200もあって意味とか型とかが同一のデータなら(試験の点数など)、
いちいち列名なんてつけずに数字で扱うけどな。まあどっちもでいいんじゃね
158:nobodyさん
09/03/13 11:07:13 eI4NlDZU
classの中で変数を宣言するときvarにしようと思ったのですが
どこかのサイトで、php5はvarは使うな的なことを書いてありました
そのサイトどこか忘れてしまったのですが、varの他に何を使うのが適当なのでしょうか
159:nobodyさん
09/03/13 11:28:27
>>158
URLリンク(www.php.net)
> 注意: キーワード var で変数を宣言する PHP 4 の方法は、
> 互換性を保つために今でもサポートされています (これは public と同じ扱いになります)。
> PHP 5.1.3 より前では、 これを使用すると E_STRICT 警告が発生します。
160:nobodyさん
09/03/13 13:37:40
PHPである程度の量の文(300KBぐらい)を処理するために
ヒアードキュメントを使っています。
フォームで処理すればコピペの時のスクロールが省けると思いフォームの
POST経由で変数を処理しましたが100KBぐらいしか処理できません。
これはフォームの入力制限等があるからでしょうか?
161:nobodyさん
09/03/13 14:01:14
>>160
そんなことはないと思うぞ。ブログとか文章が長くて容量がでかいだろ。
おそらく、設計にミスがあるんじゃないか?
162:nobodyさん
09/03/13 14:14:40
>>153
DBの場合、主にSQL文を使う。その場合なら
SELECT id,name,age FROM テーブル名 WHERE id = 2;
こんな感じのSQLをデータベースに投げることによって、idが2のやつのデータを返してくる。
ファイルよりも細かい検索ができるからいろいろやってみると面白いよ。
詳しくはMySQLのオンラインマニュアルとかSQLの入門サイトを参照のこと。
163:nobodyさん
09/03/13 14:17:06
>>153
URLリンク(ufcpp.net)
164:nobodyさん
09/03/13 15:02:30 6EGCx2Tu
PHPで痴漢、いやっ置換する関数などはありますか?
165:nobodyさん
09/03/13 15:04:59
str_replace
preg_replace
166:nobodyさん
09/03/13 15:05:04 OOgBCn1Z
Cache_Liteを使って、
一つのフォルダに50万以上のページのキャッシュを保存してます。
今後も+1万/日のペースで増加します。
やはり、キャッシュを保存するフォルダは適度に分散した方がいいのでしょうか?
動作が遅くなる可能性はありますか。
167:nobodyさん
09/03/13 15:19:24 DZKgFtDb
classの中でevalを使う方法を教えていただけませんか
使えなかったらすみません
class hoge{
var $hoge = eval("a");
}
このようなエラーが返ってきます。Parse error: syntax error, unexpected T_EVAL
168:nobodyさん
09/03/13 15:32:23
eval(笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑
169:nobodyさん
09/03/13 15:42:15
class hoge{
var $a;
function hoge(){
$this->a = eval...
}
}
こうしてみたら?
eval使ったことないけど。
170:nobodyさん
09/03/13 16:00:26 XJCetXbH
自動で、毎日ある時間になったら、スクリプトを実行させたいのですが、
ループ文で四六時中、time()関数を実行して、設定した時間になったら、ループを抜け出しスクリプトを実行する、
というやり方はありですか?
171:nobodyさん
09/03/13 16:06:22
>>170
おぉ、その手があったか。是非、max_execution_timeの限界ってどのくらいか試してくれ。
でもそのスクリプト、ずーっと実行し続けられる保証がないよね?
そしたらそれを定期的に監視するするスクリプトもそれで動かせばいいね。うんうん。
172:nobodyさん
09/03/13 16:07:30
現実的には cron だな。
173:nobodyさん
09/03/13 16:13:19 DZKgFtDb
>>169
なるほど!
思いつきませんでした。ありがとうございます
>>170
ものすごく負荷がかかると思います。
レンタルサーバーなら、コンパネからcron使えないですかね
174:nobodyさん
09/03/13 16:19:46
>>170
クライアントPCつけっぱなしか。電気代もったいないな
175:170
09/03/13 16:21:18 XJCetXbH
レスありがとうございます。
まったくの入門者でwinで自鯖をやる予定です。
max_execution_timeというので、負荷がわかるわけですね、勉強になりました。
まだ、試してないんですが、cronだと細かい設定が出来ないですよね?
176:nobodyさん
09/03/13 16:37:25
>>174
ignore_user_abortがある
>>175
工夫すれば負荷なんてそんなにかかんないよ。
1クライアント分消費するだけ。
max_execution_timeを無限設定して
ignore_user_abortで起動して、forループにSleepを巨大な秒数でセットしてやれば。
あとは、プロセスを一つに絞るのに、どっかにPIDファイル作るとか
177:質問させて下さい
09/03/13 21:45:58 75Yme90V
php5.25です。
phpで下記を書いてます。
<?php
$mainrss = array (
'URLリンク(www.123.net) ○○',
'URLリンク(456.net) ○○'
);
?>
URLは取得できるようになるんですが、URLの後ろに短い紹介文を書きたいのですが、
カンマじゃなくて何を使ってあげるといいのでしょうか?
○○に短い紹介文を記入したいです
アドバイスをお願いします。
178:nobodyさん
09/03/13 21:48:38
意味が分からんけど=>でキーにでもすれば?
179:質問させて下さい
09/03/13 21:50:51 75Yme90V
>>178
レスありがとうございます。
下記のような感じで記入できたと思うんですが、思い出せなくて。
'URLリンク(www.123.net)','あいうえお',
180:nobodyさん
09/03/13 21:56:15
.
181:質問させて下さい
09/03/13 22:06:25 75Yme90V
>>180
レス有り難うございます!
それでも無理でした
'URLリンク(www.123.net) '123',
でもだめでした。
難しいですね。
182:nobodyさん
09/03/13 22:09:21
カンマじゃなくてドットだって
183:質問させて下さい
09/03/13 22:15:49 75Yme90V
それでもだめでした。
レスを有り難うございます。
本を買ってきて勉強したいと思います。
184:nobodyさん
09/03/13 22:25:13
いや、つか何をしたかったの?
185:nobodyさん
09/03/13 23:25:30
>175
Unix/Linuxならcronだが、同じ事はWindowsではタスクスケジューラで実現する。
(Windows上で動くcronも存在するが)
無限ループを回すよりはこちらのほうがスマート。
「cronだと細かい設定が出来ない」の意味が良く分からんな。
1分以下の精度で実行タイミングを指定したい(12時30分15秒じゃないとダメなんだ!とか)とか言う意味ならcronの仕様上無理だが。
曜日指定とか時刻指定とかなら余裕で可能。cron覚えるのがダルいならスクリプト側で制御してもいいしな。
任意のスクリプトを動作させられるのだから、そのPC上で可能な事はなんだって出来る。
186:nobodyさん
09/03/13 23:57:37
>>176
>max_execution_timeを無限設定して
笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑
笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑
笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑
笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑
笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑
笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑笑
187:nobodyさん
09/03/14 00:00:05
>>177
$ary = array(
array("url"=>"127.0.0.1","shoukai"=>"しょうかい1"),
array("url"=>"URLリンク(yahoo.co.jp)","shoukai"=>"しょうかい2"),
array("url"=>"URLリンク(2ch.net)","shoukai"=>"しょうかい3")
);
188:170
09/03/14 01:07:17 u9lyCe1c
170です。レスくれた方ありがとうございます。
いまいちよくわからないので、もう少し勉強してからもう一度質問させて頂きます。
189:質問させて下さい
09/03/14 07:04:33 hOLVrRGN
>>187
わああああああ!
レスありがとうございました。
このようにやりたかったです。
無事に出来ました!本当にありがとうございます。
phpの本は買って勉強をしておきます。
190:nobodyさん
09/03/14 07:21:36
>>189
>>178
勉強する前に人の話を聞け
191:nobodyさん
09/03/14 11:14:07
>>187に超図解シリーズで本を出してもらうしかないな
って、超図解の出版元って倒産してるのかよ!w
192:nobodyさん
09/03/14 11:44:37 sxFlkHR4
phpって一つの.phpに何行くらい書いても大丈夫なんでしょう
5000行くらいなら平気ですかね?もちろん文字数や処理にもよると思うのですが、
(適度に改行したとして)大体何行くらいに納めるみたいなのがあればよろしくおねがいします
193:nobodyさん
09/03/14 11:51:38
特にないよ
194:nobodyさん
09/03/14 13:20:33
>192
俺の場合、1ファイル1クラスは死守。
1クラス500行上限が目安で、1メソッドは基本的にスクロールせずに全部見える分量に収める。
1ファイルが大きくなると、当然その分パフォーマンスに影響するし、保守もしづらい。
195:nobodyさん
09/03/14 13:25:01
同サイズだったらファイル数が多い方がパフォーマンス悪くなるわ
196:nobodyさん
09/03/14 13:43:06
>>195
クラスローダーを書いて、頻繁に使うクラスはパッキングしてキャッシュすればOK
197:194
09/03/14 13:56:17
>195
毎回毎回すべての処理を呼び出すならその通り。
だが、呼び出しの9割は参照系へのアクセスで、そのうち8割はトップページだ。
つうか、パフォーマンスなんぞどうでもいいんだけどな。管理しづらい、読みづらいというのが最大の問題点。
198:nobodyさん
09/03/14 14:35:42
自分で書いたくせに何言ってんだお前www
199:質問させて下さい
09/03/14 19:52:27 hOLVrRGN
2度目の質問失礼します。
file_getについてアドバイスをお願いします。
下記にするとエラーが出ます。
<?php
echo mb_convert_encoding(file_get_contents("111.php"), "shift-jis", "auto");
?>
エラー内容
Warning: mb_convert_encoding() [function.mb-convert-encoding]:
Unable to detect character encoding in 111.php on line 59
下記にするとエラーは出ません。
<?php
echo mb_convert_encoding(file_get_contents("111.php"), "shift-jis", "shift-jis");
?>
"shift-jis", "shift-jis"と2重にしたんですが、おかしな書き方になるのでしょうか?
別の書き方がありましたら教えて下さい。
200:nobodyさん
09/03/14 20:02:04
>>199
>>190に関しては?
201:nobodyさん
09/03/14 20:37:03 qjtwBjoL
キーと値の組み合わせとしてではなく、
array('a','b','c')
のように値の羅列の形式で代入された配列の正式名称って何ですか?
202:nobodyさん
09/03/14 20:44:32
>>201
そのまんま配列
キーと組み合わせたのは連想配列
203:nobodyさん
09/03/14 20:48:34
>>199
file_get_contentsに設定するパラメータは以下だけです
filename
flags flags
context
offset
maxlen
よって君は何か勘違いをしている
マニュアルをよく読みましょう
204:nobodyさん
09/03/14 21:06:31
君が勘違いしている
205:nobodyさん
09/03/14 21:10:32
>199
111.phpのエンコードが事前に分かっているなら後者の書き方のほうが望ましい。
前者だと、間違ったエンコード判定がされた場合文字化けの原因になるしな。
Shift_JISからShift_JISに変換しているわけで、ヘンっちゃあヘン、というか無駄だな。
状況によっては100%無意味というわけでもないが…
echo file_get_contents("111.php");
とほぼ同じ意味だ、というのは理解してるのかな。
206:nobodyさん
09/03/14 21:36:24
$hoge = "hoge";
var_dump($hoge);
echo "<br>";
function hogehoge(){
$hogehoge = "hogehoge";
echo $hogehoge;
}
var_dump(hogehoge());
echo "<br>";
function hogehogehoge(){
return "hogehogehoge";
}
var_dump(hogehogehoge());
の結果が、上から順に
string(4) "hoge"
hogehogeNULL
string(12) "hogehogehoge"
このNULLってどうしてでてくるんですか?><
207:nobodyさん
09/03/14 21:41:55
値戻してないからだろ
208:nobodyさん
09/03/14 21:44:54
>206
$a = hogehoge();
$b = hogehogehoge();
として、$aと$bの中身をvar_dumpで見てみろ。
209:nobodyさん
09/03/14 22:01:33 fYsVSce/
>>207
hogehoge()の中にreturnをいれて、
function hogehoge(){
$hogehoge = "hogehoge";
echo $hogehoge;
return "ho";
}
にしたらNULLなくなりました><
ありがとうございました
>>208
こうでしょうか><
$a = hogehoge();
$b = hogehogehoge();
var_dump($a);
echo "<br>";
var_dump($b);
結果、
hogehogeNULL
string(12) "hogehogehoge"
になりました><
210:nobodyさん
09/03/14 22:20:14 S24jNTMx
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form method="post" action="<?php $_SERVER["PHP_SELF"]; ?>">
<input type="checkbox" name="bbb[]" value="かきくけこ">
あいうえお<br>
<input type="submit" value="選択">
</form>
<?PHP
if(isset($_POST['bbb'])){
foreach ($_POST['bbb'] as $a){
print ($a);
print "<br>";
}
}
?>
</body>
</html>
これで、ローカルで試すと問題なく動くのですが、
レンタルサーバーにアップロードして試すと
文字化けになります。なんででしょうか?
211:nobodyさん
09/03/14 22:33:52
>>210
自己レス
サーバーのphp.ini の
mbstring.internal_encoding = UTF-8を設定して
上書きしてファイルを再読み込みしてリトライしたらできた。
サーバーのデフォルトではEUCになってた。氏ね。
212:質問させて下さい
09/03/14 22:37:16 hOLVrRGN
>>203
そういうことについては全然勉強足りていないので頑張って覚えてみます。
アドバイス有り難うございます。
>>205
詳しい解説有り難うございます。
おかげでよく理解出来ました!
感謝しております。
>>200
意味がわかりませんでした。
失礼致しました。
213:nobodyさん
09/03/14 23:02:29
>>210
php_selfは推奨されてないのに使うバカ発見
214:nobodyさん
09/03/14 23:43:47
>>210
マルチ乙
215:nobodyさん
09/03/14 23:52:54 da46lvzd
トラックバックの送受信の処理を書こうと思うのですが
もし既存のライブラリがございましたら教えてください
216:nobodyさん
09/03/14 23:54:59
>>215
217:nobodyさん
09/03/14 23:56:50
>>216
きも
218:nobodyさん
09/03/15 00:05:25 yySd7NKe
cliでpg_connectを実行したらSegmentation faultが出るんだけど。
PHP 5.2.6-2ubuntu4.1 with Suhosin-Patch 0.9.6.2 (cli)
<?php
$DB = pg_connect("host=$DbIp dbname=$DbName user=$DbUser password=$DbPass");
?>
これはうちの環境の問題なのか、誰か教えて欲しい。
219:nobodyさん
09/03/15 00:27:37
>>218
そりゃ変数に何も格納されてないなら無理だろ
220:nobodyさん
09/03/15 06:06:20
PHP5.3使ってるんですが、メモリ不足を例外処理みたく捕まえることってできますか?
方法をご存じの方がいらっしゃいましたら教えてください。
221:nobodyさん
09/03/15 06:06:51 +CIxhGml
>>220 sageちゃいました。すいません。
222:nobodyさん
09/03/15 06:23:33
残念ながらそういうのは無い
223:220
09/03/15 06:27:45
>>222
やっぱそうですか。
踏ん切りがつきました。ありがとう。
224:nobodyさん
09/03/15 08:14:23 yySd7NKe
>>219
書き方が悪かった。
実際の変数部分には正しい値が入る。
ちなみに接続も成功するしSQLの結果もかえってくる。
apacheで実行した時は何も問題ない。
でもcliの時だけfaultが最後に出るから悩んでる。
225:nobodyさん
09/03/15 08:41:14
>>224
使ってるphp.iniが違うとかはないの?
それで落ちるかといえば疑問だけど。
とりあえずphpinfo() で使ってるphp.ini確認してみたら。
あとバージョンが違うライブラリにパスが通ってるとか。
226:nobodyさん
09/03/15 08:44:40
実行ユーザーが違うので
・ログに書けないよエラー
・そのエラーログを書こうとしてエラー
・そのエラーログのエラーログを書こうとしてエラー
・その・・・・
とか。
227:nobodyさん
09/03/15 09:24:05
スレリンク(tech板:350-番)
前の子が来てる
228:nobodyさん
09/03/15 09:58:53 qN1+xeFs
foreachの中から、そのループが1回目か/最後か等を調べるいい方法を
教えてください
229:nobodyさん
09/03/15 10:10:56
>>228
いい方法かはわからないけど、
$i = 0;
foreach(){
$i++;
}
みたいなやり方はだめなのかな
count()を使えば配列の要素の数も得られるから、それで最後かどうかもわかるのでは
230:nobodyさん
09/03/15 10:44:14
>>225
ubuntuなんで、php.iniは別なんだけど設定は同じ。
ライブラリ系もまったく同じ。
今思ったけど、linux板で聞いたほうがいいのかも。
ちょっと移動してきます。
ありがとう。
231:nobodyさん
09/03/15 11:14:01
>228
無い。
ループの何巡目かが処理に影響するような場合はforを使え。
232:nobodyさん
09/03/15 11:18:55 Ok7zsTbr
セッションIDって基本的にはクッキーに保存されるじゃん
じゃあ、クッキーが無い時代はどうやってたの?
233:nobodyさん
09/03/15 11:23:01
>>231
プログラミングに「ない」を考えるあなたの考えにナイワ
234:nobodyさん
09/03/15 11:35:16
>>232
パン。
235:nobodyさん
09/03/15 11:38:48
>>232
原初、最初にクッキーだけがあった
したがってクッキーのない時代などない
236:nobodyさん
09/03/15 11:47:29
クッキー使えなくても埋め込みがある
どっちも平文で送信されるから似たようなもんだ
237:nobodyさん
09/03/15 12:18:21
>>232
飛脚→伝書鳩→クッキー
238:nobodyさん
09/03/15 14:33:41
本来、1つのクラスは、1つのファイルに分けるべきみたいなのを
よくみるんだけど、数行程度でも?
239:238
09/03/15 14:40:11
あ、そうか
エラー見つけやすいから分けるのか
とりあえず小分けにしておくわ
240:nobodyさん
09/03/15 14:45:54 L+gdJUIE
>>238
数行程度のクラスがわんさかあってもウザイと思うが
241:nobodyさん
09/03/15 14:46:54 L+gdJUIE
>>235
クッキーの無い時代もあったんじゃね?
それよか、フォームすらなかった時代もあったんじゃね?
ネットスケープ社が頑張って実装したんじゃね?
242:nobodyさん
09/03/15 16:01:31
>>241
おまえ大丈夫?
243:nobodyさん
09/03/15 16:35:04 L+gdJUIE
>>242
お前の方が大丈夫か?最初のHTMLは画像すら使えなかったって知ってるか?
244:nobodyさん
09/03/15 18:44:14
これ以上ない「ゆとり」と発言したくなるシチュ
245:nobodyさん
09/03/15 18:46:33 tXlRktlT
複数行入力できるtextareaを使って入力してもらい
それをmysqlのtext型としてinsertしました
それをselectクエリで取り出して表示してみた所、改行されずに
表示されてしまうんですが、入力の時と同じように表示させる
ためにはどうすればいいんですか?
246:nobodyさん
09/03/15 19:00:19
>>245
改行するには何がいるか?
247:nobodyさん
09/03/15 19:05:30
昔はクックーもフォームも使えなかったことを知らないとは
248:nobodyさん
09/03/15 19:08:08
>>245
nl2br
249:nobodyさん
09/03/15 19:25:38 tXlRktlT
>>246
>>248
できました! こんな便利なものがあるなんて知らなかったです
まだまだ勉強不足ですね がんばります
ありがとうございました!
250:nobodyさん
09/03/15 19:29:36
PHPを使うにはサーバをレンタルすると思いますが、
無料のジオシティーズでもPHPが使えるみたいです。
金を払ってサーバをレンタルするとどういういいことがあるのですか?
URLリンク(help.yahoo.co.jp)
251:nobodyさん
09/03/15 19:32:02
>>249
独習PHPに載ってるよ
252:nobodyさん
09/03/15 19:33:13
>>250
(1)
MySQLでPDOが使える(無料のところはPDO使えないことが多い)
(2)
強制挿入される広告が消える
(3)
場合によっては有料のところでは独自ドメインが使えるかも
(無料でも一部使えるところはある)
253:nobodyさん
09/03/15 19:34:26
(4)
sendomailが使える
(無料のところではsendmailは無効化されていることがおおい)
sendmailが使えないとメールが送れない。
PHPのmail関数は、サーバーのsendmailに仕事を
丸投げしているだけなので、sendmailが動いていないと
何も起きない
254:nobodyさん
09/03/15 19:36:53
>>250
使うってどういう状況で?
255:nobodyさん
09/03/15 19:40:38
DBやメールなんかでいろいろ制限があるんですね。
ありがとうございました。
256:nobodyさん
09/03/15 19:44:18
よく見たら、CGIを利用するには有料じゃないとダメですね。
257:nobodyさん
09/03/15 19:50:20
無料/安価なサーバーはだいたい重い。
少数のサーバーに人を大量に詰め込むからな。
(そうしないと初期投資を回収できないので仕方ないが)
258:nobodyさん
09/03/15 19:50:22
ifの代わりにswitchを使ってやろうとしたのですが、
<?php
$i = 3;
switch($i){
case 0:
case 1:
case 2:
case 3:
case 4:
echo "iは0~4";
break;
default:
echo "iは不明";
break;
}
?>
これがもし、case 0:~case 4:の部分で、
case 0:~case 100:までを判断したいとき
どういう風に記述すればいいのでしょうか。
259:nobodyさん
09/03/15 19:53:05
100行書くしかないのでは?
260:nobodyさん
09/03/15 19:53:58
横に繋げれば1行で済むのでは?
261:nobodyさん
09/03/15 20:19:50
なんでifにしないのか理解に苦しむ。
262:nobodyさん
09/03/15 20:25:12
iが0~100までかを調べたいなら
if ($i >= 0 && $i <= 100) {
echo "iは0~100";
} else {
echo "iは不明";
}
でいいのでは?
263:nobodyさん
09/03/15 20:30:46
>>251
宣伝乙
264:nobodyさん
09/03/15 20:33:50
>>258
switchでcaseが大量になる場合は配列をうまく利用することをおすすめする
function func1() {
}
・
・
・
$case = array(func1(),func2(),func3(),・・・・・func999),
$case[0];
265:nobodyさん
09/03/15 21:34:38
>>264
www
266:nobodyさん
09/03/15 22:37:58
>>265
shosinsha otu
267:261
09/03/15 22:54:26
>264
せめて
$case = array('func1', 'func2', 'func3');
call_user_func($case[0]); // $case[0]();でも多分動く
にしとけ。
とりあえずそのコードは実行効率、可読性、保守性などあらゆる観点で最低だ。
後者2つについてはこのコードも大差ないが。
268:nobodyさん
09/03/16 01:35:07
ふと思ったんだけど、例えば見栄え良く
改行いっぱい使って、
$hoge = "hoge1"
. "hoge2"
. "hoge3"
;
こうしたのと、単に
$hoge="hoge1hoge2hoge3";
ってしたのとでは、
上のような改行いっぱい使った場合のが
積み重なってくると、改行使ってないものよりも
読み込みが遅くなる?
改行やスペースは無視になるとはきくけどなんか不安なのです。
269:nobodyさん
09/03/16 02:37:08
>268
文字列の結合の分遅くなるな、理論上は。
改行も、確かに理屈の上では遅くなる。人間に知覚できる差じゃないけどな。
仮に10000行空行があったとしても、目に見える応答速度差は出ない。
1MB分改行があっても気づかないと思う。
つうか、お前は、ペーパー代を惜しんでウンコした後ケツを拭かなかったりするのか?
ゴミみたいな高速化と可読性を天秤にかけるなら、どう考えても可読性を優先すべきだ。
270:nobodyさん
09/03/16 06:04:33
javaだと文字列リテラル同士の結合はコンパイル時にオプティマイズされて
結合された文字列になるんだっけか。
スクリプト言語で拘ってもしょうがないとは思うが、気分的にはやってほしいところではあるな。
APCとかのキャッシュ環境なら差がでるかも知れんし。
271:nobodyさん
09/03/16 11:58:48
「PHPでOOPで書く場合の、helloが出てくるまでの長い一日」
(1)さーって、、、まんず、helloって出すわけだから、
print "hello";
だろ、、、これはまず100%確実、、、
(2)そんで、クラスの宣言せんといかんな、、、
class {
}
、、、っと、、、
あ、、、クラス名、考えないといかんな、、、
はじめてのだから、firstでいいか?
class first {
}
272:nobodyさん
09/03/16 12:00:24
(3)
そんで、さっきの
print "hello";
を、メソッドの中に入れないといかんのだよな、、、
あ!メソッド名も考えないといかんのだよな、、、
helloを出すメソッドだから、helloでいいか?
function hello(){
print "hello";
}
273:nobodyさん
09/03/16 12:01:11
(4)
よしよし、、、作業は順調だな、、、
これで、このメソッドを、さっき作った
クラスの中に、放り込めばいいのだよな、、、
class first{
function hello(){
print "hello";
}
}
274:nobodyさん
09/03/16 12:02:05
(5)
これでクラスは完成、、っと、、、
次は、このクラスをnewして、
オブジェクトに代入せなあかんのだよな、、、
$obj=new first();
275:nobodyさん
09/03/16 12:03:00
(6)
よしよし、、、
これでインスタンスができたから、
このインスタンスから、->で、クラス内の
メソッドにアクセスすればええんだよな、、、
print $obj->hello();
276:nobodyさん
09/03/16 12:03:51
>>274
括弧ついてるよ初心者クン
277:nobodyさん
09/03/16 12:05:51
(7)
<?php
class first{
function hello(){
print "hello";
}
}
$obj=new first();
print $obj->hello();
?>
完成、、、と、、、。
カンタンに説明すると、
firstというクラスを定義しhello()というメソッドを定義し
そのメソッドの中でhelloを出力する命令を書きnewでfirstクラスの
インスタンスを作成しオブジェクト変数に代入しそのできてきた
インスタンスからhello()メソッドにアクセスして最終的にhelloを
画面に出すことに成功しました。
278:nobodyさん
09/03/16 12:06:40
>>276
どちらでも実行できるんだけど、なんか問題あるなら
それを解説したページをプリーズ
279:nobodyさん
09/03/16 12:08:53
ちなみに手続型でhelloを出すソースは以下の通り
<?php
print "hello";
?>
280:nobodyさん
09/03/16 12:10:12
>>276
お前が初心者なのは分かった
281:nobodyさん
09/03/16 12:19:32
>>276
普通はつけます
282:nobodyさん
09/03/16 12:21:35
クラス使えばOOPってわけじゃないべ。
283:nobodyさん
09/03/16 12:25:30
つか全然OOPじゃないわな
284:nobodyさん
09/03/16 12:29:26
>>282
ものの考え方・概念のことだから本質的にはそうだね
ただOOPの核となる継承やらカプセル化をする為にはクラスを使わないといけない
helloを出力するだけにわざわざクラス使うのはPHPではただの冗長
285:nobodyさん
09/03/16 13:00:26
hello出力するだけのただの形ではあるから参考にならないなあ
OOP勉強してる人いないの?
286:nobodyさん
09/03/16 13:10:52
>>285
一応、スレはある。
が、もう死にかけの体。
PHPでOOP
スレリンク(php板)l50
287:nobodyさん
09/03/16 13:11:01
>>279
おお、さすが最強PHPw。
ハーディ・ラマヌジャン数を出力するプログラムは、
Cで書いても、実行に数十秒かかる。
perlやpythonに至っては数分以上かかる。
だが、PHPなら、一瞬。むしろ、計算する必要すらない。
<?php
echo "1729";
?>
もちろん、パクリネタだ。
288:nobodyさん
09/03/16 13:25:45
>>285
本気で勉強したいならJavaでやったほうがいいって散々言われてるだろ
オブジェクト指向という考え方を理解するためだけなら
わざわざPHPでやる必要はない
OOPに関するドキュメントの多いJavaでやったほうがいい
PHPでOOPなんてJavaやC#なんかをやってるやつの為にあると思っていい
289:nobodyさん
09/03/16 15:26:16 zNDXWAna
くだらない質問ですがお願いします。
($a < $b) ? $key = $a : $key = $b;
これの意味がちょっとわからないのですがif文で表すことってできますか?
290:nobodyさん
09/03/16 15:33:02
if ($a < $b) {
$key = $a;
} else {
$key = $b;
}
291:nobodyさん
09/03/16 15:33:12
$key= ($a < $b) ? $a : $b;
普通はこう書く
if ($a < $b) $key= $a;
else $key= $b;
292:nobodyさん
09/03/16 15:52:09 zNDXWAna
>>290>>291
なるほど!ありがとうございます。
ちなみに>>289の書き方とif使った書き方、どっちがいいとかあるのですか?
293:nobodyさん
09/03/16 15:59:13
>>292
上記のような簡単なif文なら三項演算子でもいいと思うけど、複雑なものになると
可読性が落ちるので、その場合は素直にif文で済ませた方がよい
294:nobodyさん
09/03/16 16:01:19
>>292
三項演算子は変数に入れることができる
なので結果を変数に入れたいときとかは便利だが
条件文をかくためだけに使うなら可読性を重視して
普通のif-else文を使ったほうがいい
三項演算子なんてなくてもコーディングできるので
他の人と共同開発なんかの場合は使わないほうがいい
295:nobodyさん
09/03/16 16:34:41 zNDXWAna
>>293>>294
ありがとうとざいました。
使わないほうがよさそうですね。
296:nobodyさん
09/03/16 16:46:33 TMtB/4sw
オープンな掲示板へのスパム投稿をブロックするにはどうしたらいいでしょうか?
メジャーな方法だとcaptchaを入れるんでしょうが、他に方法あったら教えてください。
たとえば、スパム業者(国内・国外問わず)のIPリストなんかはないんでしょうか?
よろしくお願いします
297:nobodyさん
09/03/16 16:49:43
>>296
そのリストがあったら既に大手ブログサービス業者は導入して平和になってるはずだよな
298:nobodyさん
09/03/16 17:14:59
>>296
基本的な対策として
本文中のhttp://文字列を禁止する
もしくは出てくる回数を制限する
(最近はhttp://からはじめたりドメインからはじめたりするスパムもある)
文字がどういうもので構成されてるかを見る
日本語[あ-ん]が必ず入っていないと駄目とか
[\x00-\x7f]のみの文字列だったら駄目とか
(最近は文章の最後のほうに日本語を適当に入れてくるスパムもある)
スパムをあえて投稿させてパターンを分析し
自分でリストを作成する(IPなり禁止文字列なり)
(IPはできればサーバ側ではじく)
このほかによく見る方法としては
ひらがなに対応するカタカナを入力してもらうとか
(captchaはすでに効果がないので代替手段を)
他の閲覧者にスパムかどうかを判定してもらってJavaScriptで非表示にする
(youtubeなんかで見るパターン)
とかかな
いずれも限界があるので閲覧者に被害が出ないようにだけ配慮すればいいんじゃない?
そういう観点では誤クリ防止にhttp://のオートリンクをしないとかが一番効果的
299:nobodyさん
09/03/16 17:19:04
どれもいまいちな方法だな
300:nobodyさん
09/03/16 17:21:48
>>299
いまいちでない方法をどうぞ
301:nobodyさん
09/03/16 17:28:15
あなたはスパム業者ですか?
はい いいえ
↑これを入力させればいい
302:nobodyさん
09/03/16 17:30:34
>>301
天才
303:nobodyさん
09/03/16 17:55:37
2chはどうやってんだろ?
304:nobodyさん
09/03/16 18:04:29 GOOX8xiJ
PHPで効率化を突き詰めていくと、
MVCを考えた、フレームワークのような形になるのですが、
やっぱり皆さんもそうですか?それとも最初からフレームワーク使いますか?
305:nobodyさん
09/03/16 18:06:47
>>298
日本語が入ってないとダメってのはもう古い
日本語スパムははじけないよ
306:nobodyさん
09/03/16 18:10:14
やっぱり、画像認証(ランダムの数字を入力するやつ)
しか対処できないんじゃないか?
ライブラリも多いし、作るのも難しくないだろ。
307:nobodyさん
09/03/16 18:21:17
>>303
2chは管理に協力してる人間がいっぱいいるから
手動でどうにかなるレベルなんだよ
308:nobodyさん
09/03/16 18:49:09
PHPの初心者用参考書をちょっと読んだだけの初心者です
register_globalsをonにするとセキュリティ上よくなく
また、PHP6からはonにすることができなくなると聞きました
そこで質問なのですが、ハイパーリンクにごとにページの内容を変えたり
処理の内容を変えたりしたい場合は他にどのような方法があるのでしょうか
質問とは関係ないのですがスパム対策で 1 + 2 = [ ] といのを見たことがありますね
(数値は画像でランダムでした
309:nobodyさん
09/03/16 19:11:39
>>308
基本的には POST あるいは GET メソッドでクエリを渡して、その値に応じて処理を分ける。
ハイパーリンクでなら GET 。
310:nobodyさん
09/03/16 19:21:10 TMtB/4sw
>>298
たくさんの意見ありがとうございます
カタカナをひらがなにっていうのはいいですね!
キャプチャの文字列をカタカナにするってのは無理なんでしょうか?
311:nobodyさん
09/03/16 19:25:46
スクリプトでは理解できない&日本人にしかわからないような
質問をランダムに生成できればいいんだが
質問と答えがあらかじめ決まってるようなものだとそのうち解析されるし
画像のひらがなをみてカタカナにしろぐらいだとCaptcha解析技術応用すれば
解析したひらがなに対応するカタカナに置き換えればできちゃうし
完全な対策なんてないからどこかで妥協するしかない
いろんなことやった上でなんとかして投稿してやろうなんて考える
海外のスパマーなんてそうはいないよ
仮にいろんな対策をした上で変なのが投稿されたらそれは日本人の愉快犯だ
というわけでそんな神経とがらせてスパマー対策しなくてもいいんじゃないだろうか
312:nobodyさん
09/03/16 19:32:15
>>310
できますよ
そういうライブラリは探せばあるんじゃないかな?
単に文字を画像に出力するだけなら簡単なんですけどね
画像をゆがめたりする処理が難しいんじゃないかな
313:nobodyさん
09/03/16 21:48:57
普通にCAPTYAいれとけば?
314:nobodyさん
09/03/16 21:50:47
ちなみに2ちゃんがやってるのは、、、
(1)書き込みをしようとしてきたら、クッキーを
受け入れてるかどうかを確認する。クッキーないやつは
書き込みできない
(2)書き込みしてきようとしたサーバーに簡易ポートスキャンをかけ、
オープンプロキシでないことを確認する。もしオープンプロキシだったら拒否
(3)
プロキシからの書き込みについては、手動で
リストを作成して、そのリストにIPが載っていたら、拒否。
こんな感じ。一部だけど。
315:nobodyさん
09/03/16 23:05:32 l8gT672P
セッションを使って、
ログインしないと見れないページを作ったんだが、
画像はどうやって守ればいいんだ?
316:nobodyさん
09/03/16 23:07:02
>296 >297
DNSBL(DNSブラックリスト)でぐぐれ
スパムちゃんぷるーが手軽
317:nobodyさん
09/03/16 23:21:56
>>315
そこでPHPですよ
318:nobodyさん
09/03/16 23:35:54 l8gT672P
>>317
PHPで画像を送出するってことかな?
ぐぐったけど具体的なコードがわからない
319:nobodyさん
09/03/16 23:51:20
2行でおk
ヘッダ送信
readfile()で出力
320:nobodyさん
09/03/16 23:53:20
セッションも処理しないとwwwwwwwwww
321:nobodyさん
09/03/17 00:28:16 PIugUbr/
$sql = "SELECT name FROM address";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
echo $row["name"];
こうしたらMySQLから1行取得出来ますが、もっと簡略化する方法は無いでしょうか?
特に、結果が1行・1フィールドだと分かっている場合、
mysql_fetch_arrayをして一旦配列に入れるのは不効率な気がしています。
322:nobodyさん
09/03/17 00:35:15
echo (mysql_fetch_array(mysql_query("SELECT name FROM address")))["name"];
323:nobodyさん
09/03/17 00:38:22
>321
SELECT name FROM address LIMIT 1
配列に代入云々は数マイクロ秒とかのゴミみたいな差しかつかない。
こいつは測定可能なレベルで実行性能に影響する。
324:321
09/03/17 01:11:49
>>323
>>321のようなテーブルにアクセスして、指定値を取得する関数を
作っているのですが、 321のソースでフィールド「name」が異なる場合、
echo $row["name2"];
というように名称を指定して出力しなければいけません。
まぁ、関数を
function dbSelect($fld_name){
echo $row[$fld_name];
}
とすれば良いだけの気がしますが、
何か良い関数があるのかと思い、質問しました。
325:nobodyさん
09/03/17 02:58:59
1からCMS作ろうと思います。
応援よろしくお願いします
326:nobodyさん
09/03/17 03:15:35
がんば~
327:nobodyさん
09/03/17 07:54:44
>>324
PDOが使用可能であれば…
URLリンク(jp.php.net)
328:nobodyさん
09/03/17 08:04:24
実はおれもCMS自作してるけど
ネックなのは一度もCMSを使ったことがないことだ・・
329:nobodyさん
09/03/17 09:18:29
CMSを使ったことがない人がCMS作っても劣化品にしかならない
330:nobodyさん
09/03/17 10:44:32 Ib1RB6YL
キーワード自動リンクの仕組みを作っています。
データベースなどに以下のようなデータがあるとします。
id,word
1,日本
2,日本海
3,日本海溝
4,太平洋
これらを辞書として、
・日本海溝は太平洋側にあります。
という文章に最長で一致するものからリンクを張っていくのですが、
<a href="word/3"><a href="word/2"><a href="word/1">日本</a>海</a>溝</a>は<a href="word/4">太平洋</a>側にあります。
のように、重複してリンクが張られてしまいます。
すでにリンクが張られている言葉の内側にはリンクを張らないようにしたいのですが、
どのような対処法が考えられますでしょうか?
PHPで処理する場合の対処法を教えてください。
331:nobodyさん
09/03/17 11:14:15
マッチさせてるコードは?
332:nobodyさん
09/03/17 11:32:03
$words = array(
array(
'id' => 1,
'term' => '日本'
)
);
辞書がこんなかんじの配列にあって、
foreach ($words as $word) {
str_replace($word['term'], '<a href="word/' . $word['id'] . '">' . $word['term'] . '</a>', $body);
}
辞書は単語の文字数の長い順にソートさせてあります。
実際のコードとは違うのでどこか変かもしれませんが、流れはこんな感じです。
単純に、辞書の配列をforeachさせて、
str_replaceでアンカータグをつけたものに置き換えているだけです。
なので、重複して置き換えられてしまうのは当然なのですが、
対処法が思い浮かばなくて;
よろしくお願いします。
333:nobodyさん
09/03/17 11:33:23
すみません、訂正です;
×
str_replace($word['term'], '<a href="word/' . $word['id'] . '">' . $word['term'] . '</a>', $body);
○
$body = str_replace($word['term'], '<a href="word/' . $word['id'] . '">' . $word['term'] . '</a>', $body);
334:330
09/03/17 11:34:31 Ib1RB6YL
>>332
>>333
ID出し忘れました・・・スレ汚してすみません;
335:nobodyさん
09/03/17 11:45:00 PBdJ+iXh
宜しくお願いします。
【OS名】Windows XP
【PHPのバージョン】php4.4.4
【質問内容】
『-』を含んだ文字列を preg_match で検索するとエラーが発生するのでキーワードを preg_quote で処理すると
『ホームページ』が『ホ―[ムペ―[ジ』となってしまいます。
お知恵を貸して下さい。お願いします。
336:nobodyさん
09/03/17 11:48:44 Vq5xUXrn
>>335
mb_internal_encoding('utf8');
mb_regex_encoding('utf8');
337:nobodyさん
09/03/17 11:49:06 qY/TJCjN
たまにGDでjpeg画像を処理した時にエラーが出て何も描かれてないjpeg画像がブラウザに出る時があるんだけど
そのエラーを表示しない方法はphp.iniで指定するってのは分かった。
これでエラーは出なくなったわけだが、画像はやっぱり出ない。
どうやらいつも同じファイルを処理した時にエラーになるので
画像ファイル側の問題だと思うけど
これをうまく処理する事はできるの?
そもそも何でこんなエラーがでるの?
知ってる人 教えてYO!
338:nobodyさん
09/03/17 11:53:27
その画像をうpれ
339:nobodyさん
09/03/17 12:02:31
>>335
はやく5に移行しろよ
340:nobodyさん
09/03/17 13:22:05 PBdJ+iXh
>>336さん。
有難う御座います。
mb_regex_encodingでUTF-8にしてもやはりホ―[ムペ―[ジとなってしまいます。
>>339さん。
まだ勉強中の為に5への以降は難しいです…
341:nobodyさん
09/03/17 13:33:39
まず検索する対象とキーワードの文字コードを把握できてないと解決できんぞ
342:nobodyさん
09/03/17 14:22:48
4で勉強してから5にうつるより、最初から5で勉強しちゃったほうがいいような気もするんだけど。
343:nobodyさん
09/03/17 14:23:55
4とか過去の汚物なんだから使う価値0
344:nobodyさん
09/03/17 15:16:01
移行ってほど変わらんだろ。さっさと5使え
345:nobodyさん
09/03/17 15:52:24 s4aiV5Ak
質問です。
このサイト(みんなのキャンパス:URLリンク(campus.nikki.ne.jp))
のように掲示板の情報を一部だけ閲覧することができ、
登録・ログイン後に情報をある程度投稿すると全ての情報が閲覧できるような
会員制サイトを作成したいと思っています。
WordPressやOpenPNEで色々試したのですがいまいちうまくいきません。
こういうものは、どうやったら実現できるのでしょうか?
よろしくお願いします。
346:nobodyさん
09/03/17 15:55:22
if (未ログイン) {
一部表示処理
} else {
全表示処理
}
347:nobodyさん
09/03/17 16:03:10
CMSで駄目なら何をやっても駄目な気がする
とりあえず Wordpress の方なら is_user_logged_in() でログインしてるかどうか調べられるよ
348:nobodyさん
09/03/17 16:22:38
>>345
フレームワークで作るという手もある。
349:nobodyさん
09/03/17 16:56:04
フレームワーク使っているかもしれないけど、
各プラグインは自作しなければいけないからな。
俺も自作システムを作る時にWordpressやらOpenPNEやらを見たけど、
やっぱり「目的の仕様に合った作り方」をしているので、
それらを改造してオリジナルのシステムを作るのは無理があるよ。
350:345
09/03/17 17:04:11 s4aiV5Ak
みなさんご回答有難うございます。
質問の仕方が悪くて申し訳ありません。
みんなのキャンパス:URLリンク(campus.nikki.ne.jp)
というサイトは登録後ログインしても、
大学の講義情報を3件書き込まないと全ての情報を見ることができません。
このように書き込まないと掲示板の他のページが見れない、といったように
するにはどういった処理が必要なのでしょうか?
よろしくお願いします。
351:335
09/03/17 17:08:29 PBdJ+iXh
>>341さんとレスを頂いた皆さん。
お陰で解決致しました。有難う御座います。
出来るだけ早く5に以降するよう努力致しますf^^;
有難う御座いました!
352:nobodyさん
09/03/17 17:13:30
>>350
そこがどんな風な実装をしてるかは知らないけど。
ユーザー情報に「書き込んだ回数」を記録する。
一緒に「全ての情報を見れる権限」もフラグとしてDBに記録しておいて、書き込み回数が3回を越えた時点で true にする。
で、ページを表示するときにその権限を持ってるか持ってないかを判断する。
353:nobodyさん
09/03/17 17:17:13
俺だったら「書き込んだ回数」か「全ての情報を見れる権限」のどちらかしか属性作らないな
354:nobodyさん
09/03/17 17:22:32
>>353
確かに書き込み回数だけでも十分だな、すまん。
355:330
09/03/17 17:37:21 Ib1RB6YL
>>330 の回答をどなたかお願いできませんでしょうか?
356:nobodyさん
09/03/17 17:44:56
>>355
自分がどうやってるか書いてないよな。推測すると、再帰でpreg_matchでもやってんのか?
まぁ、それはいいや。
単語リストをベースにトークナイザーにかけて処理するのがいいと思うよ。
357:345
09/03/17 18:00:29 s4aiV5Ak
>>352さん
>>353さん、回答下ったみなさん、有難うございました!
2ちゃんねるはじめてだったのですが回答いただけてうれしかったです。
なんとなく方向がわかったので色々やってみます。
358:330
09/03/17 18:07:06 Ib1RB6YL
>>356
すみません;
>>332 に書いたのですが、IDを出し忘れてしまって・・・
恥ずかしながら、トークナイザーというのをはじめて聞いたのですが、
どういったものなのでしょうか?
PHPには、その機能は備わっているのでしょうか?
359:nobodyさん
09/03/17 19:00:40
wikiのソース参考にしてみたら?
360:nobodyさん
09/03/17 19:31:59
>>330
アルゴリズムの問題だと思うけど、マッチングした文字列をいったん置き直して、展開しなすとかしたら?
日本海溝は太平洋側にあります。
<3>は太平洋側にあります。
<3>は<4>側にあります。
みたく文字列を順次置き直して、あとから <id>をリンクつきのHTMLで展開。
361:330
09/03/17 19:43:02 Ib1RB6YL
>>359
それだけの力があればそうしたいのですが・・・
基本的な考え方だけでもお願いしたいです。
>>360
おぉ!そういう方法がありましたね。
しかし、元の文章に<1>という文字列が含まれていた場合、面倒なことにならないでしょうか?
元の文章は、ユーザーが自由に投稿できる類のものなので・・・
<<<1>>>のように、括弧を増やしたり、!?!1!?!のように、複雑なものにすれば
出現する確立は減らすことができるのでしょうが、それでも0パーセントではないですし・・・
おっしゃるとおり、PHPに関する質問という範囲を超えているかもしれませんが、
どうかお付き合いお願いしたいです。
362:nobodyさん
09/03/17 19:51:31
キーワードをrsortして順にリンク外文字列に対して処理していけばいい
363:nobodyさん
09/03/17 19:51:53
ユーザの投稿に<1>があったら\<1\>とかにまず置き換えればいいじゃん
そんで>>360の処理のあとにもとにもどせばよい
364:nobodyさん
09/03/17 20:07:16
>>330
優先順位が悪い
1,日本海溝
2,日本海
3.日本
の順でループして探索して見つかったら置き換えてbreakして位置を記録
最後に置き換えた位置から同様にして探索
これをEOFに達するまで繰り返す
365:364
09/03/17 20:10:19
ごめんよくよく考えたら非効率だな
忘れてくれ
366:330
09/03/17 21:04:12 Ib1RB6YL
>>362
リンク外かどうかの判定の仕方がわからなくて・・・
>>360 さんに提示していただいたように、特殊な記法に置き換える方向で行こうかと思います。
>>363
そうでした!一度エスケープのような処理をすればよかったのですね!
・・・これでなんとか解決したように思ったのですが、今度は、辞書に<id>という単語が含まれていた場合に、
問題が発生しました。
たとえば、辞書にこんな感じの単語があると、
id,word
5,<3>
長いものから置き換えるので、
まず「日本海溝」が<3>に置き換えられ、
その後、「<3>」がふたたびマッチしてしまい、
<5>に置き換えられてしまいます。
最終的に出力されるのは
<a href="word/5"><3></a>
になってしまいます。
意外と難しいですね;
>>364
位置を記憶するというのはやってみたのですが、
文字数の長い順に出現するとは限らないのでだめでした・・・;
367:nobodyさん
09/03/17 21:13:49
>>366
そもそも最終的に生成するHTMLにタグじゃない < > を入れてどうする気だ。
テキストとキーワードにあらかじめhtmlspecialchars しておけばいいやん。
368:366
09/03/17 21:20:04 Ib1RB6YL
>>367
そうでした;;
キーワードもエスケープ処理しておくことでうまくいきました!
おかげさまで、当初の目的が達成できました。
もっと精進します・・・w
レスをくれたみなさん、ありがとうございました!
369:nobodyさん
09/03/17 21:26:48
キーワードは最長一致させるのが原則。
"WEBプログラミング"なら、"WEB"や"プログラミング"より
"WEBプログラミング"の方が指定がより明確だから重要度が高いよね。
それに最長一致なら被らない。
処理の重さに関しては、保存時はゆっくり反映で良いので問題ない。
はてダみたいに、外部リンクのサイトのタイトルの文字列まで取得して
投稿を書き換えようとするのは外部サイトの都合で時々タイムアウトしてるけど、
自鯖の中でのリンクの置き換え程度なら、よっぽどキーワード数が多いとかじゃなければ
タイムアウトはまず起こらない。
キーワードを使うケースの場合、ROMユーザーが書き込むユーザーより圧倒的に多いし
そうでなければそのサービスは成り立たないから、ROMユーザーに対して
内容がキャッシュされてれば投稿時はかなり重い処理でも構わない。
370:nobodyさん
09/03/17 21:29:46
またWikiやはてなみたいなスパムサイトが増えるのか。
371:nobodyさん
09/03/17 23:09:10 whdlEm3/
array('a'=>'b','c'=>'d')
を
array('a','b','c','d')
にする簡単な方法があれば教えて下さい
372:nobodyさん
09/03/17 23:25:11
>>371
foreach( $oldarray as $key => $value ){
array_push( $newarray, $key ); array_push( $newarray, $value );
}
373:nobodyさん
09/03/17 23:50:49
>>371
$newArray = array_merge(array_keys($oldArray), array_values($oldArray));
374:nobodyさん
09/03/17 23:52:05
ああこっちだったわ
$newArray = array_keys($oldArray) + array_values($oldArray);
375:nobodyさん
09/03/18 02:04:43
スレリンク(php板)
こっちで懐かしいやつが暴れてるぞ
376:nobodyさん
09/03/18 03:57:38 Zcgp4DkA
文字列がintとして妥当かどうか調べるにはどうしたらいいですか?
377:nobodyさん
09/03/18 04:05:19
死ぬほど既出
378:nobodyさん
09/03/18 08:50:19
「intとして妥当」を説明してみろ。
379:nobodyさん
09/03/18 09:22:56
is_numeric
is_int
のことじゃないかとエスパーしてみる
380:nobodyさん
09/03/18 09:24:58
is_intは型判定だろ
381:nobodyさん
09/03/18 09:39:50
/)
///)
/,.=゙''"/
/ i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!!
/ / _,.-‐'~/⌒ ⌒\
/ ,i ,二ニ⊃( ●). (●)\
/ ノ il゙フ::::::⌒(__人__)⌒::::: \
,イ「ト、 ,!,!| |r┬-| |
/ iトヾヽ_/ィ"\ `ー'´ /
382:nobodyさん
09/03/18 10:52:55
>>376
正規表現で調べればよい
if (preg_match("/^[0-9]+$/", $string)) {
妥当
}
383:nobodyさん
09/03/18 10:55:30
>>382
それだとunsigned intじゃ...
384:nobodyさん
09/03/18 11:00:44
負も調べたいってこと?
なら
if (preg_match("/^-?[0-9]+$/", $string)) {
妥当
}
かな
385:nobodyさん
09/03/18 11:03:09
ちなみに指数表記やInfinityまで対応というなら
またパターンを増やせばよい
386:nobodyさん
09/03/18 11:07:58
あと厳密にintならPHPの場合何バイトかしらないけど(たぶん4?)
その辺も考慮しないといかんかな
strlenで32ビット以内かどうか調べる処理とか
387:nobodyさん
09/03/18 11:10:31
strlenは関係ない
2^32を2の補数で表した値の範囲かどうかだな
?2147483648~2147483647
388:nobodyさん
09/03/18 11:22:00
preg_match("/^-?[0-9]+$/", $string) && $string >= -2147483648 && $string <= 2147483647
389:nobodyさん
09/03/18 11:46:44
$は改行にもマッチするから、D修飾子を付ける
それから、0123は整数か?
390:nobodyさん
09/03/18 12:01:38
>>388
厳密な数値かはわからないよね
だってそれだと下のどれでも引っかかるからね
123
-123
"123"
"-123"
391:nobodyさん
09/03/18 12:13:56
つ[:digit:]
392:nobodyさん
09/03/18 12:33:33
質問者があいまいなまま補足してくれないのにこぞって答えなくても
393:nobodyさん
09/03/18 13:00:35
0xa0 だって立派にint型を表現した文字列として妥当といえるよねー
394:nobodyさん
09/03/18 13:17:37
答えるのが簡単だからだろ?
395:nobodyさん
09/03/18 13:24:34
死ぬほど既出だけどな
396:nobodyさん
09/03/18 13:27:19
テンプレ守ってる以上答えてやってもいいだろ
いちいちグチグチ言うやつは黙ってればいい
397:nobodyさん
09/03/18 14:23:57 R7u4YHhc
なぜimagecreatefrombmpは無いんですか?
デジカメとかだとBMPで出力するカメラも結構有るし需要あると思うけど。
ビットマップからイメージ作れるユーザー関数ありますか?
398:nobodyさん
09/03/18 14:25:50
>>397
User Contributed Notesの一番上
399:nobodyさん
09/03/18 14:47:40 meKzf6DJ
クラス内のメソッドはだいたい何行くらいで収めるのが目安でしょうか?
400:nobodyさん
09/03/18 15:58:45
50行くらい
401:nobodyさん
09/03/18 16:21:37
>>399
そんなのきまってない
402:nobodyさん
09/03/18 16:42:30
URLリンク(hightide.blog2.fc2.com)