Witam,
napisałem kod który loguje się na forum, ale mam problem z podtrzymaniem sesji. Mógłbym ustawić powiedzmy odświeżanie strony na 20/30s i działałoby, ale to wtedy zamula.. Może jest jakiś sposób na przechwycenie momentu w którym, użytkownik zostaje wylogowany? Czytałem też coś o "odświeżaniu ukrytej ramki", ale w Ajaxie lub PHP niestety w C# nie wiem jak to zrobić..
Albo może ktoś zna jakiś sposób, aby ograniczyć ilość odświeżanych elementów do minimum?
public partial class FormMain : Form
{
private const String LOGIN_PAGE = @"http://prisonwars.pl/";
private const String FORUM_PAGE = @"http://sanquentin.prisonwars.pl/forum/index.php/";
private const String MAIN_PAGE = @"http://sanquentin.prisonwars.pl/";
private Timer timer;
private String login;
private String password;
public FormMain()
{
InitializeComponent();
webBrowser.ScriptErrorsSuppressed = true;
comboBox1.Text = "10";
inTimer(20);
LogForm logForm = new LogForm();
if (logForm.ShowDialog() == DialogResult.OK)
{
login = logForm.Login;
password = logForm.Password;
webBrowser.Navigate(LOGIN_PAGE);
timer.Start();
}
}
void inTimer(int a)
{
timer = new Timer();
timer.Tick += new EventHandler(TimerTick);
timer.Interval = a * 60 * 10;
}
private void TimerTick(object sender, EventArgs e)
{
webBrowser.Refresh();
}
private void LoginToolStripMenuItemClick(object sender, System.EventArgs e)
{
LogForm logForm = new LogForm();
if (logForm.ShowDialog() == DialogResult.OK)
{
login = logForm.Login;
password = logForm.Password;
webBrowser.Navigate(LOGIN_PAGE);
timer.Start();
}
}
private void WebBrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
String url = e.Url.AbsoluteUri;
if (url.Equals(LOGIN_PAGE))
{
webBrowser.Document.GetElementById("login").SetAttribute("value", login);
webBrowser.Document.GetElementById("password").SetAttribute("value", password);
HtmlElementCollection tec = webBrowser.Document.GetElementsByTagName("input");
foreach (HtmlElement item in tec)
{
if (!String.IsNullOrEmpty(item.OuterHtml) && item.OuterHtml.Contains("login.png"))
{
item.InvokeMember("click");
break;
}
}
}
else if (url.Equals(MAIN_PAGE))
{
webBrowser.Navigate(FORUM_PAGE);
}
}
private void timeBox_SelectedIndexChanged(object sender, EventArgs e)
{
for(int i=0;i<40;i++)
if(timeBox.Text==(Convert.ToString(i+1)))
inTimer(i+1);
}
}