ホームページ > バックエンド開発 > PHPチュートリアル > 「名前がデータベースに存在しない場合はエラーページに移動する」を実装するにはどうすればよいですか?

「名前がデータベースに存在しない場合はエラーページに移動する」を実装するにはどうすればよいですか?

WBOY
リリース: 2016-06-23 14:04:24
オリジナル
1206 人が閲覧しました

親愛なる皆さん: このコードは「パスワードを照会する最初のステップ: メンバー名を入力してください」です。目的の効果は、名前がデータベースに存在しない場合、エラー ページに移動することです。
私のこのコードは常に表示されます: 警告: ヘッダー情報は変更できません - ヘッダーはすでに送信されています (出力は F:PHPSitesmembergetpwd1-1.php:23 で開始されました) in F:PHPSitesmembergetpwd1-1.php の 36 行目
どのように変更すればよいですか?どうもありがとうございます!

<?php$totalRows_rsMember = 0;?><?php require_once('Connections/member.php'); ?><?php$colname_rsMember = "-1";if (isset($_POST['txtusername'])) {  $colname_rsMember = (get_magic_quotes_gpc()) ? $_POST['txtusername'] : addslashes($_POST['txtusername']);}mysql_select_db($database_member, $member);$query_rsMember = sprintf("SELECT username FROM members WHERE username = '%s'", $colname_rsMember);$rsMember = mysql_query($query_rsMember, $member) or die(mysql_error());$row_rsMember = mysql_fetch_assoc($rsMember);$totalRows_rsMember = mysql_num_rows($rsMember);?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>无标题文档</title><link href="style/style.css" rel="stylesheet" type="text/css" /><script language="javascript">function checkFormData () {  if ( form1.txtUsername.value == "" ) {    alert ( "用户名不能为空,请重新输入!" );	form1.txtUsername.focus();	return false;  }}</script></head><body><?php include('menu.php'); ?><?phpif ($totalRows_rsMember == 0) {  header ( "Location: message-1.php?error=3" );  exit;}?><form action="getpwd2-1.php" method="post" name="form1" id="form1" onsubmit="return checkFormData()">  <table width="256" border="1" align="center" rules="none">    <tr>      <th colspan="2" bgcolor="#0066CC" class="title">第一步:输入会员名</th>    </tr>    <tr>      <td width="72" height="32" align="right">用户名:</td>      <td width="168" height="32"><input name="txtUsername" type="text" id="txtUsername" /></td>    </tr>    <tr>      <td height="32" colspan="2" align="center"><input name="btnNext" type="submit" id="btnNext" value="下一步" /></td>    </tr>  </table></form></body></html><?phpmysql_free_result($rsMember);?>
ログイン後にコピー


ディスカッション (解決策) への返信

getpwd1-1.php
の 23 行目に出力があり、ヘッダー ("Location: message-1.php?error=3") が次のようになります。エラーを起こしてください

まず、その出力を確認することは本当に必要ですか?他の場所で調整できますか
本当に機能しない場合は、
を回避するために、 require_once('Connections/member.php'); の前に
ob_start(); を追加できます

getpwd1-1 の 23 行目に出力があります.php

原因のヘッダー ( "Location: message-1.php?error=3" ); エラー

まず、出力が本当に必要かどうかを確認してください。他の場所で調整できますか
本当に機能しない場合は、 require_once('Connections/member.php'); の前に
ob_start(); を追加してください


司会者: 私が投稿したのは getpwd1 です。 - 1. PHP のすべてのコードを調整するにはどうすればよいですか?
require_once('Connections/member.php'); の前に ob_start(); を追加すると、「存在しないユーザー名を入力してエラー ページに移動する」のではなく、直接エラー ページに移動します。アドバイスをお願いします、よろしくお願いします!

不注意でファイル名を確認していませんでした

16行目から33行目までの内容を39行目の後ろに移動


他の10行から14行は7行目の条件分岐にあるはずです

うっかりしていて確認していませんでした ファイル名

16行目から33行目までの内容を39行目の末尾に移動


10行目から14行目までの他の内容は7行目の条件分岐にあるはずです

司会者: ご指示に従います。次のように変更しましたが、依然としてエラー ページが直接表示されます。

<?php$totalRows_rsMember = 0;?><?php require_once('Connections/member.php'); ?><?php$colname_rsMember = "-1";if (isset($_POST['txtusername'])) {  $colname_rsMember = (get_magic_quotes_gpc()) ? $_POST['txtusername'] : addslashes($_POST['txtusername']);  mysql_select_db($database_member, $member);$query_rsMember = sprintf("SELECT username FROM members WHERE username = '%s'", $colname_rsMember);$rsMember = mysql_query($query_rsMember, $member) or die(mysql_error());$row_rsMember = mysql_fetch_assoc($rsMember);$totalRows_rsMember = mysql_num_rows($rsMember);}?><?phpif ($totalRows_rsMember == 0) {  header ( "Location: message-1.php?error=3" );  exit;}?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>无标题文档</title><link href="style/style.css" rel="stylesheet" type="text/css" /><script language="javascript">function checkFormData () {  if ( form1.txtUsername.value == "" ) {    alert ( "用户名不能为空,请重新输入!" );	form1.txtUsername.focus();	return false;  }}</script></head><body><?php include('menu.php'); ?><form action="getpwd2-1.php" method="post" name="form1" id="form1" onsubmit="return checkFormData()">  <table width="256" border="1" align="center" rules="none">    <tr>      <th colspan="2" bgcolor="#0066CC" class="title">第一步:输入会员名</th>    </tr>    <tr>      <td width="72" height="32" align="right">用户名:</td>      <td width="168" height="32"><input name="txtUsername" type="text" id="txtUsername" /></td>    </tr>    <tr>      <td height="32" colspan="2" align="center"><input name="btnNext" type="submit" id="btnNext" value="下一步" /></td>    </tr>  </table></form></body></html><?phpmysql_free_result($rsMember);?>
ログイン後にコピー


5 行目から 21 行目を

<?php$colname_rsMember = "-1";if (isset($_POST['txtusername'])) {  $colname_rsMember = (get_magic_quotes_gpc()) ? $_POST['txtusername'] : addslashes($_POST['txtusername']);  mysql_select_db($database_member, $member);  $query_rsMember = sprintf("SELECT username FROM members WHERE username = '%s'", $colname_rsMember);  $rsMember = mysql_query($query_rsMember, $member) or die(mysql_error());  $row_rsMember = mysql_fetch_assoc($rsMember);  $totalRows_rsMember = mysql_num_rows($rsMember);  if ($totalRows_rsMember == 0) {    header ( "Location: message-1.php?error=3" );    exit;  }}?>
ログイン後にコピー
に変更します。自分で考えてください。なぜこのように書く必要があるのですか?


5行目から21行目を

PHP code?123456789101112131415
ようやくこのようなことができることがわかりました、モデレーターありがとうございます。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート