ホームページ >バックエンド開発 >PHPチュートリアル >「名前がデータベースに存在しない場合はエラーページに移動する」を実装するにはどうすればよいですか?
親愛なる皆さん: このコードは「パスワードを照会する最初のステップ: メンバー名を入力してください」です。目的の効果は、名前がデータベースに存在しない場合、エラー ページに移動することです。
私のこのコードは常に表示されます: 警告: ヘッダー情報は変更できません - ヘッダーはすでに送信されています (出力は 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(); を追加できます
原因のヘッダー ( "Location: message-1.php?error=3" ); エラー
まず、出力が本当に必要かどうかを確認してください。他の場所で調整できますか
本当に機能しない場合は、 require_once('Connections/member.php'); の前に
ob_start(); を追加してください
…
司会者: 私が投稿したのは getpwd1 です。 - 1. PHP のすべてのコードを調整するにはどうすればよいですか?
require_once('Connections/member.php'); の前に ob_start(); を追加すると、「存在しないユーザー名を入力してエラー ページに移動する」のではなく、直接エラー ページに移動します。アドバイスをお願いします、よろしくお願いします!
不注意でファイル名を確認していませんでした
他の10行から14行は7行目の条件分岐にあるはずです
うっかりしていて確認していませんでした ファイル名
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);?>
<?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行目を