Zurück   xt:Commerce Webshop Shop Support > xt:Commerce Shopsoftware Community Area > Installation und Konfiguration

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 13.06.2005, 08:56
 
Registriert seit: 11.04.2005
Beiträge: 12
Standard

Hallo Leute,

ich habe folgendes Problem:
Ich m?chte, dass die registrierten User im Shop nach 30 Tagen aufgefordert werden ihr Passwort zu ?ndern.
ich hab es bisher mit folgendem Code versucht:

Code:
$check_timestamp = xtc_db_query("select password_timestamp from " . TABLE_CUSTOMERS . "where customers_username = '" . xtc_db_input($username) . " ' ");
// $timestamp = xtc_db_fetch_array($check_timestamp);

$seconds_30days = 2592000;
$time = time()

if (($time - $check_timestamp) > $seconds_30days)  {

//  xtc_redirect(xtc_href_link(FILENAME_NEW_PASSWORT));


}
else
{

//  xtc_redirect(xtc_href_link(FILENAME_DEFAULT));

}
Hier kurz eine Erkl?rung:

Die Datenbankabfrage funktioniert, nur die Weiterleitung funktioniert nicht.
Ich denke es h?ngt mit dem redirect zusammen, da der Header schon ?bergeben worden ist. Hab den deshalb erst mal auskommentiert.
Ich w?rde mich ?ber eine Antwort und m?gliche L?sungsvorschl?ge sehr freuen.

Gr??e

Frederik
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #2 (permalink)  
Alt 13.06.2005, 09:13
Erfahrener Benutzer
 
Registriert seit: 08.09.2003
Beiträge: 2.024
Standard

Nur mal so beim ?berfliegen:

das fetch_array muss da wieder rein.
In der if abfrage muss dann timestamp['password_timestamp'] rein.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #3 (permalink)  
Alt 13.06.2005, 09:58
 
Registriert seit: 11.04.2005
Beiträge: 12
Standard

Aktueller Code:

Code:
$check_timestamp = xtc_db_query("select password_timestamp from " . TABLE_CUSTOMERS . "where customers_username = '" . xtc_db_input($username) . " ' ");
$timestamp = xtc_db_fetch_array($check_timestamp);

$seconds_30days = 2592000;
$time = time()

if (($time - $timestamp['password_timestamp']) > $seconds_30days)  {
  xtc_redirect(xtc_href_link(FILENAME_NEW_PASSWORT));
}
else
{
  xtc_redirect(xtc_href_link(FILENAME_DEFAULT));
}
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #4 (permalink)  
Alt 13.06.2005, 12:31
Erfahrener Benutzer
 
Registriert seit: 08.09.2003
Beiträge: 2.024
Standard

Und? Funktionierts?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #5 (permalink)  
Alt 13.06.2005, 13:10
 
Registriert seit: 04.10.2004
Beiträge: 269
Standard

Zitat:
Originally posted by incom@Jun 13 2005, 08:56 AM
Hallo Leute,

ich habe folgendes Problem:
Ich m?chte, dass die registrierten User im Shop nach 30 Tagen aufgefordert werden ihr Passwort zu ?ndern.
ich hab es bisher mit folgendem Code versucht:

Code:
$check_timestamp = xtc_db_query("select password_timestamp from " . TABLE_CUSTOMERS . "where customers_username = '" . xtc_db_input($username) . " ' ");
// $timestamp = xtc_db_fetch_array($check_timestamp);

$seconds_30days = 2592000;
$time = time()

if (($time - $check_timestamp) > $seconds_30days)  {

//  xtc_redirect(xtc_href_link(FILENAME_NEW_PASSWORT));
}
else
{

//  xtc_redirect(xtc_href_link(FILENAME_DEFAULT));

}
Hier kurz eine Erkl?rung:

Die Datenbankabfrage funktioniert, nur die Weiterleitung funktioniert nicht.
Ich denke es h?ngt mit dem redirect zusammen, da der Header schon ?bergeben worden ist. Hab den deshalb erst mal auskommentiert.
Ich w?rde mich ?ber eine Antwort und m?gliche L?sungsvorschl?ge sehr freuen.

Gr??e

Frederik

In welchem Modul soll dieser Code denn ablaufen?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #6 (permalink)  
Alt 13.06.2005, 13:29
Erfahrener Benutzer
 
Registriert seit: 08.09.2003
Beiträge: 2.024
Standard

w?rde in die login.php passen.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #7 (permalink)  
Alt 14.06.2005, 12:15
 
Registriert seit: 11.04.2005
Beiträge: 12
Standard

@gswkaiser
ja das ganze soll in die login.php implementiert werden.


@Hubi

Es funktioniert noch nicht wirklich. Ich werde immer auf die index.php weitergeleitet, egal ob die bedingung erf?llt ist oder nicht.
Ich denke ich muss das ganze auch nochmal ?berarbeiten, da der User dann in den shop eingeloggt werden soll wenn das passwort noch nicht abgelaufen ist. Wobei er mich immer nur auf die Startseite weiterleitet, auf der man sich einloggen kann.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #8 (permalink)  
Alt 14.06.2005, 12:47
Erfahrener Benutzer
 
