| 発行日時 |
見出し |
|
2009-1-6 19:32
|
セッションを破棄する方法
以下のようにセッションを破棄しようとしましたが、
セッションが残ったままになっているようです。
セッションを正しく破棄する方法を教えてください。
$_SESSION["loginflag"] = "";
if (!isset($_SESSION["loginflag"])) {
print "セッション無し"; //こちらを通りたい
}else{
print "セッション有り"; //こちらを通ってしまいます
}
よろしくお願いします。
|
|
2009-1-6 14:08
|
画像データDB格納メリット
こんにちは、
PHP5、MYSQLの環境で
画像データの取り扱いの部分を勉強中なのですが、
そのなかで、
画像の格納方法に
DBにバイナリデータを保存する方法と
特定フォルダに格納する方法と
二通りあると思われるのですが、
それぞれ、どうゆうメリットがあるのだろうか?と
思いまして、メリットや、こうゆうサイトに使えるような
情報などありましたらお願い致します。
個人的には、下記のような感じたのですが、
記述コードは、画像名や幅などDBで管理すれば
あまり難しさに差がないように感じましたが。。
SBに格納の場合、セキュリティが向上するが
データから画像として構築する分、処理に負荷がかかる
フォルダ格納の場合、セキュリティが低下するが
負荷が少ない
|
|
2009-1-5 16:20
|
ページのナビゲーションでの配列の受け渡し
$PAGESIZE件ごとにページ分け表示する際のページのナビゲーションについて、
例えば、前のページに値($tcnt)をtcntという変数名で受け渡したいときは次のようにすると思います。このようにして配列を受け渡すことは可能ですか?
//ページのナビゲーション
if ($page > 1) {
//2ページ以降の場合は[前]を表示します
$body .= "<a href='$PHP_SELF?page=".($page-1)."&tcnt=$tcnt'>前の".$PAGESIZE."件</a>";
}
$dis[]という変数名の多次元配列で中身は次のようになっています。
Array ( [0] => Array ( [レシピNo.] => 10 [マッチ数] => 1 ) [1] => Array ( [レシピNo.] => 11 [マッチ数] => 1 ) )
PHPは初心者です。よろしくお願いします。
|
|
2009-1-5 14:59
|
ランダム文字生成+重複チェック
コード用のランダム文字を生成し、以前登録されたデータに重複するコードがあれば再生成する、というPHPを作りたいと思っています。
過去記事を探したところ、http://www.phppro.jp/qa/960にて、ほぼ私がやりたい事と同じ内容が回答されておりました。
2番目に回答されたsignalさんのサンプルコードを使用させていただきました。
「signalさんが書かれたコード」
function make_passwd( $length ) {
$char = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$list = preg_split( '//', $char, -1, PREG_SPLIT_NO_EMPTY );
$rand = array_rand( $list, $length );
$str = '';
foreach ( $rand as $key ) $str .= $list[$key];
return $str;
}
function get_passwd( $conn, $length = 8 ) {
do {
$passwd = make_passwd( $length );
$result = mysql_query( "SELECT upw FROM tablepw WHERE upw = '$passwd'", $conn );
$count = mysql_num_rows( $result );
} while( $count > 0 );
return $passwd;
}
$conn = mysql_connect( $host, $user, $pw );
mysql_select_db( $db, $conn );
print get_passwd( $conn, 6 );
要らないと思われる部分を削り、以下のコードで動作は確認できました。
(重複チェックしているかは、まだなのですが・・・)
「私が書いたコード」
// DB接続
require_once('db_joint.php');
/* コード生成 */
function make_code($length) {
$rdm_str = md5(uniqid(rand(), true)); // ランダム文字生成
$rdm_str = substr($rdm_str,0,6); // 生成文字を6文字に縮小
$today = date("ymd"); // 現在の年月日
$cp_code = "CP_".$rdm_str.$today; // コード生成
return $cp_code; // 生成したコードを返す
}
/* 生成コードの重複チェック */
function get_code($length) {
do {
$cp_code = make_code($length);
$result = mysql_query("SELECT code FROM code_table WHERE code = '$cp_code'");
$count = mysql_num_rows($result);
}
while($count > 0);
return $cp_code;
}
// 生成コード表示
print get_code();
上記に書いたPHPコードで、文法的には間違っていないでしょうか?
また文法以外にも、何か間違っているなどありましたら、教えていただきたいです。
(コード自体理解しきれていないので、signalさんが書かれたコードを1行ずつ解説していただけると嬉しいです)
よろしくお願いいたします。
|
|
2009-1-5 14:34
|
データベースの表示方法について
mySQLデータベースにphpで接続し、一覧表示をさせるときに、基本、縦に一覧が表示されますが
例えば横にも5列表示させる方法は有りますでしょうか?
写真とコメントのデータベースを表示させるのに、例えば横に5列、縦に5列の25個を表示して、それ以上の場合はページングでページを変えたいと思っています。
<table>
<tr>
<td rowspan=2>
<?php echo $row [ " data1 " ] ; ?>
</td>
<td>
<?php echo $row [ " data2 " ] ; ?>
</td>
</tr>
<tr>
<td>
<?php echo $row [ " data3 " ] ; ?>
</td>
</tr>
</table>
例えば上記の場合、テーブルの形のまま、データが有るだけ下に表示されてしまいます。このテーブルの形を活かして横にも5列例えば表示させる様にするにはどのようにしたら良いのでしょう?
ご教授下さい。※テーブルやテーブルの形は例えです。
|
|
2009-1-5 2:03
|
チェックボックスの判別について教えてください。
以下のようなソースでチェックボックスを表示させ$strに何を選んだのかまではできています。
<input type="checkbox" name="flag[]" value="1" />aaa
<input type="checkbox" name="flag[]" value="2" />bbb
<input type="checkbox" name="flag[]" value="3" />ccc
foreach ($_POST['flag'] as $val) {
$str[] = $val;
}
例えば1と3を選んだ場合
$str[0] => 1
$str[1] => 3
となるのですがチェックしていない場合は常に0を配列に返し上記の例と同様に1と3を
選んだ場合以下のような配列で返すにはどうすればいいのでしょうか?
$str[0] => 1
$str[1] => 0
$str[2] => 3
セレクトボックスであればvalueに0を入れれば済むので問題ないのですがチェックボックスの
場合どうやっていいものか全くわからず悩んでおります。
|
|
2009-1-4 21:32
|
pear DBを使ってテーブルをトランケート
タイトルの通りなのですが、pearのDBを使ってテーブルをトランケートしたいと思っているのですが、そもそも可能なのでしょうか?
検索してもうまくヒットしなかったので・・・
|
|
2009-1-3 12:49
|
imagickやpear-file_archiveからの書き込みで文字化け
タイトルの通りなのですが、imagickから$image->writeimage(~やfile_archiveからFile_Archive::extract(~で書き込まれるファイル名が日本語の場合文字化けしてしまっています。
サーバのosはFreeBSDです。
文字コードの問題だとは思うのですが、imagickやpearからの出力時に文字コードを指定する方法がみつかりませんorz
もしご存じの方がいらっしゃいましたらご教授お願いいたします。
|
|
2009-1-2 3:36
|
smarty ループ処理 多次元の場合
こんにちは、
smartyのループ処理に関しまして
$conectdata配列の内になる、userid,userpassの値を
表に表示しようとしているのですが
多次元構成の場合、loop処理機能で表示させる方法はありますでしょうか。
$conectdata配列中身---------------------
Array ( [0] => OK
[1] => Array ( [userid] => testuser [userpass] => testpass )
[2] => Array ( [userid] => 1testuser [userpass] => testpass ) )
テンプレート-------------
<table border="3">
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
</tr>
{section name=cnt loop=$data1}
<tr>
<td>{$data1[cnt][userid]}</td>
<td>{$data1[cnt][userpass]}</td>
<td>{$data1[cnt][userid]}</td>
</tr>
{/section}
</table>
PHP-------------------
$smarty->assign( 'data1' , $conectdata);
|
|
2009-1-1 10:29
|
MySQLとQuickForm
MySQLにフォームデータを格納し、スクリプトにアクセスされた際、そのデータを呼び出し、QuickFormでフォームを構成しています。
その際、 foreachで addelement や addRule を適用しているのですが、 addRuleが上手く機能しません。
foreach($res as $value)
{
$f->addelement($value['1'].......);
$f->addRule(.....);
}
表示の際、入力必須の * はcheckbox項目以外は問題なく表示されるのですが、checkboxだけ、 * が表示されません。
また、addRuleを適用しているはずなのに、全て空白でsubmitを押しても問題なく処理されてしまいます。(本当はエラーをはき出さなければならないのですが)
尚、
$f->addElement(....);
$->addRule(....)
... のように一つ一つ表記すれば問題なく処理されますので、QuickFormの問題ではありません。
どうぞよろしくお願いします。
|
|
2008-12-31 11:19
|
MYSQL INSERT文のテーブルで変数を使いたいです。
以下のように INSERT文のテーブル選択部分で変数を利用したいのですがそのまま変数を入れてもエラーがおきてしまいます。
また、SELECT文でも同様にテーブル選択で変数を利用したいのですがうまくいきません;;
ご指導お願い致します><
/*****データベースへ挿入*****/
mysql_query("INSERT INTO thread_$thread_name(write_time, ip_addres, host, shead_title, item1, item2, item3, item4, item5, item6, item7, item8, item9, item10)VALUES(now(), '$ip_addres', '$host', '$shread_title', '$item1', '$item2', '$item3', '$item4', '$item5', '$item6', '$item7', '$item8', '$item9', '$item10')");
$re = mysql_query("SELECT * FROM thread_$thread_name");
$kekka = mysql_fetch_array($re);
|
|
2008-12-31 5:52
|
php5でのDB接続
こんにちは、
PHP勉強中のものなのですが、
php5,smartyそれぞれ少し使えるようになったので、
DB接続をやってみようと試しているところで、
何かサンプルが無いかネットで調べていましたら、
(PHP5、MYSQL環境)
php5の場合、pear?、SQLite?というDB接続用のライブラリ?が
あるようなのですが、
どちらをメインに使用すればよいものなのでしょうか?
|
|
2008-12-30 19:17
|
テーブルをまたぐ条件検索
mysqlに登録しているデータを参照し条件検索を試みています。
テーブルAとテーブルBがあるとして2つのテーブルからの条件検索というのは可能でしょうか?
抜粋となりますが具体的にテーブルAには
id,name
1,名前1
2,名前2
3,名前3
(商品id,商品名)
テーブルBには
id,products_id,code,price
1,1,aaa,100
2,2,bbb,200
3,3,ccc,300
(id,テーブルAと同様の商品id,商品コード,価格)
となっております。
単純にテーブルAのみのデータ検索であればシンプルで大丈夫かと思うのですが・・・
例えば検索フォームの商品名に『名前』といれればlike検索で3件ヒットしますよね?
同時にフォームの商品コードの箇所に『aaa』といれれば商品名が『名前』で商品コードが『aaa』
なので1件のヒットとなるかと思うのですがこれはどうやって実現できるものでしょうか?
実際にテーブルのカラムとフォームは多数あり検索条件に価格の下限~上限の検索も入れたいと
思っており仕組みを考えてみましたが初めてのもので難しく考えてしまっているものか構造が具体化
できずにいる状態です。宜しくお願い致します。
|
|
2008-12-29 23:00
|
mysqlのprimary keyで半角数値5桁を指定したい
いつも勉強させていただいております。samoraiと申します。
mysqlにて、テーブル作成の際に、
primary keyを自動連番で付加させたいのですが、
1を00001としてDBに登録させる事は可能なのでしょうか?
それともこういう処理はphp側で行う事なのでしょうか?
検索したのですが、mysqlでの処理で1を00001にして自動保存するような記事が見つかりませんでした。
どなたか知っていましたらご教授お願い致します。
|
|
2008-12-29 1:16
|
フォーム内容が誤っていた時の処理
入力フォームからPOST送信によって○○.phpへ送信してフォームデータのチェックを行い、間違い等があった場合、入力フォームへ強制的に戻す方法が分からずこまっております。
何か便利な方法はありませんでしょうか?
お願いいたします。
|
|
2008-12-28 21:03
|
CSVに書き出すと空行ができてしまいます・・・
こんばんは初級です。
CSVデータをPHPでMySQLにインポートし、その後必要データを抽出して
今度はCSVに書き出していますが、1行ごとに空行ができてしまいます。
PHPの入力フォームやMySQLに直接書き込んだ場合のデータでは
空行はできません。
どうもインポート時か、CSVの作り方(?)に問題があるような気がするのですが、
原因がつかめず投稿しました。
書き出したCSVの状態
1行目,・・・
,
2行目,・・・
,
3行目,・・・
CSVインポートスクリプト
$inif2 = "CSV.csv";
$fp = fopen("$inif2", "r");
while(!feof($fp)){
$buf = fgets($fp, 2048);
list($f1,$f2,$f3,$f4) = preg_split("/,/", $buf);
$sql = "INSERT INTO $iar_event (euid, evid, epartic, eday) VALUES('$f1', '$f2', '$f3', '$f4')";
mysql_query($sql) or die("登録できませんでした。");
echo "管理者登録しました。";
}
fclose($fp);
ちなみに、エクスポートはこんな感じです。
while ($col = mysql_fetch_array($res, MYSQL_ASSOC)) {
print $col["no"] . ",";
print mb_convert_encoding($col["name1"], "SJIS", "UTF-8") . ",";
print mb_convert_encoding($col["com"], "SJIS", "UTF-8") . ",";
print mb_convert_encoding($col["apply"], "SJIS", "UTF-8") . ",";
print "\r\n";
}
インポートするCSVデータは、カンマ区切りです。
原因に心当たりがあるようでしたら、教えていただけないでしょうか?
宜しくお願いいたします。
|
|
2008-12-27 20:24
|
ドロップダウンリストからアドレスを選択し送信したい
こんにちは。今、PHPでドロップダウンリストに3つのメールアドレスの設定はできました。そこでこの中から一つのアドレスを選択し、送信したいのですがどのような方法をとればいいのか皆目検討がつきません。ご教授願います。
<select name="company" type="popup">
<option>
<option value="hoge@hoge.com" >hoeg株式会社
<option value="hoge@hoge.tv" >株式会社hogeTV
<option value="info@hoge.jp" >株式会社hoeg.JP</select>
|
|
2008-12-27 18:14
|
tpl
こんにちは、
PHPを勉強中にtplファイルを使用しているのですが、
tplファイルを自分で作成したいときに、
何か製作に便利なソフトなどありますでしょうか?
|
|
2008-12-26 9:07
|
FORMで勝手に改行?
メールフォームを作成してFCK Editorをあてて、デコメールがかけるようにしています。
フォームで記述 -> MySQLにinsert -> cronで配信
という流れで処理しています。(言語はもちろんphp
<font color=#DDDDDD size=4>ああああ</font>
とエディタで書いたものが(前後もありますが例なので省略)、DBに入れ込むと
<font color=#DDDDDD
size=4>ああああ</font>
のようになっていて、色が記述したものとは違うものが反映されたりします。
コレはformの仕様でしょうか・・・?
回避方法があれば教えていただければと思います。
よろしくおねがいします。
|
|
2008-12-26 1:52
|
HTMLからphpファイルにsubmitするとアクセスが拒否される
auのezwebではHTMLからphpファイルをsubmitで呼び出すと
なぜかアクセス拒否される。
DocomoとSoftbankは問題ありませんがauだけだめです。
phpファイルのurlを直入力するとphpも動作し結果も表示
されます。なぜかHTMLからsubmitするとNGです。
auは何か特殊なのでしょうか?ご存知の方ヘルプ願います。
|
|
2008-12-25 19:01
|
phpのGDで背景画像の上に画像と文をのせるやりかた
phpのGDで背景画像の上に画像と文をのせる方法について、アドバイスをいただければと思います。
http://www.geekpage.jp/web/php-gd/
このページを参考にしながらつくっています。
やりたいことは主題の通り、背景としての画像の上に、テキストと画像をおくことです。
以下のようなソースで試しているところなのですが、エラーが出てしまい、行き詰っています。
ちょっとしたヒントでも結構ですのでどなたかアドバイスいただけないでしょうか?
どうぞよろしくお願いします。
<?php
//定義
$bun = ( ' あいうえお ' ) ;
$logoimg = ( ' front.png ' ) ;
$img = imagecreatefrompng ( ' background.png ' ) ;
$text = mb_convert_encoding ( $bun , ' auto ' ) ;
//背景の幅と高さ
$img_w = imagesx ( $img ) ;
$img_h = imagesy ( $img ) ;
# ロゴの幅と高さを取得
$logo_w = imagesx ( $logoimg ) ;
$logo_h = imagesy ( $logoimg ) ;
# 右下にロゴを表示
imagecopy ( $img , $logoimg ,
$img_w - $logo_w - 30 , $img_h - $logo_h - 20 ,
0 , 0 ,
$logo_w , $logo_h ) ;
$black = imagecolorallocate ( $img , 0x00 , 0x00 , 0x00 ) ;
imagettftext ( $img , 16 , 0 , 30 , 200 , $black , ' /font/ipagp.ttf ' , $text ) ;
header ( ' content-type:image/png ' ) ;
imagepng ( $img ) ;
?>
エラーがでるのは、13、14行目と20行目なので、なんとなく「$logo_wと$logo_h」が悪いとは思うのですが、解決できずにいます。
ちなみに文字だけならエラーなしに表示できました。
サーバの使用は
OS:CentOS
DB:MySQL5
Web:Apache2.24
APP:PHP5.2.3
APP:Perl:5.8.8 "
です。
|
|
2008-12-25 17:06
|
PHP + SQLSerever Queryが通らない
お世話になっております。
現在PHPでSLServer2005を操作していますが、以下のSQL文を
コマンドラインのsqlcmdでqueryを実行するとうまく動くのですが、
PHPでqueryを実行するとエラーになります。
たぶんJOINを加えるとエラーになってるような気も・・?
PHPで設定とか何かあるのでしょうか。
申し訳ないですが教えて下さい。
(若干掲示板違いでしたらすみません)
エラー内容------------
Warning: mssql_query() [function.mssql-query]: Query failed in ・・・
SQL文-----------------
SELECT CON.constraint_name ,
CON.table_name, CON.column_name
FROM information_schema.constraint_column_usage
AS CON LEFT OUTER JOIN sys.check_constraints AS CHE
ON CON.constraint_name = CHE.name
PHP 5.2.8
SQLServer 2005 Express Edition
|
|
2008-12-25 15:17
|
str_splitについて
$str = "0546271";//基本的に0~9までの数字が並びます
$arr = str_split($str);
php5ではこれで1文字ずつの区切りで配列になると思うのですが
php4でこのような動作をさせるにはどのような方法があるでしょうか?
explodeは4でも使用できる関数なのですが区切り文字の指定が必要なので
現状では1文字ずつ配列にする事ができません。
単純に$strに区切り文字を入れればいいのですがデータが大量にあり区切り文字
を入れなおすのも困難な状態です。
4でもstr_split関数のように配列に入れる方法がありましたら教えてください。
|
|
2008-12-25 14:58
|
チェックボックスとの連動がうまくいきません・・・。
PHPでチェックボックスをチェックしたら、テキストフィールド内に表示されたURLを未表示にさせたいのですが…うまくいきません。
使用ソフトはDreamweaver8を使っています。
なかなかうまく行かないので、分かる方がいましたらアドバイスをお願いします。
現在、情報登録用のwebページを作っています。現在の機能としては、テキストフィールドにURLを入れると
そのページの画像をDBへ取り込み、表示させるというものになっています。
やりたいことは、登録・編集の画面で、画像があった場合、チェックボックスにチェックすることで、下のテキストフィールド内のURLを
表示させないようにしたいのですが、なかなかうまく行きません。
ちなみに、テキストフィールド内のURLはDBに画像がある限り、編集時にここに表示される=URLの表示を消すことで画像の削除
となります。
以下がソースです。
<td class="file"><p> <?php IF ( $ConstURL ) { ?>
<img src=" <?php print $uOutPhoto ; ?> " alt=" <?php print $Name ; ?> 外観" width="40" height="48" border="0" <?php print $OutImgSize ; ?> >
<?php } ?>
<?php
IF ( $ConstURL ) {
print " <input name= \" DConstURL \" type= \" checkbox \" class= \" noborder \" value= \" 1 \" ><span>削除</span> \n " ;
print " <input name= \" BConstURL \" type= \" hidden \" value= \" $ConstURL \" > \n " ;
} ?>
</p>
<p>
<input name="constURL" type="text" size="20" maxlength="200"
<?php IF ( DConstURL ){ ?>
value=" <?php print $ConstURL ; ?> ">
<?php } ?> ちなみに、チェックボックスは画像がある時にしか表示されないようになっております。
方向性等も含め、アドバイスをお願い致します。
|
|
2008-12-25 11:34
|
cshで実行されて出力されたものをphpで改変したのですが
はじめまして。早速質問なのですが、
サーバーでcshで実行されてechoされたものを
もう一度読み込んで特定の文字列に対し、任意のデータベースへのリンクを貼りたいです。
このようなことをphpで行うことは可能でしょうか?
可能な場合はどのような記述をすればいいのでしょうか?
具体的には、
blastという遺伝子配列解析のためのプログラムからの出力結果を改変しようとしていて
cgiファイルは以下のように記載されています。
echo "Content-type: text/html"
echo ""
setenv BLASTDB db
./blast.REAL
htmlで結果が出力され、その出力結果の
|id:xxxx| (xxxxは1桁から6桁の数字です)のような文字列を認識し
"http://www.yyyy.com/db/id="みたいなものを頭に付けてから、リンクタグを付けて
ブラウザに出力したいのです。
php5を使用することが出来ます。
プログラミングは専門外なもので、訳のわからない書き方をしているかもしれませんが
何とぞ、よろしくお願いいたします。
|
|
2008-12-24 18:32
|
XMLの値を属性名を指定せずに取得するには
XMLの属性の値を
属性名を指定せずに取得・表示するにはどうすればよいでしょうか
もしくは配列の数字で取得とかは可能でしょうか
例えば下のXMLを test1, test2 とか指定せず a とか b とかを取得するにはどうせればよいでしょう
test.xml
<? xml version = " 1.0 " encoding = " UTF-8 " standalone = " yes " ?>
<root>
<test test1="a" test2="b" test3="c" />
</root>
教えて下さい。
宜しくお願いします<(_ _)>
|
|
2008-12-24 18:05
|
PHPでMicrosoft SQL Serverの接続について
はじめまして。
WindowsにPHPをインストールして勉強中です。
環境は以下の通りです。
OS:WindowsXP Professional
IIS:5.1
PHP:Version 5.2.4
DB:Microsoft SQL Server 2005
php.iniで以下の項目のコメントを外しました。
extension=php_mssql.dll
下記のファイルをダウンロードして更新しました。
ntwdblib.dll
パソコン自体を再起動してphpinfo()を作成してブラウザで表示したらPHPの情報が表示されましたので
データベースに接続できるかと以下のサンプルを作成しましたがエラーが発生してしまい困っています。
[ソース]
--------------------------------------------------------------------------------
$con = mssql_connect('PC1/sample', 'sa', 'password');
mssql_select_db('Table1', $con);
--------------------------------------------------------------------------------
※上記の「mssql_connect」には下記の情報を設定しています。
データベース名:sample
テーブル名 :Table1
サーバー名 :PC1 ※
ユーザー名 :sa ※
パスワード :password ※
※印は「SQL Server Management Studio」に接続する時の情報を設定しています。
[エラーメッセージ]
--------------------------------------------------------------------------------
Warning: mssql_connect() [function.mssql-connect.html]: Unable to connect to server: XXXXX/sample in C:\Inetpub\wwwroot\test.php on line 3
Warning: mssql_select_db(): supplied argument is not a valid MS SQL-Link resource in C:\Inetpub\wwwroot\test.php on line 4
--------------------------------------------------------------------------------
すみませんがアドバイスいただけませんでしょうか?
宜しくお願いします。
|
|
2008-12-24 17:01
|
外部キーをもつテーブル
外部キーをもつテーブルにデータを登録しようとするとエラーが出てしまいます。
登録する際に外部キーも含む全てのフィールドに値を入力してやらなければいけないのでしょうか?
テーブルA
id_A id_B(外部キー) name
1 1 sato
2 1 ikeda
3 2 kimura
テーブルB
id_B age
1 28
2 30
3 32
テーブルAのid_BはテーブルBのidを参照する。
また、同じ名前のデータを登録するときにエラーを出さずに登録しないで現在あるデータを参照するというのは可能でしょうか?
説明が下手で大変申し訳ないのですがよろしくお願いいたします。
|
|
2008-12-24 11:20
|
セレクトメニューの選択内容引継ぎ表示
検索フォームを作成しております
セレクトメニューから選択して検索する形なのですが、
検索ボタンをクリックして結果を表示させると、何を選択していたのか解除されてしまいます。
これを、選択したものがそのままになるよう、選択項目の引継ぎをしたいと思っています。
色々と探した結果HTML直打ちでは、以下の書き方で上手く行きました。
<select name="search_select">
<option value="▼選択して下さい">▼選択して下さい</option>
<?php ( $search_select == " 1個目 " ) ? $val = " selected " : $val = "" ; ?>
<option value="1個目" <?= $val ?> >1個目</option>
<?php ( $search_select == " 2個目 " ) ? $val = " selected " : $val = "" ; ?>
<option value="2個目" <?= $val ?> >2個目</option>
<?php ( $search_select == " 3個目 " ) ? $val = " selected " : $val = "" ; ?>
<option value="3個目" <?= $val ?> >3個目</option>
</select>
そこで、このセレクトメニューの内容をマスタ化(合ってるかな?)して、PHPの中でセレクトメニューのHTMLを作成し、表示させると、
<option value="▼選択して下さい" <?= $val ?> >▼選択して下さい</option> の部分がちゃんと認識されません。
「~<?= $val?>>」の「>」が二つ続いているためか、1つ目の「~$val?>」で勝手にタグを閉じてしまいます。
PHPからHTML作成は、こちらのコードです。
「PHP」・・・こちらでHTMLを作成しています。
if($rows){
$tempHtml .= "<select name=\"search_select\">\n";
$tempHtml .= "<option value=\"▼選択して下さい\">▼選択して下さい</option>\n";
while($row = mysql_fetch_array($result)) {
$tenoHtml .= " <?php ( $search_select == \ "" . $row [ " name " ] . " \" ) ? $val = \" selected \" : $val = \"\" ; ?> " ;
$tempHtml .= " <option value= \" " . $row [ " name " ] . " \" > " . $row [ " name " ] . " </option> \n " ;
}
$tempHtml .= " </select> \n " ;
}
「HTML」・・・こちらで作成したHTMLを表示させています。
<?= $tempHtml ?>
記述が間違っている、または違う方法がある等ありましたら、教えていただきたいです。
よろしくお願いいたします。
|
|
2008-12-22 16:54
|
require()で読み込んだあと、指定した行に好きな文字を保存したい
こんにちは。初投稿です。
PHP形式のファイル(変数のみ)を、require関数を使用し読み込んだあと、
そのファイルの好きな行に保存することは可能でしょうか?
保存したい文字は、
$adminpass = $_POST["password"]; // 管理画面などに使用される、パスワード変更などに使います。 です。
初心者ですので、コードを書いていただければ幸いです。
お返事をお待ちしております。
|
|
2008-12-22 14:15
|
エラーメッセージのポップアップ
PHPでmysqlに接続しようとすると以下の
メッセージがポップアップされて先に進めません
----------
Apache HTTP Server は動作しなくなったため、閉じられました
問題が発生したため、アプリケーションは正しく動作しなくなりました。
解決策がある場合はWindowsから通知されます。
----------
多分Vistaにしてから出るようになったので
環境の問題かもしれませんが
解決方法が見つからないので、宜しければ教えて下さい。
OS: Windows Vista
Apache: 2.2.11
PHP: 5.2.8
|
|
2008-12-22 11:52
|
異なるテーブルの値を比較し、値が異なる場合のみ強調表示したい
こんにちは初級です。
異なるテーブル(MySQL)の値を比較し、値が異なる場合のみ強調表示したいのですが、
例えば、
テーブル_01
A
B
C
D
テーブル_02
A
C
のような場合、ブラウザに以下のような感じで表示したいのです。
A
B(強調)
C
D(強調)
どんな方法が考えられますでしょう?
|
|
2008-12-21 22:58
|
GETメソッドで送信されたデータに | が含まれていると変な挙動をする
原因がわからず困っているので質問させてください…。
環境: PHP5 + Winサーバ
問題:検索用のinputからGETメソッドで送信されたキーワードに | が含まれていると問答無用に404エラーが返って来る。
上記の通り、find.php?Keyword=|&page=0を渡すとfind.phpは実行されず、
そのまま404エラーが表示されてしまいます。
(|でも || | でも同じで含まれているだけでアウト、URL直指定でもアウトみたいです)
実行されないというのは、find.phpの最初にif($_GET['Keyword'] == "|")(略)と実行しても検知されず、
かつ直後のecho "ここまできた";も実行されなかったためです。
なお、それ以外のキーワード文字列(確認してる分のみ)は正常に認識します。
不思議に思いつつも、POSTで送受信してやったところ何故か正常に認識されます。
POSTも考えましたが原因がわからずスッキリしないので、何とかしたいです。
(他サイトではキーワードに|を含んでも正常に結果が取れているのが気になって仕方ない)
ちなみに文字コードは送受信ともにUTF-8でやり取りしています。
動作はFireFoxとIE7を使用。
自分はサーバの問題じゃないかと疑っているのですが…。
これが原因じゃないか?などありましたら教えてくださいorz
|
|
2008-12-21 12:59
|
メール配信処理について
こんにちは。初級です。
以前お世話になりました、メール配信についての続きなのですが、
メール件数が一気に増えそうですのでスクリプトの見直しをしたいのです。
流れとしましては、以下を想定しています。
・cronからPHP実行
・送信対象メールアドレスを別テーブル(送信テーブル)にインポート
・送信毎にフラグを立てる
・全て送信したら全メールアドレスを削除
以下、コード(一部省略)です。
set_time_limit(0);
$sql = "SELECT * FROM 送信テーブル WHERE mfrag <> '1'";
$res = mysql_query($sql);
$reccnt = mysql_num_rows($res);
if (mysql_num_rows($res) > 0) {
$count = 0;
while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
// メール送信先
$m = $row["m"];
$mid = $row["mid"];
if (!mb_send_mail($m, "$msub", $mhon, $header, "-f $Return")) {
sleep(30);
continue;
}
// 送信されたメールアドレスにフラグ付加
$mfrag = "1";
$sql = "UPDATE 送信テーブル SET mfrag='$mfrag' WHERE mid = '$mid'";
if (!mysql_query($sql)) {
sleep(10);
$sql = "DELETE FROM 送信テーブル WHERE mid = '$mid'";
mysql_query($sql, $conn) or die("エラー発生!削除できませんでした。");
}
$count++;
if ($count % 50 == 0) { // 51, 101, 151, ... の場合30秒停止
sleep(30);
}
if ($count == $reccnt) { // 送信件数に達したらブレーキ
break;
}
}
//送信OKなら、メールアドレス削除
$sql = "DELETE FROM $iar_mailadd";
mysql_query($sql, $conn) or die("エラー発生!削除できませんでした。");
}
// 結果セットを破棄
mysql_free_result($res);
とりあえずPEAR無しでいきたいと思います。
皆さんから見て、修正箇所やアドバイスがありましたら、是非お願いします。
また、ブラウザから操作しませんので、ob_end_clean();やflush();は無視してよろしいでしょうか?
|
|
2008-12-20 18:23
|
xhtmlで書かれたhtmlファイルの一部分を別のhtmlファイルで表示
お世話になっております。
タイトルの通りなのですが、xhtmlで書かれたhtmlファイルの一部分を別のhtmlファイルで読み込んで表示できるものなのかご教授頂きたく、こちらで質問させて頂きました。
普段、私はFeedCreator.class.phpでxmlファイルを「A」のサイトで生成し、「B」のサイトで「magpierss」などを使ってそのxmlファイルを読み込み表示させているのですが、「A」のサイトがxhtmlに遵守したものであれば、xmlファイルを生成しなくても「B」のサイトで「A」のサイトにあるhtmlファイルを同じような感じで読み込み表示させられるのでは、ということを聞き、検索してみたのですが思うような答えが見つからず・・・
これは可能なことなのでしょうか?
見当違いな質問でしたら申し訳ありません。
どうかご教授いただけたらと思います。宜しくお願い致します。
|
|
2008-12-19 23:08
|
セッションについて
現在phpとMysqlで認証後、認証時に入力したID名のディレクトリを自動で作るシステムを作っています。
しかし、ID名のディレクトリにファイルをアップロードしたいのですが、なぜか指定よりひとつ上の階層にファイルが保存されてしまいます。
考えられることを以下に記します。
1、セッションがうまく渡ってきておらず、指定先のセッション変数が空である。
2、関数の使い方が間違っている。
この他に理由があるのかもしれません。
アップロード指定ディレクトリは以下のように指定しています。
$username = $_POST['user'];
$_SESSION['username'] = $_POST['user'];
$file_dir = "c:/xampp/htdocs/report/$username";
ちなみに認証時のID名のディレクトリを作るプログラムは以下の通りです。
<?php
session_start();
$dirname = $_POST['user'];
$_SESSION['dirname'] = $_POST['user'];
$path = "c:/xampp/htdocs/report/$dirname";
if(!file_exists($path)){mkdir($path);}
?>
こちらもセッション変数を利用しているので同じようにしたら
大丈夫だと思っていたのですが・・・
お分かりになる方ご回答お願いいたします。
|
|
2008-12-18 19:26
|
pg_escape_stringの扱いについて
エスケープ処理でうまく動作しないので質問させてください
$sql="select * from data where id=1 and name='tatou';
$esc_sql=pg_escape_string($sql);
上記のように文字を含んだSQL文をエスケープ処理してます
すると$esc_sqlの値をvar_dumpでチェックすると
select * from data where id=1 and name=''tatou'' このようになっていて「'」が二重になっているためにpg_queryでエラーになってしまいます
pg_escape_stringはSQL文全体に対してつかってはいけないのでしょうか・・
一変数に対してでしか使えないのでしょうか
どなたかご教授お願いします
|
|
2008-12-18 16:34
|
phpとmysqlでデータ登録
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
上記のようにエラーでました。分かる方いらっしゃいましたらよろしくお願いします。
ソースは下の通りです。
<?php
$con = mysql_connect("localhost","root","matsushima") or die(mysql_error());
mysql_select_db("koukou") or die(mysql_error());
$sql = "insert into area(name_area) values('".$_POST[name_area]."')";//SQL文の作成
$res = mysql_query($sql) or die(mysql_error());//クエリの実行
mysql_close($con);//切断
?>
<html>
<head>
<title>登録完了画面(サンプルリスト)</title>
<meta name="keywords" content="入力フォーム,確認画面,サンプル">
</head>
<body>
<p>
|
|
2008-12-18 1:18
|
文字コード変換の不具合?
smartyを使用してサイトを作っております。パソコン,携帯用とありphpファイルと
パソコン用のテンプレはutf-8で携帯用のテンプレはshift_jisで保存しています。
携帯の場合文字コードをshft_jisに変換し表示させたく自分なりに調べたところ
アウトプットフィルタが有効なようで以下のようにしてみたのですが白い画面になってしまい
文字が表示できません。
if (携帯) {
$smarty->register_outputfilter('SJIS_Encoding');
ini_set("default_charset", "Shift_JIS");
// ここで外部ファイルの読み込みやassignなどの表示処理など
$tpl_output = $smarty->display('./mobile/index.tpl');
}
function SJIS_Encoding($tpl_output, &$smarty) {
$tpl_output = mb_convert_encoding($tpl_output, "SJIS-win", "UTF-8");
return $tpl_output;
}
使い方が間違っているのが原因かとは思うのですがどう変更すればいいものかわからない
状態です。
文字コードを変換し出力するにはどうすればいいのでしょうか?詳しい方おりましたら宜しく
お願い致します。
|
|
2008-12-18 0:52
|
空メールから自動返信するスクリプトについて
携帯サイトで空メールを送信して、自動返信メールに書かれたURLから会員登録させるスクリプトを作成しようとしています。
空メールから自動返信については、.forword等の説明があるサイトを参考にして、なんとかできそうかな?と考えていますが、送信するメールアドレスごとに、自動返信する文章を変更したいのです。
例:aaa@test.com 宛 ⇒ 自動返信文章 : regist.php?u=aaa
bbb@test.com 宛 ⇒ 自動返信文章 : regist.php?u=bbb
この場合、メールアドレスを増やす度に、毎回メールアカウントを追加して、設定を追加しなくてはいけないのでしょうか?
そうではなく、PHPでの管理画面で、ccc@test.comやddd@test.comのメールアドレスをDBなどに追加して、そのメールアドレスに送られてきたら自動返信メールが送信され、送信される文章も変更したいのです。
PHPとは関係ない場所での設定が多くなるかもしれませんが、ご存知の方がおられたら教えていただければ幸いです。
|
|
2008-12-17 16:11
|
複数選択可能なフォームセレクトボックスの変数をphpで受け取る方法は?
送信フォーム
<form name="form" method="post" action="form.php">
<select name="sel[]" size="10" multiple="multiple">
<optgroup label="グループ1">
<option value="日本語1">日本語1</option>
<option value="日本語2">日本語2</option>
<option value="日本語3">日本語3</option>
</optgroup>
//以下省略
</form>
受け取りphp
$val = array();
if (isset($_POST['sel'])) {
foreach($_POST['sel'] as $key => $value)
{
$val[$key] = $value;
}
}
echo $val;
としているのですが、Arrayとしか返されません。どのように受け取ればいいのでしょうか?
|
|
2008-12-17 14:53
|
ファイルアップロードした際に「move_uploaded_file」がFalseを返します
初めて投稿いたします。
現在、下記の要領でファイルアップロードのPGを作成しているのですが、
move_uploaded_fileがFalseを返し、ファイル移動ができません。
何がダメなのかが、理解できない状態にいます。
どうかご教授をお願いいたします。
:
$area='../data/'.time();
mkdir($area);
chmod($area,0707);
$url=$area.'/'.$_FILES["addurl"]["name"];
if(move_uploaded_file($_FILES["addurl"]["tmp_name"],$url))
echo $url.":成功";
else
echo print_r($_FILES);
:
:
echo '<form enctype="multipart/form-data" action="'.$_SERVER['PHP_SELF'].'" method="post">';
echo '<input type="file" size="50" name="addurl" />';
echo '<input type="submit" name="insert" value="追 加" />';
:
実行結果
Array ( [addurl] => Array ( [name] => 4.html [type] => text/html [tmp_name] => /tmp/phpqhkI3L [error] => 0 [size] => 79 ) ) 1
※作成したディレクトリのパーミッションは0707になっているのが、確認できています。
|
|
2008-12-16 23:44
|
二重圧縮ファイルかチェック(2回目)
こんばんは。初級です。
先日ご質問させていただきました、二重圧縮ファイルのチェックについての続きです。
http://www.phppro.jp/qa/1716
皆さんにご指導いただいたおかげで、何とか形になりました。
が、困ったことが2つあり、どうしても解決できなくて投稿しました。
まず流れですが、アップロード可能な圧縮ファイルをzip、lzhの2つにしました。
他の圧縮タイプは拡張子をDB化し、アップロード時のチェックではじくようにしました。
それで、困っていることは以下の点です。
①system関数の結果がブラウザに表示されてしまい、表示しないようにしたい
②解凍した中身のファイルがマルチバイト文字の場合、削除できない
※元のファイルはアップロード時に半角英数字のみにファイル名を自動変換しています。
以下ソースです。圧縮ファイルは一旦解凍するという方法にしました。
~拡張子取得まで省略~
if ($fileext2(拡張子) == "zip") { // zipの場合
$fileck = "/home/webmaster/public_html/****/****/data_temp/$up_file";
①↓
$ret = system("unzip -j '$fileck' -d /home/webmaster/public_html/****/****/data_temp");
$filecomp = basename($ret); //解凍した中身のファイル名取得(※マルチバイト文字の場合文字化けする)
$filecomp = "/home/webmaster/public_html/****/****/data_temp/$filecomp";
$ret = strchr($ret, "."); // 解凍した中身のファイルの拡張子取得
$ret = strtolower($ret); // 拡張子を小文字に変換
$ret = str_replace(".", "", $ret); // .(ドット)を削除
// 解凍した中身のファイルの拡張子で禁止ファイルかチェック
$sql = "SELECT * FROM [禁止ファイルDB] WHERE ckav = '$ret'";
$res = mysql_query($sql);
if (mysql_num_rows($res) <> 0) {
unlink($fileck); //禁止ファイルの場合、元の圧縮ファイル削除
unlink($filecomp); //禁止ファイルの場合、中身のファイル削除②
echo "<br /><font color=#FF0000><b>・このファイルは受付できません!</b></font>";
echo "<br /><font color=#FF0000><b>・ファイルは削除されました!</b></font><br />";
exit ();
}
else {
unlink("$filecomp"); //問題なかった場合は中身のファイルのみ削除②
}
解決方法を教えていただけないでしょうか?
お手数ですが、宜しくお願いいたします。
|
|
2008-12-16 15:09
|
POSTデータのシリアル化について
初めまして、numnumと申します。
オブジェクト指向でコーディングをしていて少し疑問に思いましたので、投稿させて頂きました。
ご存知の方いれば、ご教授頂けると幸いです。
$obj = (object)$_POST;
$serObj = serialize ($obj);
上記のようにPOSTデータをシリアライズしてDB(当方はMySQLを使用しています)に保存した場合、
SQLインジェクションの可能性はありますでしょうか?
シリアル化することで、生の文字が見えてしまっているので少し不安に思いました。
|
|
2008-12-16 13:28
|
親クラスのメソッドをクラス外から呼びたい
class testClass{
private $a=1;
}
class testClass2 extends testClass{
private $a=2;
function get_a(){return $this->a;}
}
class testClass3 extends testClass2{
private $a=3;
function get_a(){return $this->a;}
}
$test=new testClass3();
//testClass2::get_aを呼びたい
$ret=$test->get_a();
$ret=3になるのですが、testClass2の2を取得したいわけです。
testClass3でparent::get_aするなりtestClass2を直接インスタンス化すれば簡単なのですが、
クラス自体は触らずにどうにかする方法ってありませんでしょうか。
あとtestClass::$aもですが、これはrunkit_method_addでも使わないとどうにもならないかな…
#全然関係ないけどtestClass3をvar_dumpすると↓みたいになってキモくないですか?
object(testClass3)#1 (3) {
["a:private"]=>
int(3)
["a:private"]=>
int(2)
["a:private"]=>
int(1)
}
|
|
2008-12-16 1:09
|
セッションの2次元配列
ありがとうございます。
PHPが出力するhtml内で、存在しない画像を<img src で参照していると、セッションの2次元配列が消えてしまう現象がおきるのですが、どうでしょうか、同じようなことを経験された方はいらっしゃいますでしょうか、もしいらっしゃたらどう解決されましたか
|
|
2008-12-16 0:30
|
Zend_Amfについて質問です
Zend_Amfについて質問です
以下のURLのサンプルを試された方いらっしゃいますか?
(1)Getting started with Flex and Zend_Amf
http://www.phpbuilder.com/columns/richard_bates20081031.php3?aid=1520&print_mode=1
(2)Remote objects and Zend_Amf
http://www.phpbuilder.com/columns/richard_bates20081107.php3?print_mode=1
(2)は(1)の続きです。
当方が試したところ、(1)は上手くいきましたが、(2)がどうしても
上手くいきません。
以下のエラーが表示されます。
Channel.Connect.Failed error NetConnection.Call.BadVersion:
ググッたところ、結構有名なエラーのようですが、原因不明です。
以下は、ZendAMF.mxmlです。
------------------------------------------------------------------------------
<? xml version = " 1.0 " encoding = " utf-8 " ?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical" creationComplete="roContactService.getContacts()">
<mx:HBox width="100%" horizontalAlign="center">
<mx:VBox height="100%" horizontalAlign="center">
<mx:Label text="XML-Based Service" fontSize="14"/>
<mx:DataGrid id="myDG">
<mx:columns>
<mx:DataGridColumn headerText="Name" dataField="name"/>
<mx:DataGridColumn headerText="Email" dataField="email"/>
<mx:DataGridColumn headerText="Phone" dataField="phone"/>
</mx:columns>
</mx:DataGrid>
<mx:Form>
<mx:FormItem label="Name">
<mx:TextInput id="nameInput"/>
</mx:FormItem>
<mx:FormItem label="Email">
<mx:TextInput id="emailInput"/>
</mx:FormItem>
<mx:FormItem label="Phone">
<mx:TextInput id="phoneInput"/>
</mx:FormItem>
</mx:Form>
<mx:Button label="Save Contact" click="saveContact()"/>
</mx:VBox>
</mx:HBox>
<mx:RemoteObject endpoint="http://localhost/index.php"
id="roContactService" destination="zend" source="ContactService" fault="handleFault(event)">
<mx:method name="getContacts" result="handleContacts(event)" fault="handleFault(event)"/>
<mx:method name="saveContact" result="handleSave(event)" fault="handleFault(event)"/>
</mx:RemoteObject>
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.automation.codec.ArrayPropertyCodec;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
import com.flexandair.ContactVO;
import mx.controls.Alert;
import mx.utils.ArrayUtil;
[Bindable] public var dp:ArrayCollection;
public function handleContacts(event:ResultEvent):void {
dp = new ArrayCollection(ArrayUtil.toArray(event.result));
myDG.dataProvider = dp;
}
public function handleFault(event:FaultEvent):void {
Alert.show(event.fault.faultDetail, event.fault.faultCode);
}
public function saveContact():void {
var newContact:ContactVO = new ContactVO();
newContact.name = nameInput.text;
newContact.email = emailInput.text;
newContact.phone = phoneInput.text;
roContactService.saveContact(newContact);
}
public function handleSave(event:ResultEvent):void {
roContactService.getContacts();
nameInput.text = '';
emailInput.text = '';
phoneInput.text = '';
}
]]>
</mx:Script>
</mx:Application> ---------------------------------------------------------------------------
また、
src/com/flexandair配下に作成したContactVO.asです。
---------------------------------------------------------------------------
package com.flexandair
{
[Bindable]
[RemoteClass(alias="ContactVO")]
public class ContactVO
{
public var id:int;
public var name:String;
public var email:String;
public var phone:String;
public function ContactVO()
{
}
}
} ---------------------------------------------------------------------------
他に必要なphpおよびDBの設定は省略してあります。
試してみて、上手くいかれた方がいらっしゃいましたら、
教えて下さい。
|
|
2008-12-14 19:05
|
データベースより取り出した情報を表示したい
HTMLより登録された情報をphpからデータベースにinsertで入力し、その登録した名前のみを表示したいのですが表示ができません。(名前・nameが渡されない。smartyは使用しません。)
$sql = "insert into lesson4 values(null,'$name','$kana','$tel','$add')";
$result = mysql_query($sql);
if($result == false){
exit ("設定テーブルに書き込めません。<br>");
}
else{
echo "name= ".$result[name];
}
"name= ".$result[name];のところがおかしいのでしょうか?画面にはname= としかでてきません。
htmlは記載してませんが、$name = $_POST['name'];で受取ってます。
初歩的なことで申しわけないですが、宜しくお願いいたします。
|
|
2008-12-14 13:04
|
formからアップロードされたファイルの破損チェック
formからファイルをアップロード、pearのfile_archiveを使用してzipのみ解凍処理を行うというコードを書いています。
この動作自体は上手くいったのですが、アップロードされたzip書庫ファイルが破損?(ファイルを開くと予期しない終わりですとかなんとかでるもの)している場合に「Allowed memory size of ~」というエラーがでてしまいます。
もっと容量の大きなファイルでは成功しているのでメモリサイズの設定ではないと思うので破損しているところでずっとひっかかってメモリを消費しているのかと推測しています。
そこでアップロード→zipの解凍処理の間に、「アップロードされたファイルがzipならファイル破損の有無をチェックする」という処理か「Allowed memory size of ~」のエラーをキャッチして例外処理を書きたいのですがそこから先に進めずにいます・・・
エラーのキャッチはtry~catchでは上手く拾えませんでした。
よろしくお願いします。
|
|
2008-12-13 6:08
|
データベース連動に関する質問です。
初めまして。
とても初歩的のような質問で恐縮ですが宜しくお願い致します。
現在参考書を使用して勉強しているのですが、データベース登録時、
データベースに接続する記述で
/* MySQLに接続 */
$link = mysql_connect("localhost", DB_USER, DB_PASS)
or die("データベースへの接続に失敗しました。\n");
という記述がありました。
その通りに記述して実行したところ、正常に処理されていたようでした。
"$link"に"mysql_connect~~"を代入しているだけに見えるのに、
なぜ正常に動いているのか?
どなたかご教授頂ければ幸いです。重ね重ね宜しくお願い致します。
|