下記のスクリプトにおいて、画像イメージ全体をひとつのボタンと扱い、その中の長方形の部分をクリックした際に、result.phpにジャンプするアンカーを表示しようとしているのですが、画像の長方形部分をクリックしても、アンカーが表示されません。どこが間違っているのか、おしえていただきたいです。 [reserve.php] 前略 <?php if($_POST['cmd_x']>$start && $_POST['cmd_x']<$end && $_POST['cmd_y']>120 && $_POST['cmd_y']<160){ // 予約時間表示バーの長方形の内部をマウスクリックした場合 echo '<a href="result.php">予約結果</a>'; } 中略 echo '<form name="form2" method="post" action="reserve.php">'; echo '<input type="image" name="cmd" src="show_schedule.php">'; echo '</form>'; ?>
↧
画像イメージをボタンにしたときのクリック時
↧
phpのcurlでのエラー
ローカル、IIS8.5+PHP5.6環境で、PHPのcurlを用いてPDFファイルをアップロードするとエラーが出ます。 エラーは以下のようなものです。 === {"files":[{"name":"1425191187-473","size":221,"type":"multipart\/form-data; boundary=------------------------c4894a433c24bba9","error":"Filetype not allowed"}]} === どの点が問題なのかご教示いただけないでしょうか? PHP5.6の設定では、php.iniの「extension=php_curl.dll」の「;」のみを外しました。 また、ローカルPCにダウンロードしたcurl.exeコマンドからはアップロードできることを確認しました。 コマンド:「curl -F "files[]=@C:\Users\***\Desktop\***.pdf;type=application/pdf http://127.0.0.1/***/upload」 アップロードできないPHPソースは以下となります。 === $oname = '@C:\Users\***\Desktop\***.pdf;type=application/pdf'; $files = array( 'files[]' => $oname ); $url = 'http://127.0.0.1/***/upload'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8'); curl_setopt($ch, CURLOPT_POSTFIELDS, $files); curl_exec($ch); curl_close($ch); ===
↧
↧
array_walk_recursive
array_walk_recursive($arr,function(&$val,$key,$use_data){},$user_data); なんてしなくても array_walk_recursive($arr,function(&$val,$key)use(&$use_data){}); とすれば参照で渡せて無駄に複製もされないですよね… use使わずarray_walk_recursiveの第三引数を使う意味はあるんですか?
↧
Mysqlの接続方法について
cakePHP初心者です。 カテゴリが誤っていたようなので、再度質問させてください。 MySQLに接続しようとPDOの設定しようとしているのですが、 うまくいきません。 このサイトを参考にしているのですが、 http://teru2-bo2.blogspot.jp/2012/06/pdo.html $ ./configure --with-pdo-mysql=/usr/sbin/mysqld でmakeしても error: expected specifier-qualifier-list before ‘MYSQL’ error: expected specifier-qualifier-list before ‘MYSQL_FIELD’ error: expected specifier-qualifier-list before ‘MYSQL_RES’ と出てしまい、makeできません。 mysqldを指定しているのが誤りでしょうか。 サイトで指定している「/usr/local/mysql」というディレクトリが存在しませんでした。 ここで指定するディレクトリはどこが正しいのでしょうか。 データの置いてあるディレクトリが /var/lib/mysql/ だったのですが、こちらを指定すると、configureを打った時点で checking for mysql install under /var/lib/mysql... can not find it と出てしまいます。 mysqlのインストール先?のディレクトリを指定するんだろうなとは思うのですが、 それがどこかわかりません・・・。 どなたかご教示お願いします・・・。
↧
PHPからPDF書き出し
お世話になります。 PHPのメールフォームで入力・選択した情報(テキストやプルダウンメニューや画像のパス)を基に最終的に印刷用のPDF書き出しを行うことは可能でしょうか? イメージとしては、テンプレートと画像は高解像度のものをサーバーに置いておき、選択された情報を読み込んでサーバー内の高解像度の画像やテンプレートに置換えて書き出しを行うようなものといったとこですが、実現可能でしょうか? ざっくりとしすぎててすみませんが、今の私の中でのイメージはこんな感じとしかいえません。 どなたかご教授をお願いいたします。
↧
↧
SQLServerへodbc接続トランザクション
PHP 5.6.3 SQLServer 2014 IIS 8.5 Web上からPHPへPOSTし、SQLServerへODBC関数(http://php.net/manual/ja/ref.uodbc.php)を使用して接続しています。 その際「odbc_autocommit」を使用しトランザクションをかけているのですが、 同時にDBへ登録(Insert、Delete)をしたときに競合してしまいました。 そもそも「odbc_autocommit」の挙動として、 (1)A端末からDBへ接続 (2)A端末から「odbc_autocommit」を使用しトランザクション (3)B端末からDBへ接続 (4)B端末から「odbc_autocommit」を使用しトランザクション (5)A端末からTEST_TABLEへInsert (6)B端末からTEST_TABLEへInsert 上記手順の(4)の動作の際に、A端末の操作が終わるまでBは待たされるorエラーでかえると想定していたのですが・・・ ----------------------------------------------------------- $serverCon = odbc_connect($serverName,$userName,$password); if($serverCon === false){ $strMsg = ERRMSG_DBCONNECT; writeLog($strMsg, DEBUG_LOG); jumpSystemErrPage(); exit(); } $boCon = true; // 自動コミットをさせないようにする $a = odbc_autocommit($serverCon,false); if($a === false){ $strMsg = ERRMSG_DBCONNECT; writeLog($strMsg, DEBUG_LOG); $aaaa = odbc_errormsg($serverCon); writeLog($aaaa, DEBUG_LOG); jumpSystemErrPage(); exit(); } ----------------------------------------------------------- 確認方法として A端末にてデバッグ状態から上記ソース上の if($a === false){ の行でブレイクしてる最中に B端末から普通に実行した際に $aがfalseのルートに通らずそのまま次の処理へ行ってしまいました。 PHPのODBC接続で更新中にトランザクション(ロック)をかけるのはできないのでしょうか? それとも自分のやり方が間違っているのでしょうか? よろしくお願いします。
↧
タイトル画像を中央に寄せる方法はありますか?
stinger3を利用してタイトルをテキストから画像に変更しました。 その後にタイトル画像を中央に寄せる方法はありますか? ワードプレス初心者です お手柔らかにお願いします。
↧
パーマリンクの修正
ワードプレスのパーマリンクを修正したいのですがアドバイスいただけると嬉しいです。 @htaccess RewriteEngine on RewriteCond %{THE_REQUEST} ^index.html RewriteRule ^index.html$ http://hoge.jp/ [R=301,L] RewriteCond %{REQUEST_URI} ^/(cat|cat2|page|page2)$ [NC] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index_wordpress.php [L] RewriteCond %{REQUEST_URI} ^/(cat|cat2)/ [NC] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index_wordpress.php [L] <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> @WP設定 カスタム構造 /%category%/%postname%.html カテゴリーベース . 上記設定で 記事は/cat/XXX.html カテゴリーは /cat となっています。最後にスラッシュを入れてもなぜか消えてしまいます。 カテゴリー時の表示を、/cat/にしたいのですが、 無理があるでしょうか。 よろしくご教授ください。 wordpress4.1使用です。 同じサイトでyiiと同居しています。
↧
YouTube APIで特定の再生リスト情報を取得
YouTube API初心者です。 PHPを使用して、YouTube API v3から特定の再生リスト情報を取得しようとしたのですが、 Fatal Errorが発生してしまって先に進めず、困っております。 // 定数定義 define('API_KEY', '※Google Consoleで取得したAPIキー'); define('PLAY_LIST_ID', '※再生リストのID'); // 引用定義 require_once 'google-api-php-client-master/src/Google/autoload.php'; // インスタンス作成 $client = new Google_Client(); $client -> setDeveloperKey(API_KEY); $youtube = new Google_Service_YouTube($client); // リクエスト送信 $conditions = array('playlistId' => PLAY_LIST_ID, 'maxResults' => 50); $playListItems = $youtube -> playlistItems -> listPlayListItems('snippet,contentDetails', $conditions); // データ取得 foreach($playListItems['items'] as $item) { echo 'Video ID:'. $item['contentDetails']['videoId']. '<br />'; echo 'タイトル:'. $item['snippet'] -> title. '<br />'; echo '公開日:'. date('Y/m/d H:i:s', strtotime($item['snippet'] -> publishedAt)); } このようなプログラムを作成したのですが、 実行してみると以下のようなエラーが発生してしまい、先に進めません。 Fatal error: Uncaught exception 'Google_Service_Exception' with message 'Error calling GET https://www.googleapis.com/youtube/v3/playlistItems?part=snippet%2CcontentDetails&playlistId=[※再生リストID]&maxResults=50&key=[※APIキー]: (403) There is a per-IP or per-Referer restriction configured on your API key and the request does not match these restrictions. Please use the Google Developers Console to update your API key configuration if request from this IP or referer should be allowed.' in google-api-php-client-master/src/Google/Http/REST.php:110 Stack trace: #0 google-api-php-client-master/src/Google/Http/REST.php(62): Google_Http_REST::decodeHttpResponse(Object(Google_Http_Request), Object(Google_Client)) #1 [internal function]: Google_Http_REST::doExecute(Object(Google_Client), Object(Google_Http_Request)) #2 google-api-php-client-master/src/ in google-api-php-client-master/src/Google/Http/REST.php on line 110 エラーの内容からして、APIキーに設定されているリファラーの問題かと思ったのですが、 GoogleコンソールのAPIキー管理画面で、リファラーには ドメイン名、サーバーIPアドレス、localhostを既に設定しているので、 他に何を設定すれば良いのかが全く分かりません。 どなたか、解決策をご存知の方がいらっしゃったら、 教えていただけないでしょうか。 どうぞよろしくお願い致します。
↧
↧
cakePHPでFormを使用したDBへの登録
cakePHP初心者です。 ブラウザで入力画面→確認画面→完了画面と遷移して、 DBに入力した値を登録する基本の動きをさせたいのですが、 Controllerの動きが分かりません。 Viewのファイルを 入力画面:entry.ctp 確認画面:confirm.ctp 完了画面:complete.ctp とします。 1.SampleControllerからentryページを表示 public function entry(){ } 2.etntry.ctpでFormを作成 <?php echo $this->Form->create('Sample', array('action' => 'confirm')) . PHP_EOL; ?> 3.SampleControllerでconfirmメソッドが呼ばれる public function confirm(){ if($this->request->is('post')){ データを画面にセット? } } 4.confirm.ctpが表示され、登録ボタンを押すと完了画面にFormを作成 <?php echo $this->Form->create('Sample', array('action' => 'complete')) . PHP_EOL; ?> 5.SampleControllerでcompleteメソッドが呼ばれる public function confirm(){ if($this->request->is('post')){ バリデーションチェック後、DBに登録? } } この流れでよいのでしょうか。 完了画面のcompleteでバリデーションチェックを行うことに違和感を感じています。 仮にconfirmで実施するとしても、書き方が良く分かりません。 <?php echo $this->Form->create('Sample', array('action' => 'confirm')) . PHP_EOL; ?> と書いたら、3の処理とかぶってしまいますよね・・・? 説明分かりにくくてすみません・・・。 ネットで調べつつやっていたのですが、一連の流れをすべて書いたサイトに見当たらず、 途方に暮れています。 どなたかご教示お願いします。
↧
フリー掲示板PHP
条件は、 1.データベースを使用しない 2.スレッドごとの表示も可能 3.投稿者自身と管理人がレス削除できる 4.記事にレス可能 で、 できれば下記の条件も合えば助かります。 文字コードUTF-8 よろしくお願いします。
↧
phpで会員制サイト制作の勉強をしています。
phpで誰でも投稿できる記事サイトの制作を勉強中です。 pdoでmysqlデータベースに接続しています。 今までローカル開発環境のxampp内で学習していたのですが、 さくらレンタルサーバーのスタンダードプランで契約して、 レンタルサーバーとローカル開発環境の違いに苦戦しています。 さくらレンタルサーバーはスタンダードプラン以上でCRONを使えるとのことで、 毎日0時に有効期限が切れた仮登録用IDを削除する旨のプログラムが書いてある phpファイルを実行したいのですが、 設定がうまくいっていないのかCRONが実行されません。 phpファイル(delete.php)はwwwの前に置いています。 CRONの実行コマンドには cd /home/アカウント; /usr/local/bin/php delete.php と入力しています。 phpファイル単体だとうまく動きました。 実行コマンドが間違っているのでしょうか? または、phpファイルにCRONを使用する場合の特別な記述が必要なのでしょうか? ちなみにphpファイル内にはsql文の他に foreach文やwhile文、time()関数も使用しています。 使用している関数が悪影響を与えている可能性はありますでしょうか? (require文やinclude文は使用していません。) ネットで色々調べた程度の知識の為、 何が間違っているか分からず困っています。 お分かりになる方はご教授頂けると有難いです。 ご回答、よろしくお願いします。
↧
htmlでユーザーが画像を貼り付けられるか
htmlでユーザーがテキストを入力するフィールドと同様に、自由に画像を貼り付けられるフィールドを定義することができるか。 できるとしたら、どういうhtmlを書けばいいか。 またその貼り付けた画像をMySQLのmediumblobフィールドに保存する場合、どういうphpコードを書けばいいか、を教えてほしい。
↧
↧
phpのsessionとcookieについて
質問は以下に2つです。 プログラムの説明は、pass,idから認証を行い、sessionidを発行します。二度目の以降はsessioidから認証します。 sidpost.phpからpostでIDとパスワードを入力させます。 データベースはid, pass, sidの3つのカラムがあります。 <?PHP require_once'DB.php'; session_name("sid"); session_start(); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <?php $id = $_POST['id']; $pass =$_POST['pass']; $cookie = $_COOKIE['sid']; $sid = session_id(); //データベース参照 //プレースホルダーを使用 //id からpassを参照する //cookie から sidを参照する $data=$sth->fetchRow(DB_FETCHMODE_ASSOC);//参照したデータを$dataの連想配列に格納 //sid保存のプレースホルダー $sth2 = $dbh->prepare('UPDATE accountid SET sid=? WHERE id=? AND pass=?'); //cookieが保存されていない場合 if(!isset($cookie) && isset($pass) && isset($id)){ //idとpassから認証 if($pass === $data['pass']){ $sth2 = $dbh->execute($sth2, array($sid, $id, $pass)); echo "初めてのログインsid登録"; } //sidがある場合cookieとデータベースのsidを比較 }else if(isset($cookie)){ if($cookie == $data['sid']) echo "sidあり成功"; //クッキーがあり、データベースと一致しない場合,sidを破棄する }else{ echo"あるはずのクッキー" .$COOKIE['sid']."<br>"; $_SESSION=array(); setcookie('sid', '', time()-3600); session_destroy(); echo "ないはずのクックキー".$_COOKIE['sid']; } //それ以外は入力フォームにリダイレクト }else{ header("location: ./sidpost.php?error=error"); } $dbh->disconnect(); ?> </body> </html> 上のようなセッション管理のプログラムを書きました。 質問は2つありまして、 ・1つめは、通常セッション管理を行う際の、条件はどのようにするのが一般的ですか? IDとパスワードがデータベースと一致する場合としない場合の2通り、cookieがある場合、ない場合の2通り、もしcookieがある場合は、データベースの値と一致する場合としない場合の2通りが考えられます。一番最適な条件文はどのようにすればよいでしょうか? またその処理はどのようにすればよいのでしょうか。 例えばcookieがあり、データベースと一致しない場合、$_SESSIONの初期化、setcookieでクッキーの削除、session_destroy()するなど。。。なにかよくわからなくなってしまいました。 ・二つ目は、 上のプログラムではじめsession_name('sid')およびsession_start()を宣言し、クライアントとサーバに$sid=session_idを発行しています。なので、$_COOKIE['sid'];の値には session_id()($sid)になっているはずです。 下のほうで、セッションの管理を行う際、 //クッキーがある場合 else if(isset($cookie)){ if($cookie == $data['sid']) echo "sidあり成功"; //クッキーがあり、データベースと一致しない場合,sidを破棄する }else{ echo"あるはずのクッキー" .$COOKIE['sid']."<br>"; $_SESSION=array(); setcookie('sid', '', time()-3600); session_destroy(); echo "ないはずのクックキー".$_COOKIE['sid']; } クッキーがあり、データベースと一致しない場合に、sessionおよび、cookieの破棄をしています。この前後でechoをもちいて$_COOKIE['sid']の値を出力すると、 破棄するの前のechoでクッキーが表示されず、 破棄したあとのechoでクッキーが表示されました。 なぜこのような結果になるのですか、逆では?と思いました。
↧
PHPのフレームワークとはどれがいいのでしょうか
私は、PHPを使ってWEBのシステム構築に携わっております。 いままではフォームの組み込み等の簡単なものだったため、 PHPを記述して対応しておりましたが、大きいシステムのお話などが 出てきだしており、システムの作成をもっと効率化できないかなど 自分のステップアップを考えております。 ある程度の規模に対応でき、システム開発が柔軟に行えるようなPHP フレームワークはございますでしょうか。 Cake PHPやFuelPHP等が出てきますが、多数の種類があるため、 利用者様や学習者様のお声をお聞きしたく、質問をさせていただきました。 DBを利用することも多々ありますので、DBとの連携も容易なものがありがたいです。
↧
webプログラマーになるには
私は現在60歳です。30年間広告のグラフィックデザイナーをしていましたが、大病してしまいできなくなりました。工作ができなくなりました。パソコンのキーボード操作は出来ます。そこでweb制作を中心にしていきたいと思うようになりました。特にwordpressがすきなので、プラグインの作成であったり、PHPの開発によりより高機能なWebサイトを構築できればと考えてます。どなたか、何から勉強していけばよいかアドバイスをお願いいたします。 目標は、ユニクロのようなスタイリッシュなサイトです。
↧
httpd.confのmod_rewite設定
下記のようにMAMPのhttpd.confの一番下にmod_rewite設定のため行を追加したのですが 動作しません。 ※ちなみにURLをmod_rewite設定で http://localhost/○○○/index.php?category=△△△△△ を http://localhost/○○○/△△△△△ にする予定です。 よろしくお願いいたします。 RewriteEngine On RewriteCond %{REQUEST_URI} ^/○○○○/?(.*)$ RewriteCond %{QUERY_STRING} (^|&)category=([^&]+)($|&) RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)$ index.php?category=$1 [QSA,PT] RewriteLog tmp/rewrite.log RewriteLogLevel 3
↧
↧
php.iniのinclude_pathのデフォル
php.iniのinclude_pathのデフォルト値にたいして質問です。 現在PHP 5.6.6 をremi-56のリポジトリから、centos6にインストールしました。 そして、phpinfoを確認すると、 「include_path」の欄に「.:/usr/share/pear:/usr/share/php」とありました。 しかし、「php.ini」の中を検索しても、include_pathは、「;include_path = ".:/php/includes"」などのようにすべてコメントアウトされていました。 phpインフォをみたとき、include_pathに「「.:/usr/share/pear:/usr/share/php」が設定されているのは、デフォルトで決まった値なのでしょうか? どこか、設定ファイルにその値がかかれたりしているのでしょうか? httpd.confを検索しても、phpのパスを設定している様子もなく、.htaccessなども設置してないので、一体このデフォルト値はどこから来てるのか不思議です。 分かる方いましたら教えてもらえないでしょうか?
↧
wordpressでショートコードを利用する。
wordpressでショートコードを利用し、固定ページ内で検索したSQL結果を同じページ内に返すためにはどうすればよろしいでしょうか。 やりたいことは以下の通りです。 固定ページ内にフォームを設置し、指定されたキーワードをPOSTして同一ページ内で渡し、 そのPOSTされたデータをSQLに付加してデータベース内を検索します。 /** 検索フォームを設置する。 * */ print "<form action=\"http://www.abcd.com/?page_id=22\" method=\"post\">"; //同一ページ内に返すためにはパーマリンクを使うとの情報があったのでパーマリンクの値を直接しています。 print "<input type=\"text\" name=\"search\">"; print "<input type=\"submit\" value=\"検索\">"; print "</form>"; /** * 検索フォームに検索ワードが指定されている場合は、LIKE検索する。 */ if ( isset( $_POST['search'] ) ) { $search = $_POST['search']; $search = "'%{".$search."}%'"; $sql = $pdo->query("SELECT a,b,c,d FROM table WHERE (concat(a,b,c,d) LIKE :search"); $data = pager_search($sql); } else { $sql = $pdo->query("SELECT a,b,c,d FROM table"); $data = pager_search($sql); } データベースを検索した結果は、$sqlに格納されpager_search()関数に渡されます。 しかし、 Fatal error: Call to a member function fetchAll() on a non-object in /var/www/html/wp-content/themes/kotetsu/functions.php on line 332 検索結果が空白のようで、pager_search()内のfetchall()でエラーとなります。 なお、SELECT a,b,c,d FROM table WHERE (concat(a,b,c,d) LIKE %{ISBN}%; としてデータベース内で直接SQL文を発行すると正常に検索結果が表示されます。 $sqlに空白ではなく、検索結果を格納するためにはほかにどのような処理が必要になるのでしょうか。 お力添えを頂けますと幸いでございます。 よろしくお願い申し上げます。
↧
WPテーマHuemanでの投稿日時
トップページの投稿一覧(index.php)で、日付が「17 3月, 2015」のように表示されるのですが、これを「2015年3月17日」のような形式に直したいです。 どこをどう変えればいいのでしょうか?
↧