Здравствуйте! Сегодня: Пн, 26 Окт 2020, Ваш IP: 54.236.35.159 Войти через loginza
 
Вход | Регистрация | Забыли пароль?
Мой Kbyte.Ru
> Список форумов Kbyte.Ru - - Web-программирование
+ Создать новую тему Страница: 1 · 2 · 3 · 4 · 5 · 6 · 7 · 8 · 9 · 10 · > · >> · [17]
Тема: Web · +  +    в избранномx2 дата добавления: 18.10.2013 / 20:29
Автор темы:
JustArt
JustArt
тем: 95 / ответов: 675 / благодарностей: 3 / репутация: 35
Url: crash.kbyte.ru
Skype: ghostman12.12.2012
ответов: 675
создал(а) тем: 95


Как сделать форму регистрации а точнее сам функционал? на чем?
Технологии: ASP .NET, Visual Basic .NET
--
Du Main Du BA DU
 
Ответ # 121 # · +  +  дата добавления: 15.11.2013 / 11:36
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


Если там дата Сегодня, то зачем её помещать в ContentPlaceHolder?
Можно разместить в том месте:
Сегодня: <%=Now.ToString("dd\.MM\.yyyy")%>
и все.

dd - день в формате 00
MM - месяц в формате 00
yyyy - год
\. - экранированная точка, чтобы всегда была точка, даже если в текущей культуре используется не точка в качестве разделителя элементов дат. Например, в английской культуре используется слэш. Если написать "dd.MM.yyyy", то в английской культуре дата будет в английском формате. А если точку экранировать (\.), то всегда будет точка. Если сайт (программа) не мультиязычный, то лучше чтобы экранирование вошло в привычку, поможет избежать множество проблем. Например, при переносе сайта с одного хостинга на другой, могут возникнуть не стыковки с культурами. При преобразовании строк в даты, тоже нужно жестко учитывать формат.
 
Ответ # 122 # · +  +  дата добавления: 15.11.2013 / 17:12
Автор ответа:
JustArt
JustArt
тем: 95 / ответов: 675 / благодарностей: 3 / репутация: 35
Url: crash.kbyte.ru
Skype: ghostman12.12.2012
ответов: 675
создал(а) тем: 95


У меня с права в верхнем меню находится меню Регистрация и войти как это изменить что бы при загрузке страницы отображалась дата?
--
Du Main Du BA DU
 
Ответ # 123 # · +  +  дата добавления: 15.11.2013 / 17:31
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


Вопрос непонятен

Код в студию!
 
Ответ # 124 # · +  +  дата добавления: 15.11.2013 / 17:43
Автор ответа:
JustArt
JustArt
тем: 95 / ответов: 675 / благодарностей: 3 / репутация: 35
Url: crash.kbyte.ru
Skype: ghostman12.12.2012
ответов: 675
создал(а) тем: 95


Тут не код а картина нужна :) Собственно вот:)


Регистрация и войти находится на page.master
Как сделать так что бы вместо этого авторезированым пользователям показывалась дата? contentplacehold нужен??:)
--
Du Main Du BA DU
 
Ответ # 125 # · +  +  дата добавления: 15.11.2013 / 18:02
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


Все зависит от того, что из себя представляет блок регистрации.
Обычно делается две PlaceHolder или Panel. Одна показывается неавторизированным пользователям, вторая авторизированным. Удобней всего это оформить в виде UserControl. Но можно и просто на мастер-странице разместить и в коде Page_Load сделать нужную панель видимой, а не нужную - скрыть.

А ContentPlaceHolder предназначен для вставки котента со страницы, для данной задачи совсем не пригоден.
 
Ответ # 126 # · +  +  дата добавления: 15.11.2013 / 18:06
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


В ответе #48 я об этом писал и пример кода показывал.

Поскольку мастер-страницы (.master), обычные страницы (.aspx) и пользовательские элементы (.ascx - UserControl) имеют одного и того же родителя, описанная реализация везде будет одинаковой.
 
Ответ # 127 # · +  +  дата добавления: 15.11.2013 / 18:06
Автор ответа:
JustArt
JustArt
тем: 95 / ответов: 675 / благодарностей: 3 / репутация: 35
Url: crash.kbyte.ru
Skype: ghostman12.12.2012
ответов: 675
создал(а) тем: 95


Но можно и просто на мастер-странице разместить и в коде Page_Load сделать нужную панель видимой, а не нужную - скрыть.
Вот это мне и нужно было знать:)
--
Du Main Du BA DU
 
