honoka-cha の回答履歴
- PHPのtxtファイルの使い方について
今、PHPでお問合せフォーム(メールフォーム)を作っています。 そこで、よくある「お礼メール」の定型文を、txtファイルで管理しようと考えています。 でも、txtファイルの扱い方がどうもうまくいきません。 あてもなく、「file_get_contents」や「preg_replace」を使って いろいろやってみましたが、どうしてもうまくいきませんでした。 もし、PHPでのtxtファイルの使い方について、ご存じの方がいましたらご教示ください。 ============================================== お問合せフォームの、大まかな流れとしては下記の通りです。 ------------------------------- 1)入力 ・名前・メアド・問合せ内容を入力 ↓ 2)確認 ・入力内容をチェック ↓ 3)完了 ・入力された内容をメールで送信。 ------------------------------- とりあえず、上記1)~3)までは出来ました。 ============================================== ============================================== 実現したいのは下記のようなことです。 下記のようなtxtファイル(お礼メールの定型文)を 準備しておいて・・・ -[お礼メールの定型文]------------ お問合せありがとうございます。 入力内容は下記の通りです。 【お名前】 {@name} 【メールアドレス】 {@mail} 【お問合せ内容】 {@body} ------------------------------- {@name} と {@mail} と {@body} の部分に フォームに入力された内容が、自動で入るようにして お礼メールが送信されるようにしたいと考えています。 ============================================== ※{@***}という記述のしかたについては特に意味はありません。 ※特にこだわっているわけではありませんが、 txtファイルだと管理が簡単そうな感じがしたので txtファイルにしようと思っています。 どうぞよろしくお願いいたします。
- PHPの中にPHP?
例えば <?php $all_array = array( "1", "2", "3", "4", "5", "6", "7", "8", "9", ・ ・ ・ という記述をした時に、"1"、"2"に他で作ったphpファイルを呼び出して表示させることは出来ないのでしょうか? 今までは単純に<? include("○○.php"); ?>で呼び出していたのですが、これは使えませんよね? よろしくお願いします。
- 検索しても何故か空白ページに
$usersearch =$_POST['usersearch']; $query = "select * from kensaku2 where syou like '%{usersearch}%}'"; $result = mysql_query($query); while($row = mysql_fetch_array($result)){ echo $row['byou']; echo $row['syou']; } usersearchの値を受け取り、syouカラムに該当するデータがあれば表示するというソースのつもりですが、カラムに該当するワードをテキストボックスに入れても何故かsyou,byouのデータが表示されません。hiddenで受け取った所、valueにきちんとワードは入ってました。
- ベストアンサー
- PHP
- noname#142312
- 回答数3
- PHPでMySQLのテーブルをダンプする
宜しくお願いします。 ※PHP5、 MySQL5、 Win7、 ローカル環境 本番環境(公開レンサバ)上では、cronを使って、自動的にバックアップを取ろうとしています。 1つのデーターベースのなかに、 10個のテーブルがあります。 テーブル別にダンプしたく思います。 そこで下記のPHPスクリプトを考えています。 しかし、ダンプ処理は行われているが(ファイルは出力されているという意味。成功していない)、 テーブル別に処理が進んでいるようではなく、 しかも、 INSERT文や、そもそもテーブルに格納されている値がSQLで書き出されていません。 まったく空白ということではないのですが・・・。※出力されたテキストは書き参照 ※テーブル名($db[$i]に格納されている)ごとにループ処理していますが、そこは省略して書きます。 $fileName = $db[$i]."-".$now.".sql"; $cmd = "D:/xampp/mysql/bin/mysqldump ".$dbName.".".$db[$i]." --host=".$dbHost." --user=".$dbUser." --password=".$dbPass." > ".$BackPath.$fileName; if (system($cmd)) ErrorOut("次のコマンド実行でエラーになりました。$cmd"); --------------出力されたテキスト------------------------- ▼ -- MySQL dump 10.13 Distrib 5.1.41, for Win32 (ia32) -- -- Host: localhost Database: ここは「データーベース名.テーブル名」が記載されています。 -- ------------------------------------------------------ -- Server version 5.1.41 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; ▲ ---------------------------------------------- 今自分のなかで思いつく原因は、 $cmd = "D:/xampp/mysql/bin/mysqldump ".$dbName.".".$db[$i]." --host=".$dbHost." --user=".$dbUser." --password=".$dbPass." > ".$BackPath.$fileName; の中の、 ".$dbName.".".$db[$i]." という記述で、 ここは、データーベース名とテーブル名を取得したく、このように書きましたが、 正直 適当です。調べまくりましたが見つからず・・・・。 どなたか、PHPで、mysqldumpを使い、テーブル別にダンプさせる書き方を教えてください。 宜しくお願いします。
- PHPで自作DLLはどうやって作成するのでしょうか
PHP初心者です。 PHPで使用する自作のDLLを作成したいのですが、 その環境を整備するのに困っています。 英語のマニュアルはあるようなのですが、理解に苦しんでいます。 現在の私の環境はWinXPで、 VC2003Proがインストールされており、追加でVC2008Expもインストールしました。 VC2008Expは上記の英語マニュアルに記載されていたので、インストールしたものです。 この他にはPHPの動作環境をセットアップするためにXAMPPというソフトで 環境を整備しました。 XAMPPではApache:2.2 PHP:5.3.5 がインストールされました。
- MySQLに画像パスを入れたい
MySQLに画像パスを入れたいのですが、どの値をどの様に入れるか 判らないので教えてください。 phpMyadminとphpPHP 5.2.17で、テーブル名/schedule カラム名 id/name/in_time/main/img(ここに画像パスを入れたい)です。 画像はデータベースに直接入れるのではなく、GDでサムネイルをつくりそのパスを記入したいのです。 やっと、画像をimgとthumbnailに入れることが出来たのですが、こんどはこの値を カラムimgに記載したいのですがどの様にするか詰まっています。 uptest.php ------------------- <?php isset($_FILES['upfile']) or die("no uploaded file \n"); $filename = $_FILES['upfile']['name']; $tmpFilename = $_FILES['upfile']['tmp_name']; $imgDir = 'img'; $thumbnailDir = 'thumbnail'; $destFilename = $imgDir . "/" . getFileId($filename); move_uploaded_file($tmpFilename, $destFilename) or die("Failed to upload $filename"); $thumbnailFilename = $thumbnailDir . "/" . getThumbnailFileId($filename); $width = 100; $height = 100; exec("convert -resize {$width}x{$height}! $destFilename $thumbnailFilename", $result, $status); ($status == 0) or die ("Failed to create thumbnail image"); # 保存するサムネイルファイル名をココで変更する function getFileId($name) { return $name; } function getThumbnailFileId($name) { return $name; } ?> upform.html ----------------------- <form action="uptest.php" method="post" enctype="multipart/form-data"> <div>送信する画像<input type="file" name="upfile" /></div> <div><input type="submit" value="送信" /></div> </form> 現在これで実験しています。 $sql ="INSERT INTO `schedule` SET //どの値をどの様に… 本当は、画像名のファイル名もdata値にして、同じ写真でも重ねがきしないようにしたいのですが…。 お手数ですが教えていただけないでしょうか。
- ファイルのアップロードについて
phpのmove_uploaded_fileを使用してアップロードをしようと思うのですがアップロードが出来ません。 状況は ローカル環境のwindowsでのアップロードは行えるがlinuxでは失敗してしまいます。 move_uploaded_fileからはエラーは出力されていません そもそもmove_uploaded_fileが成功しているのになんでアップロードされていないのか分かりません。 //■HTML <form name="form1" method="post" action="upload.php" ENCTYPE="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="10485760" /> <table class="frm" id="tbl"> <tr><th>ファイル1<div id="image"></div></th> <td> 画像<input id="img_1" type="file" name="image[]" class="fname" onChange=imageChange(this); /><br /> </td></tr> <tr> <th>ファイル2<div id="image"></div></th> <td> 画像<input id="img_2" type="file" name="image[]" class="fname" onChange=imageChange(this); /><br /> </td> </tr> </table> </form> //■phpで以下のコードを実行すると oreach ($_FILES["image"]["error"] as $key => $error) { //複数のファイルをアプロード if ($error == UPLOAD_ERR_OK) { $tmp_name = $_FILES["image"]["tmp_name"][$key]; //テンポラリファイルパス $name = $_FILES["image"]["name"][$key]; //アップロードファイル名 $size = $_FILES["image"]["size"][$key]; //アップロードファイルサイズ $ermsg = $_FILES['image']['error'][$key]; //エラーメッセージ echo "アップロードファイル名".$name."\n" ; echo "アップロードファイルsize" .$size ."\n" ; echo "errmsg= .$ermsg."\n" ; // ファイルアップロード $cnt++; if ( move_uploaded_file($tmp_name, "../1/33/.$cnt."2upload.jpg ")){ //ファイルアップロード echo "アップロード成功 .$ermsg."\n" ; echo " テンポラリファイル="$tmp_name."\n"; echo " アップロードファイル="$dir_img."/".$cnt.UPLOAD_FILE_NAME."\n"; } else { echo 1; error_log("upload error! \n", 3, MATCHING_ERROR_LOG); exit; } } } exit; ■結果 アップロードファイル名thum6.jpg アップロードファイルsize=10104 errmsg= 0 アップロード成功 テンポラリファイル=/tmp/phpMvCzgo アップロードファイル=../1/33/1upload.jpg アップロードファイル名 thum3.jpg アップロードファイルsize=11528 errmsg= 0 アップロード成功 テンポラリファイル=/tmp/php5Q4kIL アップロードファイル=../1/33/2upload.jpg テンポラリの/tmpは777のため権限に問題ないです php.iniの設定 upload_max_filesize=2m post_max_size=8m memory_limit=128m 今回のアップロードファイルのサイズから問題なし file_uploads=onなので問題ありませんでした これでなにかわかる方いらっしゃいましたら教えてください。
- ベストアンサー
- PHP
- noname#136767
- 回答数1
- 期限時間内にファィル更新があったら作動するPHP
期限時間内にファィルの更新があったら作動するPHPを作ってます。 5つのファィルをチェックし、「昨日から今までの間に5つのうちのひとつでもファィルの更新があったら」「hoge.cgi?&act=2」を実行するスクリプトです。 下記が完成形のつもりです。 テストをしたところ、5つのファィル全部が「一昨日以前の日にち」だと「PHPスクリプト終了!!」の文字が出ます。(計算通りです) 一方、5つのファィルのうち「1つでも昨日以降更新したファィル」があると「PHPスクリプト終了!!」の文字は出ません。これも計算通りです。 また、echo filemtime("../../../05/dannetsu/mail.cgi");の部分では、それぞれの時間が表示されます。(linux時間)これも計算通りです。 ただ、なぜか、http://hoge.jp/hoge.cgi?&act=2 の実行だけがされません。 if (filemtime.... の部分を「orで繋げず、1つのファィルを読みに行くだけで実行可否を判断」するようにするとhttp://hoge.jp/hoge.cgi?&act=2 は実行されます。 従い、orで繋げている部分のミスだと思うのですが、どう見直してもミスが見つかりません。 後は私の根本的な勘違いが潜んでいるのではないかと思い、相談する次第です。 宜しくお願い致します。。 ソース <?php date_default_timezone_set('Asia/Tokyo'); $script_tz = date_default_timezone_get(); if (strcmp($script_tz, ini_get('date.timezone'))){ echo 'Script timezone differs from ini-set timezone.'; } else { echo 'Script timezone and ini-set timezone match.'; } echo filemtime("../../../05/dannetsu/mail.cgi"); echo filemtime("../../../05/gaikou/mail.cgi"); echo filemtime("../../../05/gaisou/mail.cgi"); echo filemtime("../../../05/kiso/mail.cgi"); echo filemtime("../../../05/kutai/mail.cgi"); echo filemtime("../../../05/naisou/mail.cgi"); echo strtotime ("yesterday"); //日付をstrtotime()で変換して比較します if (filemtime("../../../05/dannetsu/mail.cgi") > strtotime ("yesterday") or filemtime("../../../05/gaikou/mail.cgi") > strtotime ("yesterday") or filemtime("../../../05/gaisou/mail.cgi") > strtotime ("yesterday") or filemtime("../../../05/kiso/mail.cgi") > strtotime ("yesterday") or filemtime("../../../05/kutai/mail.cgi") > strtotime ("yesterday") or filemtime("../../../05/naisou/mail.cgi") > strtotime ("yesterday")) { $buf = file_get_contents('http://hoge.jp/ho/ge/ho/hoge.cgi?&act=2'); echo $buf; }else{ exit( "PHPスクリプト終了!!" ); } ?>
- phpスクリプトのみで定期実行
PHPのプログラムのみで5分に1回くらいサーバーにアクセスしメールチェックしたい。 現状サーバーにアクセスしメールチェックするとこまで完成してるのですが、定期的にアクセスする方法で苦戦してます。 条件的には (1)PCは切りたい (2)cronは使用できません (3)cgi等も使用できません PHP無限ループ+タイマーで自動実行風にできるでしょうか? 詳しい方、ご回答よろしくおねがします。
- ベストアンサー
- PHP
- seventozero
- 回答数3
- 文字化けに関して
文字化けが起きてしまって困っています。 PHPとMysqlを使用した、CMSを今あるサーバから別のサーバに移したいのですが、 新しいサーバに移すと文字化けをしてしまいます。 正確にはデータベースから読み込んでいる部分だけが文字化けしています。 index.phpにHTMLコードとして記述してある部分は文字化けしていません。 ブラウザ(IE)の「表示→エンコード」からUTF8を選ぶと逆に データベースの部分が正確に表示され、HTMLに直接書き込んだ部分が文字化けします。 現状でわかる範囲で書きます。 ・index.phpのmetaは <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> ・MYSQL(phpmyadminに書かれている)文字セットは UTF-8 Unicode (utf8) ・php.iniの設定 mbstring.language・・・japanese mbstring.internal_encoding・・・UTF-8 mbstring.encoding_translation・・・on mbstring.http_input・・・未設定 mbstring.http_output・・・未設定 default_charset・・・未設定 output_handler・・・未設定 output_buffering・・・未設定 magic_quotes_gpc・・・Off 詳しい方よろしくお願いします。
- ベストアンサー
- PHP
- noname#244246
- 回答数3
- php でtabを空白に変換して表示する方法
お世話になります。 $str = <<< DOC_END01 <script language="JavaScript"> function changeText01(){ __$("#about01").html("表示テスト"); } </script> DOC_END01; echo nl2br(htmlspecialchars($str)); で、javascriptを表示するとき このままだと、tab 上記「_」が削除されてしまいます。 tabを空白などに変換して表示するにはどうしたらよいのでしょうか。 echo nl2br(htmlspecialchars(ereg_replace('/\t/', ' ',$str))); echo nl2br(htmlspecialchars(str_replace('\t', ' '$str))); などとしてもだめでした。 よろしくお願いいたします。
- サイトマップ自動生成プログラムを探しています。
サイトマップを自動生成したいので探していると、だいぶ理想に近いものがありましたが、すでに死んでいるサイトのようでした。 http://d.hatena.ne.jp/toku-hiro/searchdiary?word=%A5%B5%A5%A4%A5%C8%A5%DE%A5%C3%A5%D7+%BC%AB%C6%B0%C0%B8%C0%AE+php&.submit=%B8%A1%BA%F7&type=detail ここのサイトにあるようなプログラムを探しています。 ダウンロードフリーでいいものがあったら教えてください。 お願いします。 googleサイトマップ用XMLとサイトマップ用HTML(PHP)を生成
- 記事のコメント数表示について
phpにて掲示板を作成しており、書く記事のタイトルの一覧が表示され、各記事のコメント数を表示させたいと思っているのですが、なかなかできません。 どなたかご教授お願いします。 コードは下記のとおりです、 $bbs_query = sprintf("SELECT * FROM `bbs` ORDER BY `reg_date` DESC"); $bbs_result = mysql_query($bbs_query, $link) or die(mysql_error()); while ($bbs = mysql_fetch_assoc($b_result)) { $comment_result = "SELECT COUNT(*) AS count(bbs_id) FROM `bbs_comment` WHERE `bbs_id` = " .$bbs["id"]. "GROUP BY bbs_id"; $tmp = $comment_result; $count = $tmp["count"]; $bbs["count"] = $count; if($bbs) { $bbsList .= "<tr>\n"; $bbsl .= "<td class=\"title\"><a href=\"topics.php?topicNo=$bbs[id]\">".$bbs["title"]."</a></td>\n"; $bbsl .= "<td>(".//****$count*****//.")</td>\n"; $bbsl .= "<td>".$bbs["name"]."</td>\n"; $bbsl .= "<td>".date("Y/m/d H:i", strtotime($bbs["reg_date"]))."</td>\n"; $bbsl .= "</tr>\n"; } } としており、コメントの数(//****$count*****//)がSと表示されます。 参考サイトはこちらです。 http://www.kent-web.com/bbs/patio/patio.cgi こちらのサイトはcgiで作成していますが、こちらのサイトの返信数という感じで表示させたいです。 お分かりの方がいらっしゃいましたら宜しくお願いいたします。
- フィルタリングとバリデーションの違い
「用語の使い方」がよく分からないので、教えてください。 フィルタリングには、「入力フィルタリング」と「出力フィルタリング」の二種類があって、バリデーションは、「入力フィルタリング」の一部、 エスケープ処理は、「出力フィルタリング」の一部、 という認識で合ってるでしょうか? そもそも、フィルタリングって言い方とかするのでしょうか? フィルタって言った方がいいですか?
- PHPのインストール
VirtualBoxでUbuntuを入れて、Apacheのインストールはできましたが、 PHPのインストールの段階で途中まで、うまく出来ました。 ただ、http://2php.jp/php/install_php_linux.htmlの 「Linux用のPHPをインストールする」ところで、 $ makeとすると make: ***ターゲットが指定されておらず、makefileも見つかりません。中止。 となってしまいます。 Apacheの方の makeはできたのに・・・。 なぜなのでしょうか(?_?) tar.gzの拡張シだし。 それか、VirtualBoxの設定をしないといけないのでしょうか? 分かる方、いましたら おしえていただきますでしょうか? ちなみに、phpのバージョンは5.3.3です。 もしかして、Perlがないと出来ませんか?
- phpとMysQLの連携がうまくいきません
現在phpとmysqlを連携させて、phpのフォームから文字を入力してmysqlのデータベース上からマッチした検索結果を表示するプログラムを作っているのですがなかなかうまくいきません・・・ お手数ですが詳しい方解答お願いいたします。 <html> <head> <title>PHP SEARCH RESULT</title> <meta http-equiv="Content-type" content="text/html;charset=utf-8"> </head> <body> <? $debug = false; //DB接続 mysql_connect("localhost","root","c0106426"); mysql_select_db("network"); if($debug) print_r($HTTP_POST_VARS); //エラーチェック //リクエストメソッドチェック if($REQUEST_METHOD != "POST") { print "Error: invalid method"; exit(); } //クエリ生成 $query = "SELECT * FROM yougo "; //検索条件生成 //用語 if(!empty($yougo)) { $yougo = yougo($yougo); $where .= "yougo REGEXP '$yougo' && "; } if(!empty($where)) { $where = substr($where, 0, -4); $where = "WHERE " . $where; } $result = mysql_query($query); $num_rows = mysql_num_rows($result); if($num_rows == 0) $message = "該当するデータはありませんでした"; else $message = $num_rows . "件ヒットしました"; ?> 検索結果<br> <?=$message?> <table border=1> <tr><td>用語</td><td>説明</td><td>講義回数</td></tr> <? while($row = mysql_fetch_assoc($result)): ?> <tr><td><?=$row[yougo]?></td><td><?=$row[sestumei]?></td><td><?=$row[kougi]?></td></tr> <? endwhile; ?> </table> <a href="search.html">再検索</a> </body> </html> このようなプログラムを書いているのですがうまく動作しません。。。 フォームからはyougoという形でpostで値をこのphpプログラムに渡しています。 データベースはnetworkという名前で テーブルはyougoid,yougo,sestumei,yomi,kougi,kai というテーブルがありまして yougoの文字を文字入力で検索して yougo,sestumei,kougi内の内容をテーブルで表示させたいのですが、 どうしてもうまくいきません。 よろしくお願いいたします。
- SESSION受け渡し
SESSION受け渡し 毎回大変お世話になっております。 PHP初心者なので、変な質問になっているかもしれないのですが、どうか分かる方はお付き合いください。 環境 PHP 文字コード:Shift-JIS SESSION01.php から SESSION02.php へSESSIONを受け渡した場合、統一されるはずのSESSION変数($_SESSION["name"])が2つ作成されてしまい、別々の変数として扱われてしまいます。 ・ソース SESSION01.php(SESSION送信側) <?php session_start(); $_SESSION["name"] = "1"; echo $_SESSION["name"]; ←変数の中身は[1] ?> SESSION02.php(SESSION受信側) <?php session_start(); echo $_SESSION["name"]; ←変数の中身は何も無し ?> ・SESSIONのディレクトリ sess_eo683vtfgl5qk6d2o31ghcjpn7 1KB sess_nq1cikn5uhdlnc9uvii6b8l281 0KB SESSION変数($_SESSION["name"])をSESSION01.phpとSESSION02.phpの両方で同じ変数として扱いたいのですが、別々の変数の様な扱いになっております。 なぜSESSION変数が統一されていないか分かる方がいらっしゃいましたら、どうかご意見をお聞かせください。