Registriert seit: 08.09.2003
Beiträge: 2.024
Standard

An welcher Stelle hast Du das in der login.php eingebaut? Poste einfach mal Deine ganze Datei.

Die sql stimmt nicht, da Du dich ja mit der eMail-Adresse einloggst oder hast Du das ge?ndert?

Aber der User muss auch eingeloggt werden, wenn das PW abgelaufen ist, sonst kann er das ja nicht ?ndern.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #9 (permalink)  
Alt 14.06.2005, 13:09
 
Registriert seit: 11.04.2005
Beiträge: 12
Standard

Also wir haben statt der Emailadresse einen Benutzernamen eingebaut.
Eben wenn er das Passwort ?ndern will muss er vorher eingeloggt werden. Nur hab ich noch keine ahnung wo ich das ganze dann hinschieben soll.

Wenn ich den code unterhalb der loginabfrage stelle, passiert ?berhaupt gar nix. er loggt sich ohne probleme ein als ob nix w?re.

hier die komplette datei.




Code:
<?php
/* -----------------------------------------------------------------------------------------
  $Id: login.php,v 1.9 2004/02/17 21:13:26 fanta2k Exp $  

  XT-Commerce - community made shopping
  http://www.xt-commerce.com

  Copyright (c) 2003 XT-Commerce
  -----------------------------------------------------------------------------------------
  based on: 
  (c) 2000-2001 The Exchange Project (earlier name of osCommerce)
  (c) 2002-2003 osCommerce(login.php,v 1.79 2003/05/19); www.oscommerce.com 
  (c) 2003   nextcommerce (login.php,v 1.13 2003/08/17); www.nextcommerce.org

  Released under the GNU General Public License 
  -----------------------------------------------------------------------------------------
  Third Party contribution:

  guest account idea by Ingo T. <xIngox@web.de>
  ---------------------------------------------------------------------------------------*/

 include( 'includes/application_top.php');
  // create smarty elements
 $smarty = new Smarty;
 // include boxes
 require(DIR_FS_CATALOG .'templates/'.CURRENT_TEMPLATE. '/source/boxes.php'); 
  
 // include needed functions
 require_once(DIR_FS_INC . 'xtc_draw_password_field.inc.php');
 require_once(DIR_FS_INC . 'xtc_validate_password.inc.php');
 require_once(DIR_FS_INC . 'xtc_array_to_string.inc.php');
 require_once(DIR_FS_INC . 'xtc_image_button.inc.php');
 require_once(DIR_FS_INC . 'xtc_php_mail.inc.php');
 
 require_once(DIR_WS_CLASSES . 'class.phpmailer.php');

 // redirect the customer to a friendly cookie-must-be-enabled page if cookies are disabled (or the session has not started)
 if ($session_started == false) {
  xtc_redirect(xtc_href_link(FILENAME_COOKIE_USAGE));
 }

 if (isset($_GET['action']) && ($_GET['action'] == 'process')) {
//  $email_address = xtc_db_prepare_input($_POST['email_address']);
  $username = xtc_db_prepare_input($_POST['email_address']);
  $password = xtc_db_prepare_input($_POST['password']);
  $IP = ($_SERVER['REMOTE_ADDR']);
  $mailtext = $username . ' hat sich mit folgender IP' . $IP . ' falsch angemeldet.';


//timestamp abfrage
  
  $check_timestamp = xtc_db_query("select password_timestamp from " . TABLE_CUSTOMERS . " where customers_username = '" . xtc_db_input($username) . "'");
  $timestamp = xtc_db_fetch_array($check_timestamp); 
  $seconds_30days = '2592000';
  $time = time();

   if (($time - $timestamp['password_timestamp']) > $seconds_30days)  {
     xtc_redirect(xtc_href_link(FILENAME_NEW_PASSWORD));   
   }
   else
   {
     xtc_redirect(xtc_href_link(FILENAME_DEFAULT));
   }
   


  // Check if email exists
  $check_customer_query = xtc_db_query("select customers_id, customers_firstname,customers_lastname, customers_gender, customers_password, customers_email_address, customers_default_address_id, customers_username from " . TABLE_CUSTOMERS . " where customers_username = '" . xtc_db_input($username) . "'");
  if (!xtc_db_num_rows($check_customer_query)) {
   $_GET['login'] = 'fail';
   $info_message=TEXT_NO_EMAIL_ADDRESS_FOUND;
     } else {
   $check_customer = xtc_db_fetch_array($check_customer_query);
   // Check that password is good
   if (!xtc_validate_password($password, $check_customer['customers_password'])) {
    $_GET['login'] = 'fail';
    $info_message=TEXT_LOGIN_ERROR;



	//email an shop@incom.de wegen login fehler  
	xtc_php_mail(EMAIL_SUPPORT_ADDRESS,EMAIL_SUPPORT_NAME,EMAIL_SUPPORT_ADDRESS,EMAIL_SUPPORT_NAME, '' , 'shop@incom.de' , 'Webmaster' , '' , '' , 'Fehlerhafte Benutzeranmeldung' , '' ,$mailtext);

	}
   else {
    if (SESSION_RECREATE == 'True') {
     xtc_session_recreate();
	}


    $check_country_query = xtc_db_query("select entry_country_id, entry_zone_id from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . (int)$check_customer['customers_id'] . "' and address_book_id = '" . $check_customer['customers_default_address_id'] . "'");
    $check_country = xtc_db_fetch_array($check_country_query);

    $_SESSION['customer_gender'] = $check_customer['customers_gender'];
    $_SESSION['customer_last_name'] = $check_customer['customers_lastname'];
    $_SESSION['customer_id'] = $check_customer['customers_id'];
    $_SESSION['customer_default_address_id'] = $check_customer['customers_default_address_id'];
    $_SESSION['customer_first_name'] = $check_customer['customers_firstname'];
    $_SESSION['customer_country_id'] = $check_country['entry_country_id'];
    $_SESSION['customer_zone_id'] = $check_country['entry_zone_id'];

    $date_now = date('Ymd');
    xtc_db_query("update " . TABLE_CUSTOMERS_INFO . " set customers_info_date_of_last_logon = now(), customers_info_number_of_logons = customers_info_number_of_logons+1 where customers_info_id = '" . (int)$_SESSION['customer_id'] . "'");

    // restore cart contents
    $_SESSION['cart']->restore_contents();

    if (sizeof($_SESSION['navigation']->snapshot) > 0) {
     $origin_href = xtc_href_link($_SESSION['navigation']->snapshot['page'], xtc_array_to_string($_SESSION['navigation']->snapshot['get'], array(xtc_session_name())), $_SESSION['navigation']->snapshot['mode']);
     $_SESSION['navigation']->clear_snapshot();
     xtc_redirect($origin_href);
    } else {
     xtc_redirect(xtc_href_link(FILENAME_DEFAULT));
    }
   }
  }
 }



 $breadcrumb->add(NAVBAR_TITLE_LOGIN, xtc_href_link(FILENAME_LOGIN, '', 'SSL'));
 require(DIR_WS_INCLUDES . 'header.php'); 

if ($_GET['info_message']) $info_message=$_GET['info_message'];
$smarty->assign('info_message',$info_message);
$smarty->assign('account_option',ACCOUNT_OPTIONS);
$smarty->assign('BUTTON_NEW_ACCOUNT','<a href="' . xtc_href_link(FILENAME_CREATE_ACCOUNT, '', 'SSL') . '">' . xtc_image_button('button_continue.gif', IMAGE_BUTTON_CONTINUE) . '</a>');
$smarty->assign('BUTTON_LOGIN',xtc_image_submit('button_login.gif', IMAGE_BUTTON_LOGIN));
$smarty->assign('BUTTON_GUEST','<a href="' . xtc_href_link(FILENAME_CREATE_GUEST_ACCOUNT, '', 'SSL') . '">' . xtc_image_button('button_continue.gif', IMAGE_BUTTON_CONTINUE) . '</a>');
$smarty->assign('FORM_ACTION',xtc_href_link(FILENAME_LOGIN, 'action=process', 'SSL'));
$smarty->assign('INPUT_MAIL',xtc_draw_input_field('email_address'));
$smarty->assign('INPUT_USERNAME',xtc_draw_input_field('username'));
$smarty->assign('INPUT_PASSWORD',xtc_draw_password_field('password'));
$smarty->assign('LINK_LOST_PASSWORD',xtc_href_link(FILENAME_PASSWORD_FORGOTTEN, '', 'SSL'));


 $smarty->assign('language', $_SESSION['language']);
 $smarty->caching = 0;
 $main_content=$smarty->fetch(CURRENT_TEMPLATE . '/module/login.html');
 $smarty->assign('main_content',$main_content);

 $smarty->assign('language', $_SESSION['language']);
 $smarty->caching = 0;
 if (!defined(RM)) $smarty->load_filter('output', 'note'); 
 $smarty->display(CURRENT_TEMPLATE . '/login_index.html');
 
?>
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
  #10 (permalink)  
Alt 15.06.2005, 05:19
 
Registriert seit: 04.10.2004
Beiträge: 269
Standard

Hat denn der angemeldete User eine Timestamp > 30 Tage?

Vom Code her kann ich da kein Problem erkennen.

Aus Performance-Gr?nden w?rde ich die Timestamp-Abfrage aber mit in die vorhandene Kunden-Abfrage aufnehmen, das spart einen DB-Zugriff.

Vor allem auch, weil Du bei Deiner L?sung auch nicht pr?fst, ob der Username legal ist! (if (!xtc_db_num_rows($check_customer_query)).....)
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Wong this Post!
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
ndern, passwort, tagen, weiterleitung

Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus



Alle Zeitangaben in WEZ +1. Es ist jetzt 07:19 Uhr.

Copyright © 2011 xt:Commerce GmbH / xt:Commerce International Ltd. - All Rights Reserved

xt:Commerce is a SafeCharge brand