Ответ # 128 # · +  +  дата добавления: 19.11.2013 / 20:55
Автор ответа:
JustArt
JustArt
тем: 95 / ответов: 675 / благодарностей: 3 / репутация: 35
Url: crash.kbyte.ru
Skype: ghostman12.12.2012
ответов: 675
создал(а) тем: 95


 If Session("IsUser") Is Nothing Then 'если нет сессии
            'проверяем куку
            If Request.Cookies IsNot Nothing AndAlso Request.Cookies("user") IsNot Nothing AndAlso Request.Cookies("user")("auth") IsNot Nothing Then
                'видимо юзер авторизирован
                'можно получить данные юзера из базы и сделать Session
                Session("IsUser") = True
                Session("UserName") = "имя из базы"
                Session("UserIP") = "любые необходимые параметры, чтобы не дергать постоянно базу"
                Session("UserEmail") = ""
            End If
        End If
Тут нужно подключаться к базе, и select'ом записывать в них значения?
--
Du Main Du BA DU
 
Ответ # 129 # · +  +  дата добавления: 20.11.2013 / 11:59
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


Да. В идеале, лучше если сделаешь отдельный классы для работы с пользователями.
Классы нужно добавлять в папку /App_Code (там может быть сколько угодно классов и вложенных папок). Например, можно сделать класс Users, в нем можно сделать методы для создания пользователя, получения данных пользователя, и даже проверку авторизированности.

По последнему, например, в классе Users можно сделать статичный (Shared) метод:
Public Shared Function IsAuth() As Boolean
  'в классах, доступ к Session, Response, Request и Application можно получить через HttpContext.Current
  If HttpContext.Current.Session("IsUser") IsNot Nothing Then 
     'сессия есть и в ней есть параметр IsUser
     Return HttpContext.Current.Session("IsUser")'возвращаем признак авторизированности пользователя (либо False, либо True)
  End If
  'сессии нет, проверяем куки
  If HttpContext.Current.Request.Cookies IsNot Nothing AndAlso HttpContext.Current.Request.Cookies("user") IsNot Nothing AndAlso HttpContext.Current.Request.Cookies("user")("login") IsNot Nothing AndAlso HttpContext.Current.Request.Cookies("user")("pwd") IsNot Nothing Then
     'В куках есть информация о пользователе, можно ее получить.
     'Тут нужно хорошо подумать, какую информацию хранить в куках.
     'В древние времена, во времена мифов и легенд, когда интернета еще не было и люди жарили мясо на костре во дворе своего дома,
     'в куки записывали пароль и логин юзера, как есть.
     'Это просто, однако небезопасно.
     'Если не придумаешь метод защиты, то в принципе можешь записывать все в открытом виде :)
     'Предположим, что ты ничего не придумал, тогда получение данных юзера может быть таким:
     Dim DR As DataRow = GetUser(HttpContext.Current.Request.Cookies("user")("login"), HttpContext.Current.Request.Cookies("user")("pwd"))
     If DR Is Nothing Then 
       'данные не найдены, ставим False - не авторизирован
       HttpContext.Current.Session("IsUser") = False
     Else
       'есть данные, можно создать Session
       HttpContext.Current.Session("IsUser") = True 'ставим в сессию отметку, что пользователь авторизирован
       HttpContext.Current.Session("UserName") = DR("UserName")
       'Session("UserIP") = "любые необходимые параметры, чтобы не дергать постоянно базу"
       'Это я написал? Если только для последнего использованного IP, который нужно сохранять в базу, 
       'а так, текущий IP можно получить из Request.UserHostAddress
       HttpContext.Current.Session("UserEmail") = DR("email")
       '...
       'и т.п.
       'для создания сессии лучше тоже отдельный метод написать, ибо он может понадобиться не только в методе проверки авторизации (чтобы один и тот же код по 10 раз не копировать)
    End If
  Else
    'куков нет,
    HttpContext.Current.Session("IsUser") = False ' ставим в сессию False, чтобы больше проверять
  End If

  Return HttpContext.Current.Session("IsUser")'возвращаем результат
End Function

Public Shared Function GetUser(login As String, password As String) As DataRow
  'здесь код получения данных пользователя
End Function
 
Ответ # 130 # · +  +  дата добавления: 02.12.2013 / 20:35
Автор ответа:
JustArt
JustArt
тем: 95 / ответов: 675 / благодарностей: 3 / репутация: 35
Url: crash.kbyte.ru
Skype: ghostman12.12.2012
ответов: 675
создал(а) тем: 95


Вновь поднимаю тему...
Что нужно закинуть вот сюда:

Что бы можно было проверить куку и изменить это?
--
Du Main Du BA DU
 
Ответ # 131 # · +  +  дата добавления: 02.12.2013 / 22:44
Автор ответа:
JustArt
JustArt
тем: 95 / ответов: 675 / благодарностей: 3 / репутация: 35
Url: crash.kbyte.ru
Skype: ghostman12.12.2012
ответов: 675
создал(а) тем: 95


