• ベストアンサー

PHP ハイパーリンク

PHPで条件があった場合次のページに、とべるようにしたいのですが何と記述していいか調べてもいまいち解らないので質問させて頂きます。 <?php $ID = $_POST['ID']; $PWD = $_POST['PWD']; if($db = sqlite_open('db_ninshou')){ $query = "SELECT ID, PWD FROM tbl_ninshou WHERE ID = '$ID' AND PWD = '$PWD'"; $result = sqlite_query($db, $query); if($info = sqlite_fetch_array($result)){ print "認証に成功しました。下記URLから講義の登録を行ってください。\n"; print ここで次のページにとべる命令をしたのですが解りません。; }else{ print "認証に失敗しました。再度入力してください。"; } }else{ die("DBエラー"); } sqlite_close($db); ?> HTMLなら <A HREF = "URL">~</A>というふうに記述すればいいと思うのですが。リンクを貼る記述の仕方か、もしくは条件に当てはまったら自動的にページにとべるような命令の仕方を探しています。説明が下手で申し訳ありませんが・・・よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tols
  • ベストアンサー率46% (7/15)
回答No.3

もし "でURLなどを囲みたい場合、以下のようにします。 print "<a href=\"アドレス\">リンク</a>"; または、 print '<a href="アドレス">リンク</a>'; 参考までに、参考URLも見てみてください。

参考URL:
http://it.kndb.jp/entry/show/id/798
全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

ANo.1の方が書かれたとおりですね。画面に何も表示しなくてよければ、header('Location: ・・・')で飛ばす。一度何か表示したければ、アンカータグをブラウザに返す。表示後に自動で飛ばしたければ(指定したURLに何秒後かに遷移する)metaタグをブラウザに返す(遷移しないケースも考えてアンカータグも入れておく)。 質問者さんの書き方(認証に成功しました。下記URLから講義の登録を行ってください)だとアンカータグを書くしかないような・・。 (長い蛇足) ちなみにphpからprintしたものはそのままブラウザに返されますから、あくまでもHTMLです。なので > print "認証に成功しました。下記URLから講義の登録を行ってください。\n"; ここは最後に<br />を入れていないとブラウザで改行されませんよ。おそらくphpから返すものがHTMLだという認識がないと思われるので・・。 >HTMLなら <A HREF = "URL">~</A>というふうに記述すればいいと思うのですが そのとおりにアンカータグをprintすればいいだけです。

oborozuki1
質問者

お礼

詳しい説明有難う御座いました。この回答を教科書にやってみたいと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • tols
  • ベストアンサー率46% (7/15)
回答No.1

認証が成功した場合、 print "<a href=アドレス>リンク</a>";でダメでしょうか? または自動的に飛ばしたい場合、 header( "Location: 飛ばしたいURL" ); で飛びます。

oborozuki1
質問者

お礼

