Изменить вывод переменной сеанса - PullRequest
0 голосов
/ 07 января 2011

Я использую Dreamweaver CS5 с Coldfusion 9 для создания динамического веб-сайта.У меня есть база данных MS Access, в которой хранится информация для входа в систему, которая включает в себя идентификатор, полное имя, имя, фамилию, имя пользователя, Pawword, AcessLevels.

У меня такой вопрос: у меня есть переменная сеанса для отслеживания имени пользователя при его вводена страницу входа.Однако я хотел бы использовать это имя пользователя, чтобы получить полное имя пользователя для отображения на всех веб-страницах и использовать для запроса данных.Как я могу изменить переменную сеанса, чтобы прочитать, что когда они не вводят свое полное имя на странице входа в систему, а только имя пользователя и пароль.

Я перечислил мой код информации для входа ниже, если есть какая-либо дополнительная информация, пожалуйста, сообщитея знаю.

Это путь, по которому находятся значения FullName. Таблица данных «Access», «Access», «Logininfo», поле «FullName». Я хочу, чтобы FullName было уникальным в зависимости от имени пользователя, отправленного со страницы входа в систему.

Я заранее прошу прощения за любую ошибку новичка, я, возможно, новичок в этом, но учусь быстро!Ха.

<cfif IsDefined("FORM.username")>
  <cfset MM_redirectLoginSuccess="members_page.cfm">
  <cfset MM_redirectLoginFailed="sorry.cfm">
  <cfquery  name="MM_rsUser" datasource="Access">
  SELECT FullName, Username,Password,AccessLevels FROM Logininfo WHERE Username=<cfqueryparam value="#FORM.username#" cfsqltype="cf_sql_clob" maxlength="50"> AND Password=<cfqueryparam value="#FORM.password#" cfsqltype="cf_sql_clob" maxlength="50">
  </cfquery>
  <cfif MM_rsUser.RecordCount NEQ 0>
    <cftry>
      <cflock scope="Session" timeout="30" type="Exclusive">
        <cfset Session.MM_Username=FORM.username>
        <cfset Session.MM_UserAuthorization=MM_rsUser.AccessLevels[1]>
      </cflock>
      <cfif IsDefined("URL.accessdenied") AND false>
        <cfset MM_redirectLoginSuccess=URL.accessdenied>
      </cfif>
      <cflocation url="#MM_redirectLoginSuccess#" addtoken="no">
      <cfcatch type="Lock">
        <!--- code for handling timeout of cflock --->
      </cfcatch>
    </cftry>
  </cfif>
  <cflocation url="#MM_redirectLoginFailed#" addtoken="no">
  <cfelse>
  <cfset MM_LoginAction=CGI.SCRIPT_NAME>
  <cfif CGI.QUERY_STRING NEQ "">
    <cfset MM_LoginAction=MM_LoginAction & "?" & XMLFormat(CGI.QUERY_STRING)>
  </cfif>
</cfif>

1 Ответ

0 голосов
/ 08 января 2011

Мне кажется, что запрос уже извлекает FullName, поэтому, если вы хотите переменную сеанса, которая содержит значение FullName.

У вас есть этот код:

Измените его на что-то вроде следующего (должно работать, не предъявлял иск CF в течение некоторого времени, поэтому основано на памяти, не проверено)

<cflock scope="Session" timeout="30" type="Exclusive">
    <cfset Session.MM_Username=FORM.username>
    <cfset Session.MM_UserAuthorization=MM_rsUser.AccessLevels[1]>
    <cfset Session.FullName=MM_rsUser.FullName[1]>
</cflock>

Это добавит Session.FullName, и вы можете сослаться на это в другом месте на вашем сайте. Он должен присутствовать на любой странице после того, как пользователь вошел в систему, поэтому вам придется проверить его наличие на страницах, которые не требуют входа, прежде чем использовать это значение.

Обратите внимание: код, который вы используете, автоматически генерируется журналом Dreamweaver в поведении сервера, и вполне возможно, что предлагаемые изменения нарушат проверку или повторное применение этого поведения сервера. Если это произойдет, вы сможете восстановить, удалив добавленную строку кода и повторно добавив ее после внесения любых необходимых изменений. Вам может потребоваться убедиться, что FullName присутствует в операторе SELECT запроса, чтобы обеспечить доступность FullName.

...