検索結果
PHP
- 全てのカテゴリ
- 全ての質問
- PHP disconnect()でエラー
WAMP初級者です。 いままでPEAR::DBを使って書いていたサイトがあり、PDOを利用するように書き換えています。 画面が真っ白になる現象に陥り、他の投稿によりご指導いただき、画面にエラーが表示されるようになったものの、エラーの対処方法がわからず、どなたかご指導いただければと思います。 コードを一つずつコメントアウトして画面が真っ白になるポイントをさぐったところ、問題の箇所がみつかりました。(ここをコメントアウトすると画面がちゃんと表示され、コメントアウトしないとエラーのみの白い画面がでてしまいます。) ●問題の記述 $connection->disconnect(); ●表示されるエラー Fatal error: Call to undefined method PDO::disconnect() in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\test\test2.php on line 406 そもそもこの記述は必要ないのでしょうか? このページ自体は、あるDBからユーザーが検索をした結果が表示されるページになっていて、 まず、以下のように接続をしています。 // 接続 $connection = new PDO('mysql:host=127.0.0.1;dbname=test_db;charset=utf8','root','root', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, ) ); そのあと、クエリをくみたて、prepareして、値をbindValueしてexecuteして、テーブルを表示させるようにしています。 不特定多数のユーザーが検索をするので、事が終えたらdisconnectしないとダメなんじゃないかな、と思ってつけてみたんですが。。特に不要なのでしょうか。 初歩的な質問ですみませんが、どなたお助けいただけますと幸いです。 環境はApache/2.2.4 (Win32) PHP/5.4.22です 宜しくお願い致します。
- php.infoって何。
WEB開発業者にレンタルサーバーの情報を渡したいのですが、 php.infoの情報を渡したら、セキュリティ的に問題ありますか?
- ベストアンサー
- レンタルサーバ・ASP
- noname#204675
- 回答数2
- PHP 掲示板記述
現在、PHPで掲示板をメモ帳で作成しています。 今回は、よくよく分からないものを記載! PHPタグ================================= <?php // 保存するログファイル名 $LOGFILE = "log.txt"; … (1) // POST で mode = write の属性が送られていたら書き込み処理 if ($_POST["mode"] == "write") { … (2) $name = $_POST["name"]; … (3) $message = $_POST["message"]; $date = date("Y/m/d H:i:s"); … (4) if (file_exists($LOGFILE)) { … (5) $lines = file($LOGFILE); … (6) } $fp = fopen($LOGFILE,"w"); … (7) fputs($fp,"$name,$message,$date\n"); … (8) for ($i=0;$i<count($lines);$i++) { … (9) fputs($fp,$lines[$i]); … (10) } fclose($fp); } ?> PHP 解説よくよく分からない=========== (1) では変数で説明した変数に保存するファイル名を指定しています。ファイル名は保存、読み込みのところで複数回つかうので使いまわしできるように変数に入れています。 (2) では前ページで説明した、 <input type="hidden" name="mode" value="write"> でフォームから送られる情報を $_POST["mode"] で受け取って、その値が "write" かどうかチェックしています。 「投稿する」ボタンを押してサーバに情報が送信される際に mode=write も送られていますので、それを if文で判定しています。通常のアクセスでは mode=write が送られないため、書き込み処理を行わないという感じです。 (3) では(2)同様、フォームから送られた name の情報を受け取って $name という変数に入れています。 (4) では現在の日付を取得しています。PHPには date 関数という代物があって簡単に現在の日付を取得できます。 (5) ではファイルが存在するかチェックしています。 file_exists関数でファイルが存在するか調べています。 (6) では file 関数によって配列にデータをすべて入れています。なぜここでデータを変数に入れるかというと、新しく投稿されたデータを1行目に書き込んで、残りに古い情報を書き込むためです。 なまえ,メッセージ,2005/02/06 なまえ,メッセージ,2005/02/06 なまえ,メッセージ,2005/02/06 青が新しく投稿された情報で赤が元々保存されていたふるい情報 (7) ではこれから書き込むのでfopen関数でファイルを書き込みモードで開いています。 (8) では開いたファイルにfputs関数で書き込んでいます。名前、メッセージ、日付をカンマ区切りで1行にしてファイルに書き込んでいます。 (9),(10) では古いファイルの情報(投稿前に書き込まれていた情報)を書き込んでいます。これを行わないと、新しく投稿された情報は書き込まれますが、古い情報が消えてしまうのでこの処理をしています。 PHPの解説でよくわからないので、お答えしてください。 ♪♪宜しくお願いします。♪♪
- ベストアンサー
- PHP
- kodoryu2013
- 回答数3
- phpの質問です。
phpの質問です。 下記サイトを参考に http://tenderfeel.xsrv.jp/php/861/ [php] ワンタイムURLの作成と登録確認のメール送信のテストをしています。 index.php <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>テスト</title> </head> <body> スタッフ追加<br/> <br/> <form method="post" action="send.php"> メールアドレスを入れてください<br/> <input type="text" name="mail" style="width:200px"><br/> <input type="button" onclick="history.back()" value="戻る"> <input type="submit" value="OK"> </form> </body> </html> send.php <?php $tokendir = dirname( __FILE__ ). DIRECTORY_SEPARATOR ."token" . DIRECTORY_SEPARATOR; if($_POST["mail"]==""){ print "メールアドレスを入力してください"; }elseif(mb_strlen($_POST["mail"])> 0 && !preg_match("/^([a-z0-9_]|\-|\.|\+)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,6}$/i",$_POST["mail"])){ print "メールアドレスの書式に誤りがあります。"; }else{ print "確認メールを送信しました"; mail_to_token($_POST["mail"]); } if(isset($_GET["key"])){ if(delete_old_token($_GET["key"])){ print "登録完了しました。"; }else{ print 'もう一度初めからやり直してください。'; } } function mail_to_token($address) { global $tokendir; $limit = (time()+3600); $token= rand(0,100).uniqid();//トークン touch($tokendir.$token.".log");//トークンファイル作成 $url = $_SERVER["HTTP_REFERER"]."?key=".$token; file_put_contents($tokendir.$token.".log", $limit, LOCK_EX);//期限保存 delete_old_token($token);//古いトークン削除 //本文スタイル $message="登録を完了するには、以下のアドレスを開いてください。\n60分以内にアクセスが無かった場合は無効となります。\n"; $message.=$url."\n\n"; my_send_mail($address,'登録確認',$message); } function delete_old_token($token = NULL) { global $tokendir; if (is_dir($tokendir)) { if ($dh = opendir($tokendir)) { while (($file = readdir($dh)) !== false) { if(is_file($tokendir.$file) && is_null($token)){ $data = file_get_contents($tokendir.$file); if(time()> $data) unlink($tokendir.$file); }else if(is_file($tokendir.$file) && !is_null($token)){ if(time() <(filemtime($tokendir.$token.".log")+3600) ){ @unlink($tokendir.$token.".log"); return true; }else{ @unlink($tokendir.$token.".log"); return false; } } } closedir($dh); } } } function my_send_mail($mailto, $subject, $message) { $message = mb_convert_encoding($message, "JIS", "UTF-8"); $subject = mb_convert_encoding($subject, "JIS", "UTF-8"); $header ="From: WebTecNote <info@example.com>\n"; mb_send_mail($mailto, $subject, $message, $header); } ?> ◎参考サイトを微調整して上記ソースを作成。 ◎ドキュメントルートにtokenフォルダを作成。 メール送信とトークンは無事来ましたが、 if(isset($_GET["key"])){ if(delete_old_token($_GET["key"])){ print "登録完了しました。"; }else{ print 'もう一度初めからやり直してください。'; } } 上記の部分のクリックして「登録完了しました。」が作動しません。 なぜでしょうか?
- ベストアンサー
- PHP
- shousen412
- 回答数3
- PHP チャット 画像他
PHP初心者です。 どうかご教示お願い致します。 現在、リアルタイムなチャットを実装しようと 考えているものです。 下記のページで、サンプルがあり実行できました。 http://studio-key.com/122.html この機能に、入力した人は右に その他のユーザーは左にと、いわばライン風な 表示にしたいのと、 画像を送信する、機能をつけたしたいのですが、 どのようにするのでしょうか? 上記のサイトにそのような、サンプルはあったのですが、 同じよう実行しようとすると、 上手くいきませんでした。 当方、Perlでは画像投稿掲示版は作成できます、 下記のソースのような(一部抜粋) ソースで書いて画像投稿しておりますが my $img = $form->param('img'); my $data; while(read($img, my $tmp, 1024)){ $data .= $tmp; } my $filename = "img/" . $img; open(OUT,">","$filename"); binmode OUT; print OUT $data; close(OUT); } PHPではどのように記述するのでしょう? 上記のサイトのサンプルでどこにどのようなソースを埋め込む のでしょうか? ユーザーの右左はPerlでも実行したことはありません。 これは、Cookieで実行するものでしょうか?
- 締切済み
- PHP
- perlhogehoge
- 回答数4
- PHP シェルスクリプト 引数
失礼します。現在PHPからシェルスクリプトを引数を付けて実行し、戻り値で確認が出来るか試しているのですがなかなか参考になる記事がなく実現が出来ない状態です 調べたところ、 phpからhoge.shというシェルファイルをargという引数で実行したいとします。 引数を"'. .'"で囲う事で、引数を渡せるようです。 $output = shell_exec('/bin/sh /path/to/hoge.sh "'.$arg.'"') var_dump($output) 上記のような記事を見つけたのですがhoge.shはどのように$argを受け取り、戻り値を渡しているのでしょうか?また、$argの値の中身は渡す引数の内容という認識で正しいのでしょうか?サンプルコードなどがあるとうれしいです。 ご教授よろしくお願い致します。
- php print echo クリック
php初心者のものですがよろしくお願いいたします。 たとえばですが データベースに商品のデーターが3つ入ってたとします。 DBからその3つのデータを取り出し PHPのprint または echoで取り出した商品を並べ それをクリックし商品詳細画面に行きたいのです。 [例] みかん りんご バナナ この みかんやりんごバナナをクリックできるようにしたい。 なにか参考になるソースコードなど教えていただければ幸いです。
- ベストアンサー
- PHP
- a7a7a77a7a74
- 回答数2
- PHP 画像の表示
プログラミング初心者です。 PHPでブラウザに画像を表示したいのですが映らなくて 以下のソースコードは間違っているでしょうか? <?php $fileName = "img/test.jpg"; //ファイル名 if (file_exists($fileName)) { header('Content-type: image/jpeg'); header('Content-Length: '.filesize("http://localhost:8080/test.jpg")); //あった方が良い readfile("http://localhost:8080/test.jpg"); //ファイルを読み込んで標準出力に書き出し exit; } ?>
- ベストアンサー
- PHP
- shin11shin
- 回答数1
- PHPのエラーメッセージ
HTML文書からPHPに送ったファイル名のついたファイルをunlink()関数で削除しようとしているのですが、添付したスクリーンショットのようなエアーメッセージが出てきて進めません。 PHPのコードは下のようなものです。 <!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title> QAdeleteFile.php</title> </head> <body> <?php $FileName=$_POST["deleteFileName"]; $FileName="C:\\xampp\\htdocs\\".$FileName; echo $FileName ; unlink($FileName); echo "<form id='next' method='POST' action='QAgmeOver.php' >"; echo "<input type='submit' value='call QAgameOver' >"; echo "</form>"; ?> <!-- <script type="text/JavaScript"> window.document.getElementById("next").submit(); </script> --> </body> </html> エラーメッセージで言っているQAgameOver.phpというのは上に挙げたコードのプログラムです。このメッセージでは、PHP はそのファイルをこのプログラムの中で探そうとしているように見えますが、そのファイルは当然ローカルサーバーのルートであるhtdocs の中に置いてあります。 なぜこうなるのでしょうか?詳しい方、どうか教えてください。
- ベストアンサー
- PHP
- papashiroSooke
- 回答数2
- phpについて
phpで質問です。 データベースから引っ張ってきたデータを while文の中にechoでa href="article?tag=row[3]"を表示させたいのですがどうすればいいですか? while( $row = $res->fetchArray() ) { echo '<a class="link_button" href="articletable?tag='.$row[3].'" method="get"">'.$row[3].'<span>'.'</a>'.''<a class="link_button" href="articletable?tag='.$row[4].'" method="get"">'.$row[4].'<span>'.'</a>' } また、if文でrow3もしくはrow4がnull(何も書いていない)の時, 強制的に「a href="article?tag=more」にさせたいのですがどうすればいいですか?
- 配列の計算(PHP)
(1)[m1,14,5,3] (2)[m1,14,3,5] (3)[m2,28,1,30] (4)[m1,28,2,10] ・ ・ 続く ・ このような配列を、[a,b,c,d]とします。 c*d/10を五捨五超入してから、bをかけて((1)なら1.5=1、1*14=14)、(1)~全てを足し合わせるという作業が基本で、【その中でも、aとbが同じもの同士(上記で言う(1)と(2))の場合だけは、それぞれのc*d/10を足しあわせてから五捨五超入してbをかける((1)と(2)なら1.5+1.5=3、3*14=42)】 この計算式をphpで作ろうと思っていますが、思いつきません。。。 わかる方おりましたら、ご教授よろしくおねがいします。
- php表に変換
php表に変換についての質問 メモ帳に時計、300、50、布団、200、30、本、50、40 などと打ちむと商品名、単価、数量、小計、合計を表にして表してくれるphpを作りたいのですが メモ帳を読み込むところまでできたのですがそこからなかなか進みません どなたかご教授ください <? $filename ="test.txt"; if(is_readable($filename) { $contents = file_get_contents($filename); print$contents; }else{ print$filename."は読み込めません。 "; } ?>
- php、MySQL、javascriptで
php MySQL javascriptを使ったウェブアプリを作っています。 商品コードを入力すると、隣の欄にその商品コードに対応する商品名と価格が表示され、それにより入力した商品コードを確認しながら、さらにその隣の個数欄に個数を入力し、その下の登録ボタンをクリックして、注文票に商品を追加していきます。 数品のレコードを登録し、登録が完了したら、最下部の「この内容で注文票を確定する」ボタンをクリックすることにより、注文票が確定されるという内容の部分があります。 その上手な作り方があるでしょうか。 とりあえず、力技で何とか作って動いてはいますが、あまりスマートでないと感じています。 Submitボタンが2つと、商品コードを入力した後に、onBlurで処理ページに移動し、そこからLocationで戻ってくるという作りで、変数の受け渡しにPOSTやMySQLを使い、強引な感じです。 getElementByIdを使うといいかなと思いましたが、phpに値を渡すなど、いくつか難しい箇所があり、断念しました。 コードでなく、言葉でも結構ですから、こういう流れで作ったら?というヒントなどいただければ幸いです。 同様なことを実現しているページや解説ページも大歓迎です。 もちろん、コードによる説明は大歓迎です。 よろしくお願いいたします。
- ベストアンサー
- PHP
- fitzgerald18
- 回答数2
- PHP初心者です。
PHP・Mysql超初心者です。掲示板を自分で考えて作っているのですが、 わからないところがあり困っています。 管理登録画面で管理noと品名を入力し、登録をクリックするとMysqlに データを保存します。 管理表の画面で、品名(上記のMysqlから品名をセレクトボックスで 表示)と注文数を入力し、Mysqlに保存したいのですが、その命令の 所でエラーが出ます。 書き方やセキュリティ等は無視して下さい。 どなたかご教授下さい。 //管理登録画面 *kanri.html <html> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> <body> <form method="post" action="touroku.php"> <h3>管理登録</h3><br> NO:<input type="text" name="no"><br><br> 品名:<input type="text" name="hinmei"><br><br> <input type="submit" value="登録"> </form> </body> </html> *touroku.php <html> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> <body> <? $no=$_POST["no"]; $hinmei=$_POST["hinmei"]; $db=mysql_connect("***","***","***") or die("接続失敗"); print("デ―タベースサーバーに接続できました<br>"); mysql_select_db("***")or die("データベースが見つかりません".mysql_error()); print("データベースに接続しました<br>"); $a="insert into kanri_list(no,hinmei)values('$no','$hinmei');"; mysql_query($a)or die("命令が違います"); $a="select * from kanri_list;"; $kekka=mysql_query($a)or die("命令が違います"); mysql_close($db); ?> 登録しました!<br><br> </body> </html> //管理表 *kanri.php <html> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> <body> <form method="post" action="kanri1_1.php"> <h2>管理表</h2><br> 品名:<select name="kanri"> <? $kanri=$_POST["kanri"]; $db=mysql_connect("***","***","***") or die("接続失敗"); mysql_select_db("***")or die("データベースが見つかりません".mysql_error()); $a="select * from kanri_list;"; $kekka=mysql_query($a)or die("命令が違います"); while($b=mysql_fetch_array($kekka)){ print("<option value='".$b[1]."'>".$b[1]."</option>\n"); } mysql_close($db); ?> </select> <br> 注文数:<input type="text" name="kazu"><br> <input type="submit" value="登録"> </form> </body> </html> 上記の登録ボタンを押すと「命令が違います」とエラーが出ます。 *kanri1_1.php <html> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> <body> <? $kanri=$_POST["kanri"]; $kazu=$_POST["kazu"]; $db=mysql_connect("***","***","***") or die("接続失敗"); mysql_select_db("***")or die("データベースが見つかりません".mysql_error()); $a="insert into kanri1_list(kanri,kazu)values('$kanri',$kazu');"; mysql_query($a)or die("命令が違います"); $a="select * from kanri1_list;"; $kekka=mysql_query($a)or die("命令が違います"); mysql_close($db); ?> 登録しました!<br> </body> </html>
- PHP / MySQL / クエリ実行
【概要】 PHPからMySQLへのクエリを実行したいのですが、結果が返りません。 【環境】 CentOS5 [PHP5] sakuraインターネット レンタルサーバ スタンダートプランです。 参考:http://www.sakura.ne.jp/rentalserver/matrix.html 【ソース PHP】 ------------------------------------------------------------ $query = mysql_query(' SET @i := 0; SET @ii := 0; SET @iii := 0; SET @iiii := 0; select `sys_no`,`day`,`counter`,(@iiii := @iiii +1)as `counter2` from (select `sys_no`,`name`,`day`,(@i := @i +1) as `counter` from TBL名 ORDER BY `day` DESC ) as aa where counter BETWEEN (select a.counter from (select `sys_no`,`day`,(@ii := @ii +1) as `counter` from TBL名 ORDER BY day DESC ) as a where sys_no =5) - 1 AND (select a.counter from (select `sys_no`,`day`,(@iii := @iii +1) as `counter` from TBL名 ORDER BY day DESC ) as a where sys_no =5) + 1 '); while ($row = mysql_fetch_array($query)) { 結果取得処理 } ------------------------------------------------------------ ・上記をPHPより実行しますと、「while~」の部分で結果が無いとエラーが返ります。 ・phpMyAdminから直接クエリの部分のみを実行しますと、問題無く結果が返ります。 ・なお、クエリを簡単な一行程度の内容にしますと問題無く実行され、結果が返ります。例:select * from TBL名 ・また、上部にセットしている4つのSETを試しに削除した状態でPHPより実行しますと、結果は返りませんがエラーにはなりません。 以上、アドバイス頂戴できますでしょうか。 よろしくお願い致します。
- php Undefined variableエラー
下記ファイルを実行した際、Notice: Undefined variable: pElement in C:\xampp\htdocs\scrape_func.php on line 31とエラーが出てしまいます。どこに問題がありますでしょうか?初歩的な質問かと思いますが、よろしくお願い致します。 <?php /* スパイダリング関数群のインクルード */ include( "scrape_func.php" ); /* getURL関数を使用して、ページの生データを取得する。 */ $_rawData = getURL( "http://www.oreilly.co.jp/catalog/soon.shtml" ); /* 生データをutf-8に変換する。 */ $_rawData = mb_convert_encoding($_rawData, "UTF-8", "auto"); /* 解析しやすいよう、生データを正規化する。 */ $_rawData = cleanString( $_rawData ); /* 次は若干ややこしい。 必要な項目の開始部分と終了部分は、事前にhtmlから確認してある。こういったものを利用して必要なデータを取得する。 */ $_rawData = getBlock( "<font COLOR=\"#80000\">", "</td></tr>", $_rawData ); /* これで箇条書きに必要な特定データを入手できた。ここでは項目を配列化した後、繰り返しによって、処理を行っている。 */ $_rawData = explode( "<P>", $_rawData ); /* 繰り返しを行いながら、個々の項目を解析する。 */ foreach( $_rawData as $_rawBlock ) { $_item = array(); $_rawBlock = trim( $_rawBlock ); if( strlen( $_rawBlock ) > 0 ) { /* 番兵を最後尾に付加する */ $_rawBlock = $_rawBlock . "<P>"; /* 項目のタイトルは<DD class="title"> ... <p>間にある。 */ $_item[ "title" ] = strip_tags( getBlock( "<DD class=\"title\">", "p", $_rawBlock ) ); /* ISBNは<DT>と<DDの間にある。 */ $_item[ "isbn" ] = getBlock( "<DT>", "<DD>", $_rawBlock, false ); /* スパイダリンした結果を表示する */ print( implode( chr(10), $_item ) . chr(10) . chr(10) ); /* 文字列として保存する (後述するメールの例で使用。) */ $_text .= implode( chr(10), $_item ) .chr(10) . chr(10); } } ?> scrape_func.php <?php function getURL( $pURL ) { $_data = null; if( $_http = fopen( $pURL, "r" ) ) { while( !feof( $_http ) ) { $_data .= fgets( $_http,1024 ); } fclose( $_http ); } return( $_data ); } function cleanString( $pString ) { $_data = str_replace( array( chr(10), chr(13), chr(9) ), chr(32), $pString ); while( strpos( $_data, str_repeat( chr(32), 2 ), 0 ) != false ) { $_data = str_replace( str_repeat( chr(32), 2 ),chr(32), $_data ); } return( trim( $_data ) ); } function getBlock( $pStart, $pStop, $pSource, $pPrefix = true ) { $_data = null; $_start = strpos( strtolower( $pSource ), strtolower( $pStart ), 0 ); $_start = ( $pPrefix == false ) ? $_start + strlen( $pStart ) : $_start; $_stop = strpos( strtolower( $pSource ), strtolower( $pStop ), $_start ); if($_start > strlen( $pElement ) && $_stop > $_start ){ $_data = trim( substr( $pSource, $_start, $_stop - $_start )); } return( $_data ); } function getElement( $pElement, $pSource ) { $_data = null; $pElement = strtolower( $pElement ); $_start = strpos( strtolower( $pSource ), chr(60) . $pElement, 0 ); $_start = strpos( strtolower( $pSource ), "</" . $pElement . chr(62), $_start ); if( $_start > strlen( $pElement ) && $_stop > $_start ) { $_data = trim( substr( $pSource, $_start, $_stop - $_start ) ); } return( $_data ); } ?>
- ベストアンサー
- PHP
- noname#163332
- 回答数3