<A HREF = "アドレス">リンク</A> 無駄に””でくくってしまっていました。初歩的質問に関わらず迅速に対処していただき有難う御座いました。もう少し自分でしっかり調べるようにしたいと思います。お世話になりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • PHP 認証システム

    PHPでIDとPWDを入力してログインする認証ページを作ろうとしています。環境はPHP-5.1.6、サーバ:Apache2.0.63、データベース:SQLiteです。 まず、DBを作ろうとしているのですが一部分がなんて打っていいか調べても解らなかったので質問させて頂きます。 <HTML><BODY> <?php if($db = sqlite_open("db_ninshou")){ $query = "CREATE TABLE tbl_ninshou(ID ???, PWD ???)"; $result = sqlite_query($db, $query); print "db_ninshouを作成しました。"; }else{ die("データベースに接続できません。"); } sqlite_close($db); ?> </BODY></HTML> ???部分に何を打っていいかわかりません。IDは英数字の組み合わせの7文字。PWDは3文字以上10文字以下の英数字にしたいと思っています。PWDなどに適した変数が解らないのでどなたかご教授ください。よろしくお願いします。

    • ベストアンサー
    • PHP
  • php sqlでログイン認証システムについてです。

    このようなソースを書いてログインシステムを書いています。 ここで接続はできたのですが、クエリーが失敗しましたと出てきます。 このソースをどのように修正すればよいのかアドバイスお願いできないでしょうか。よろしくお願いします。 <?php session_start(); $link = mysql_connect('localhost', 'root', 'root'); if (!$link) { die('接続失敗です。'.mysql_error()); } $db_selected = mysql_select_db('mydb', $link); if (!$db_selected){ die('データベース選択失敗です。'.mysql_error()); } mysql_set_charset('utf8'); // エラーメッセージの初期化 $errorMessage = ""; // ログインボタンが押された場合 if (isset($_POST["login"])) { // 1.ユーザIDの入力チェック if (empty($_POST["userid"])) { $errorMessage = "ユーザIDが未入力です。"; } else if (empty($_POST["password"])) { $errorMessage = "パスワードが未入力です。"; } // 2.ユーザIDとパスワードが入力されていたら認証する if (!empty($_POST["userid"]) && !empty($_POST["password"])) { // mysqlへの接続 $mysqli = new mysqli($db['localhost'], $db['root'], $db['root']); if ($mysqli->connect_errno) { print('<p>データベースへの接続に失敗しました。</p>' . $mysqli->connect_error); exit(); } // データベースの選択 $mysqli->select_db($db['mydb']); // 入力値のサニタイズ $userid = $mysqli->real_escape_string($_POST["userid"]); // クエリの実行 $query = "SELECT * FROM db_user WHERE name = '" . $userid . "'"; $result = $mysqli->query($query); if (!$result) { print('クエリーが失敗しました。' . $mysqli->error); $mysqli->close(); exit(); } while ($row = $result->fetch_assoc()) { // パスワード(暗号化済み)の取り出し $db_hashed_pwd = $row['password']; } // データベースの切断 $mysqli->close(); // 3.画面から入力されたパスワードとデータベースから取得したパスワードのハッシュを比較します。 //if ($_POST["password"] == $pw) { if (password_verify($_POST["password"], $db_hashed_pwd)) { // 4.認証成功なら、セッションIDを新規に発行する session_regenerate_id(true); $_SESSION["USERID"] = $_POST["userid"]; header("Location: main.php"); exit; } else { // 認証失敗 $errorMessage = "ユーザIDあるいはパスワードに誤りがあります。"; } } else { // 未入力なら何もしない } } ?>

    • 締切済み
    • PHP
  • [Warning]が出るのですが、何故かわかりません。

    [Warning]が出るのですが、何故かわかりません。 <html> <body> <?php if($db = sqlite_open('db_ehon')){ $query = "INSERT INTO tbl_ehon (id, title, price) VALUES (1, 'a', 1380)"; $result = sqlite_query($db, $query); $query = "INSERT INTO tbl_ehon (id, title, price) VALUES (2, 'b', 1580)"; $result = sqlite_query($db, $query); $query = "INSERT INTO tbl_ehon (id, title, price) VALUES (3, 'c', 1680)"; $result = sqlite_query($db, $query); $query = "INSERT INTO tbl_ehon (id, title, price) VALUES (4, 'd', 1680)"; $result = sqlite_query($db, $query); print "「db_ehon」を作成しました。"; }else{ die("データを登録できません。"); } sqlite_close($db); ?> </body> </html> ■表示______________ Warning: sqlite_query() [function.sqlite-query]: no such table: tbl_ehon in C:\Apache Group\Apache2\htdocs\test2.php on line 13 Warning: sqlite_query() [function.sqlite-query]: no such table: tbl_ehon in C:\Apache Group\Apache2\htdocs\test2.php on line 16 Warning: sqlite_query() [function.sqlite-query]: no such table: tbl_ehon in C:\Apache Group\Apache2\htdocs\test2.php on line 19 Warning: sqlite_query() [function.sqlite-query]: no such table: tbl_ehon in C:\Apache Group\Apache2\htdocs\test2.php on line 22 「db_ehon」を作成しました。 ”db_ehon”は同じディレクトリに作成されます。 初歩的な事のような気がしますが、分るかたお願い致します。

    • ベストアンサー
    • PHP
  • PHP ログインシステムについて

    お世話になります 現在ローカルで下記PHPのテストを行っています PHP初心者の為、セキュリティ面並びに不具合が心配で書き込みさせて頂きました 恐れ入りますがおかしな点がないかチェックして頂けませんでしょうか 宜しくお願いいたします データベースのバージョンはMySQL 5.5です ***************************************** <?php session_start(); $error_message = ""; if (isset($_POST["login"])) { $id = htmlspecialchars($_POST['id']); $password = htmlspecialchars(base64_encode(pack('H*', sha1($_POST['password'])))); $_SESSION['id'] = $_POST['id']; $_SESSION['password'] = $_POST['password']; $db = mysql_connect("***","***","***"); if (!$db) { die('接続失敗です。'.mysql_error()); } mysql_set_charset("utf8"); $db_selected = mysql_select_db("***", $db); if (!$db_selected){ die('データベース選択失敗です。'.mysql_error()); } $result = mysql_query("SELECT * FROM ***"); if (!$result) { die('クエリーが失敗しました。'.mysql_error()); } function x($result) { return mysql_real_escape_string($result); } while ($row = mysql_fetch_assoc($result)) { if($id == $row['id'] && $password == $row['password']){ header("Location:./instance.php"); } } $_SESSION = array(); if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time()-42000, '/'); } session_destroy(); $error_message = "ユーザ名もしくはパスワードが違っています。"; } ?> <html> <head><title>ログイン</title> <meta http-equiv=Content-Type content="text/html; charset=utf-8"> <link rel="stylesheet" type="text/css" href="style.css" media="screen" /> </head> <body> <?php if ($error_message) { print '<font color="red">'.$error_message.'</font>'; } ?> <form action="login.php" method="post"> ID:<input type="text" name="id"><br /> PASS:<input type="password" name="password"><br /> <input type="submit" name=login value="認証"> </form> </body> </html>

    • 締切済み
    • PHP
  • PHPを使ってMySQLのフィールドの追加ができない

    function部分は外部ファイル function getResult($query){ $result[result]=mysql_query($query,$this->connect) or die(mysql_error()); $result[count]=@mysql_num_rows($result[result]); return $result; } $null = ""; $query="insert into main values ($_POST[id],'$_POST[name]',$null,$null,$null,'$null')"; $insert[result]=$db->getResult($query); このように記述してmainテーブル内に新規フィールドの追加をしようとしたのですが、次のようなエラーが出ます。 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 ',,'')' at line 1 $nullは結局NULL値なので、 ($_POST[id],'$_POST[name]',,,,) でやってみたのですが、これも同じです。 当たり前といえば当たり前ですが、 ($_POST[id],'$_POST[name]',,,,)を ($_POST[id],'$_POST[name]')と 省略してみましたが、数が合わないとエラーが返ってきました。 定型のfunctionに頼らず、$insert[result]=$db->getResult($query);のかわりに if(mysql_query($query,$db->connect)){ echo"成功"; }else{ echo"失敗"; } このようにも試してみたのですが、データは追加されず、失敗と表示されてしまいます。 どこをどう修正すればいいでしょうか。 どなたかお助けください。 ちなみに1,3~5番目が数値型で、2,6番目が文字型、1番目以外はNULLを許可しています。 どこもオートインクリメントは使用していません。

    • ベストアンサー
    • PHP
  • PHPでのID、パスワード認証

    学校の宿題でログインページからデータベースに入っているIDとパスワードでログインし、2枚目ページにたどり着くというコードを書いています。 ログオンページにはphpコードは一切なく、ログイン後のページにすべてphpを入れるというやり方です。 データベースに接続はしているのですが、ログインの認証ができず、正しいIDとパスワードをいれてもエラーメッセージ「IDとパスワードが正しくありません」が返ってきます。 コードは $u =$_POST['userid']; $p =$_POST['password']; $result = mysql_query("SELECT * FROM valid_logon"); while($row=mysql_fetch_array($result)) { $username = $row['userid']; $passcode = $row['password']; } if($username == $userid && $pass==$password) { header("Location: mybill.php"); } else if($passcode != $p ||$username != $u ) { echo("Please Enter Correct Username and Password ..."); exit; } としているのですが、何故すべてエラーになってしまうのか、もし宜しかったら教えてください!! どうぞ宜しくお願いします。

    • ベストアンサー
    • PHP
  • phpでデータリスト作成

    php+PostgreSQLでデータのリスト作成をしています。 DB内にあるデータを条件に合うデータを30件ずつ表示させ、ページ切替をしています。 10ページあると、ページ切替のリンクが、 1~10まで全て表示されます。 これを5ページ目まで+次ページ 前ページ 6 7 8 9 10 が表示 どのようにすればよいでしょうか? よろしくお願い致します。 現時点でのソースです。 **************************************************DB接続後 $sql = "select count(*) from entry_user"; $result = pg_query($sql) or die("Failed to execute SQL\n"); $row = pg_fetch_result($result,0,0); $ln = 30; if ($row%$ln == 0){  //表示する件数(MAX) $pn = floor($row / $ln); } else{ $pn = floor($row / $ln)+1;  } pg_free_result($result); $data = "entry_id,entry_time,company,dept,sei,mei,post1,post2,pref,address2,address3,email,entry_flag"; $sort_key = "entry_id"; //ソート対象フィールド $sort ="desc"; //ソート desc:降順 $sql1 = "select $data from entry_user order by $sort_key $sort limit $ln offset " . ($pnn-1)*$ln ; //SELECT文 $result1 = pg_query($sql1) or die("Failed to execute SQL\n"); $row1 = pg_num_rows($result1); for ($i = 0; $i < $row1; $i++){ $table[$i] = pg_fetch_row($result1,$i); } 一覧表示後(省略) //ここからページ切替作成 for ($n = 1;$n<$pn+1;$n++){ if($pn != 1){ if($n != $pnn){ print(" <a href=list01.php?pnn=" . $n . ">"); print($n . "</a> \n"); } else{ // ページ数が、現在表示しているページと同じで有ればリンクなし print($n . " \n"); }} else{ print("1\n"); }}

    • ベストアンサー
    • PHP
  • php5.2.9に変更後に不具合について

    php初心者です。 レンタルサバ―なのですが、php4.4.7からphp5.2.9に変更後うまくいかなくて困っています。 header("Location: http://○○○/top.php");がうまく飛びません。 ページを実行すると真っ白の画面になってしまいます。 以前のバージョンですと、問題なく動いていました。 下記を見てください。 どうしたらよいのでしょうか? <?php mysql_query('SET NAMES ujis'); require_once( "function.php" ); session_start(); if ( $_REQUEST[ "SUBMIT" ] != "" ) { if ( ( $_POST[ "VALUE_ID" ] != "" ) && ( $_POST[ "VALUE_PW" ] != "" ) ) { $k_id = $_POST[ "VALUE_ID" ]; $k_pw = $_POST[ "VALUE_PW" ]; $con=mysql_connect('aaa','aaa','aaa') or die("MySQL接続エラー: ".mysql_error()); mysql_select_db('aaa',$con); $sql= "select * from あああ where id='$k_id' and pw='$k_pw'"; $result=mysql_query($sql); $rows=mysql_num_rows($result); if($rows==1){ while($row=mysql_fetch_array($result)){ $d_id = $row["id"]; $d_pw = $row["pw"]; } } } } if ( !isset( $_SESSION[ "D_ID" ] ) ) { $_SESSION[ "D_ID" ] = ""; } $_SESSION[ "D_ID" ] = $d_id; if ( !isset( $_SESSION[ "D_PW" ] ) ) { $_SESSION[ "D_PW" ] = ""; } $_SESSION[ "D_PW" ] = $d_pw; if ( !isset( $_SESSION[ "K_ID" ] ) ) { $_SESSION[ "K_ID" ] = ""; } $_SESSION[ "K_ID" ] = $k_id; if ( !isset( $_SESSION[ "K_PW" ] ) ) { $_SESSION[ "K_PW" ] = ""; } $_SESSION[ "K_PW" ] = $k_pw; if ( ( $_SESSION[ "D_ID" ] == "" ) || ( $_SESSION[ "D_PW" ] == "" ) ) { print( "<br><center>○○○○○○○○<br>" ); print( "<br>○○○○○○○○○○○○○○○○<br>" ); print( "<br>○○○○○○○○<br>" ); print( "<br><a href=\"index.html\">[ BACK ]</a></center>" ); exit(); }elseif( CheckID_PW( $_SESSION[ "K_ID" ], $_SESSION[ "K_PW" ], $_SESSION[ "D_ID" ], $_SESSION[ "D_PW" ] ) == false ) { print( "<br><center>○○○○○○○○<br>" ); print( "<br><center>○○○○○○○○○○○○○○○○<br>" ); print( "<br><center>○○○○○○○○" ); print( "<br><br><a href=\"index.html\">[ BACK ]</a></center></body>" ); } else {header("Location: http://○○○/top.php");} ?>

    • 締切済み
    • PHP
  • HP上からのPHPによるSQLiteの読み込み

    表題のとおり、PHPでsqliteのDBにアクセスして、表示しようと考えています。 サーバーに以下の内容を書いた、result.phpというファイルを置いて、ページを開きました。 <html> <body> <h3>テスト</h3> <?php try{ $db = new SQLite3('sqlit.db'); $result = sqlite_query($db, "SELECT * FROM table"); $db->close(); } catch (PDOException $e) { print "エラー!: " . $e->getMessage() . "<br/>"; } ?> </body> </html> すると、以下のエラーが出ました。 Warning: sqlite_query() expects parameter 1 to be resource, object given in /home/(ファイル置いてある場所)/result.php on line 7 sqlit.dbは適当に作ったファイルで中身はどうでもいいのですが、 エラー内容で検索したところ、一つ目の引数のdb形が違うよーみたいな意味のようですが、解決策がわかりません。 ためしにsqlit.dbを適当な名前にしたところ、その適当な名前のファイルの名前は出てきましたが、 エラー内容は同じでした。 つまり、new SQLite3は実行できている=PHPでSQLのファイルの作成、読み込みは出来ている。 しかし、テーブル名が違うとかといった内容ではなく、型が違う、といわれ困っています。 同じ階層に置いた「php.ini」に以下の3行を記載し、配置してあります。 extension=php_pdo_sqlite.dll extension=php_sqlite.dll extension=php_pdo.dll しばらく調べたのですが、phpそのものが実行されないとか、dbファイルがないといった状況なら調べられそうではあるのですが、実行は出来たけど読み込もうとするとエラーになる。 といわれ調べても情報が出てこず困っています。 何かエラーの可能性になる部分や、調べ方がありましたら教えてください。 ちなみにファイルを置いてあるのはさくらインターネットのサーバーでして、 PHPの設定は「PHP 5.3.8 (CGI版) 」にしてあります。

    • 締切済み
    • PHP
  • PostgreSQLに書き込むことが出来ない

    環境→Windows XP Home Edition Apache→Apache 2.0.59 PostgreSQL→PostgreSQL8.1.6 PHP→PHP4.4.4 DBに書き込もうとしていますがなかなか上手くできません。 <?php //データベースに接続する $conn = pg_pconnect("user=postgres password=grjtf dbname=mytbl"); //データベースに接続出来るかチェック if(!$conn) { //エラーメッセージ echo "An error occured.\n"; exit; } else { //接続成功メッセージ print "DB(mytbl)に接続しました。<br>"; } //データベースに接続し、mytblからidとnameを取り出す $result = pg_query($conn,"SELECT id,name FROM mytbl"); //データベース(mytbl)からidとnameを取得する if (!$result) { //エラーメッセージ echo "An error occured.\n"; exit; } else { //接続成功メッセージ print "idとnameを取得しました。<br>"; } //データベースmytblに書き込む if(isset($_POST["action"]) && $_POST["sign"] == '書き込み') { //名前とスコアが何も書かれていなかった場合 if($_POST["id"] && $_POST["name"]) { //データベースに書き込む $sql="INSERT INTO mytbl(id,name) VALUES('$id','$name')"; pg_query($conn,$sql); //成功メッセージ print "DB(mytbl)に書き込みました。<br><br>"; } else { //エラーメッセージ print "書き込めませんでした。<br><br>"; } }

    • ベストアンサー
    • PHP