Пост выше уже не актуален...
Сейчас новая задача
Как в vb коде страницы перейти на другую страницу. Я думаю что это не делается так:
Process.Start("Путь до страницы...")
--
Du Main Du BA DU
 
Ответ # 132 # · +  +  дата добавления: 02.12.2013 / 23:20
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


Конечно не так :) это ж запуск процессов - программ.

Переход, или точнее перенаправление в Web так и называется - Redirect:
Response.Redirect("http://kbyte.ru")
Локально можно указать uri относительно корневого каталога, например:
Response.Redirect("~/MyPage.aspx") - будет сделано перенаправление на страницу MyPage.aspx, расположенную в корне сайта.
 
Ответ # 133 # · +  +  дата добавления: 03.12.2013 / 00:24
Автор ответа:
JustArt
JustArt
тем: 95 / ответов: 675 / благодарностей: 3 / репутация: 35
Url: crash.kbyte.ru
Skype: ghostman12.12.2012
ответов: 675
создал(а) тем: 95


А что живет дольше Session ну даже при перезагрузке браузера останется в памяти??
--
Du Main Du BA DU
 
Ответ # 134 # · +  +  дата добавления: 03.12.2013 / 05:29
Автор ответа:
JustArt
JustArt
тем: 95 / ответов: 675 / благодарностей: 3 / репутация: 35
Url: crash.kbyte.ru
Skype: ghostman12.12.2012
ответов: 675
создал(а) тем: 95


Как набрать такой символ на клаве~?
--
Du Main Du BA DU
 
Ответ # 135 # · +  +  дата добавления: 03.12.2013 / 11:34
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


А что живет дольше Session ну даже при перезагрузке браузера останется в памяти??
Session находится на сервере. Живет, по умолчанию, 20 минут.
За это время пользователь может закрыть вкладку, открыть, и сессия должна будет восстановиться.
Как набрать такой символ на клаве~?
Тильда - обычно Shit + Ё (где-то под Esc)
 
Ответ # 136 # · +  +  дата добавления: 03.12.2013 / 21:41
Автор ответа:
JustArt
JustArt
тем: 95 / ответов: 675 / благодарностей: 3 / репутация: 35
Url: crash.kbyte.ru
Skype: ghostman12.12.2012
ответов: 675
создал(а) тем: 95


Session находится на сервере. Живет, по умолчанию, 20 минут.
За это время пользователь может закрыть вкладку, открыть, и сессия должна будет восстановиться.
Значит я как всегда не правильно поставил вопрос:). Мне нужно при авторизации куда нибудь записать имя пользователя(Использовал Session) для вот этого:
' v I
Session("UserName").Value = "Artem" ' Имя из базы, предварительно получив его в какую нибудь переменную или напрямую
' v II
Session("user")("UserName") = "Artem" 'аналогично
Но когда я перезапускал браузер то Session("Какое то имя") был пустым
Я сразу же вспомни про куку, записывал в нее значение таким способом
Response.Cookies("user")("UserName") = "Artem" ' Имя из базы, предварительно получив его в какую нибудь переменную или напрямую
А вот дальше было интереснее...
Мне нужно было извлекать это имя в обработчике события загрузки главного стиля страницы.
Делал я это так:
Label1.Text = Response.Cookies("user")("UserName")
И конечно же это неправильно. Я уже не помню какую ошибку мне это выдавало. Тогда я спросил что можно было бы использовать как Session только что бы она хранила инфу так же долго как и куки, но можно было использовать так же просто как Session.
Ну и как всегда в моём излюбленном стиле сначала спроси на форуме, потом додумайся сам. На следующее утро (Посты я писал в промежутке времени от 1 - 2 ночи) Я вспомнил вы говорили про статичный метод, я решил его посмотреть.
Ну и конечно же я нашел ответ.
В загрузке страницы я в не правильной форме получал значение куки.
'снова пример того как это делал я:
Response.Cookies("user")("UserName") = "Artem"
'Что я выглядел в методе
Label1.Text = HttpContext.Current.Request.Cookies("user")("UserName")
Теперь всё идеально работает:).
--
Du Main Du BA DU
 
Ответ # 137 # · +  +  дата добавления: 03.12.2013 / 21:57
Автор ответа:
JustArt
JustArt
тем: 95 / ответов: 675 / благодарностей: 3 / репутация: 35
Url: crash.kbyte.ru
Skype: ghostman12.12.2012
ответов: 675
создал(а) тем: 95


Сейчас у меня такой вопрос, как сделать такое меню средствами asp.net

Нужно использовать кнопки, но они выглядят как кнопки в обычный windows программах
--
Du Main Du BA DU
 
Ответ # 138 # · +  +  дата добавления: 03.12.2013 / 22:34
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


