2014-11-29 2 views
2

У меня есть вопрос.Как обрабатывать формы в отдельном файле ASP

Я изучаю классический ASP сегодня для своего следующего проекта. Я в настоящее время .NET-разработчик, и использование ASP.NET в этом проекте не является требованием моего клиента.

У меня есть сценарий страницы входа в систему.

Default.asp

<form method="post" action="ASP/aspLogin.asp"> 

    form code here... 

    <input type="submit" class="Button Is_Default" value="Login"></input> 

</form> 

Теперь, что у меня в тесте ASP/aspLogin.asp страница выглядит следующим образом:

ASP/aspLogin.asp

<%@ Language="VBScript" %> 

<% 
    Dim strUsername 
    Dim strPassword  

    strUsername = Request.Form("txtUsername") 
    strPassword = Request.Form("txtPassword") 

    If strUsername <> "" And strPassword <> "" Then 
     Response.Redirect("Index.asp") 
    End If 

%> 

Когда я запускал скрипты выше, браузер просто перенаправил меня на ASP/aspLogin.asp. Я бы хотел перенаправить пользователя на его домашнюю страницу.

Целью является то, что я хочу, чтобы мой файл ASP/aspLogin.asp обрабатывал мою форму вместо того, чтобы размещать процесс выше страницы Default.asp. Могу ли я узнать, пропустил ли я что-то здесь или есть еще кое-что, что нужно для создания кода, который мне нужен. Ресурсы будут также оценены.

+0

Глупый вопрос, но я должен спросить, так как вы не показать всю форму: сделать входные коробки имеют свои _NAME_ атрибуты, установленные на «txtUsername» и «txtPassword»? Нет ничего неправильного в том, что вы отправляете свою форму на другую страницу для обработки входа. –

+0

Да, у них есть эти атрибуты имени. –

+0

То, что вы описали, должно отлично работать в asp-classic, поэтому проблема должна быть связана с деталями. Например, является Index.asp в папке ASP? Вы абсолютно уверены, что поля формы имеют правильные имена? Вы пробовали это без '', поскольку браузеры могут делать странные вещи с нестандартной разметкой? – Martha

ответ

3

Если у вас есть вход и выход пользователей, я бы использовал переменные сеанса (которые, я уверен, вы столкнулись в .net), так что что-то вроде строк.

If strUsername <> "" And strPassword <> "" Then 
    Session("Username") = strUsername 
    Response.Redirect("Index.asp") 
End If 

Вы бы тогда иметь возможность добавить логику index.asp и любую другую страницу для отображения данных в зависимости от значения сессии («Имя пользователя»).

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

Редактировать.

Итак, вы в основном пытаетесь эмулировать .net с классическим ASP. Две вещи, которые нужно запомнить. У классика нет кодовых задержек, а веб-форма .net может быть отправлена ​​только самому себе (что очень расстраивает для кого-то, кто переезжает из Classic в .net)

Возможно, вы лучший вариант - иметь свою страницу формы оставлять себе и поместить код обработки в верхней части Default.asp, с логикой, которая только вызывает его, если есть представление формы, т.е.

<%@ Language="VBScript" %> 

<% 
    Dim strUsername 
    Dim strPassword  

    strUsername = Request.Form("txtUsername") 
    strPassword = Request.Form("txtPassword") 

    If strUsername <> "" And strPassword <> "" Then 
     'Your processing code 
     Response.Redirect("Index.asp") 
    End If 

%> 

<html> 
<body> 

<form method="post"> 

    form code here... 

    <input type="submit" class="Button Is_Default" value="Login"></input> 

</form> 
</body></html> 

расширение этого метода было бы использовать в качестве asplogin.asp включают. (Вам нужно будет удалить <%@ Language="VBScript" %> с вершины asplogin.asp, так как он станет посередине страницы и у вас уже будет объявление в default.asp). Default.asp тогда будет выглядеть так.

<%@ Language="VBScript" %> 

<!--#include file="ASP/aspLogin.asp"--> 

<html> 
<body> 

<form method="post"> 

    form code here... 

    <input type="submit" class="Button Is_Default" value="Login"></input> 

</form> 
</body></html> 

Это примерно так же близко, как вы можете получить к наличию CodeBehind в классическом

+0

Проблема в том, что я хочу, чтобы другая страница ASP выполняла обработку и перенаправлялась на соответствующую страницу ASP, которая в настоящее время не работает для меня. Процесс выглядит следующим образом: Default.asp> Нажмите кнопку> ASP/aspLogin.asp> Index.asp как работает ASP.NET с кодом. –

+0

Я отредактировал свой ответ – John

+0

Это сработало! Я использовал последнюю рекомендацию! Большое спасибо Джону! \ –

Смежные вопросы