Перезапуск браузера - закрытие браузера целиком, приводит к удалению куков session. Когда создается session - пользователь впервые заходит на сайт, идентификатор сессии записывается во временные куки, которые живут до закрытия браузера.
Session("UserName").Value = "Artem"
При добавлении данных в Session достаточно написать:

Session("ключ") = какие-то данные
Session("user")("UserName") = "Artem"
А так ты скорее всего сделаешь неудобную коллекцию. Лучше оставаться на одном уровне, проще будет работать.
Response.Cookies("user")("UserName") = "Artem"
Ответить.кука("группа")("ключ") = "значение"

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

Ответить.кука("группа")("ключ1") = "значение"
Ответить.кука("группа")("ключ2") = "значение"
Ответить.кука("группа")("ключN") = "значение"
Ответить.кука("группа").срокЖизни = now.adddays(1)

Мне нужно было извлекать это имя в обработчике события загрузки главного стиля страницы.
Делал я это так:
Label1.Text = Response.Cookies("user")("UserName")
Response - ответ клиенту
Request - запрос от клиента

Откуда нужно получать куки? Правильно, от клиента, который делает запрос к тебе, т.е. к серверу/странице.
Я показывал уже пример записи и получения кукисов. При получении, нужно учитывать, что группы куков и значений может не быть (Is Nothing). Наверняка я об этом уже говорил на страницах этой темы.

Из Request можно получать любую другую информацию от клиента: ip-адрес, url, параметры url, информацию о браузере, куки, заголовки и т.п.

Через Response можно отправлять ответы клиенту: текст, бинарные данные, заголовки, куки и т.п.
В загрузке страницы я в не правильной форме получал значение куки.
Да, но ход мысли неверный ))

Просто: Request, также как и Response, и Session.
На страницах и пользовательских элементах управления нет смысла писать полный путь к текущему запросу (HttpContext.Current), ибо он и так есть. Это тоже самое, что при разговоре постоянно называть человека по имени, или даже:
- Вася из Москвы с улицы Ленина дом 5 кв. 10, привет!
- Здравствуй, Маша из Иркутска с улицы Мира дом 67 кв. 15!
- Вася из Москвы с улицы Ленина дом 5 кв. 10, как твои дела?
- Маша из Иркутска с улицы Мира дом 67 кв. 15, все хорошо! А у тебя?

Полный путь нужно писать, когда нет другого выхода :) А писать то полный путь, то неполный - это крайне криво, хотя, конечно, работать будет.

Главное про проверку наличия куки, перед получением данных, не забывай делать. Иначе, если куки не будет, произойдет исключение (ошибка).

И срок действия не забывай указывать.

Примеры я показывал.
как сделать такое меню средствами asp.net
Html + Css, к asp .net это напрямую не относится. Если нужны будут серверные ссылки, то можно будет добавить в меню <asp:HyperLink /> или <asp:LinkButton />. Последнее - это типа кнопки, только выглядит, как ссылка. Но для меню такие кнопки лучше не использовать, т.к. они будут делать запрос к текущей странице, их удобно использовать, например, в профиле пользователя, сделать ссылку "редактировать", или в списке записей - "удалить". А в меню и прочих навигационных элементах лучше использовать обычные ссылки (<a /> или <asp:HyperLink />).
 
Ответ # 139 # · +  +  дата добавления: 06.12.2013 / 06:34
Автор ответа:
JustArt
JustArt
тем: 95 / ответов: 675 / благодарностей: 3 / репутация: 35
Url: crash.kbyte.ru
Skype: ghostman12.12.2012
ответов: 675
создал(а) тем: 95


Я потихоньку подошел к основной части, это таблица переменных как мне реализовать её?

Нужно что бы она обязательно имела такой стиль
--
Du Main Du BA DU
 
Ответ # 140 # · +  +  дата добавления: 06.12.2013 / 12:14
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


Использовать <asp:Repeater />.

<asp:Repeater id="Repeater1" runat="server">

 <HeaderTemplate>
   шляпа таблицы, или даже начало:
   <table>
     <tr>
       <th>Заголовок</th><th>Заголовок</th><th>Заголовок</th>
     </tr>
 </HeaderTemplate>

 <ItemTemplate>
   <tr>
      <td>Данные</td>
      <td>Данные</td>
      <td>Данные, например из базы из поля text <%#Eval("text")%></td>
   </tr>
 </ItemTemplate>

 <FooterTemplate>
   </table>
    задняя часть таблицы
 </FooterTemplate>

</asp:Repeater>

А в коде, "биндить" (англ. bind - связывать) данные с Repeater:
Repeater1.DataSource = источник данных
Repeater1.DataBind()
 
Страница: 1 · 2 · 3 · 4 · 5 · 6 · 7 · 8 · 9 · 10 · > · >> · [17] + Создать новую тему