Commit Graph

59 Commits

Author SHA1 Message Date
Jonathan Moore d8470aa45a
implementing review from @claudiosanches 2019-06-18 21:20:39 +01:00
Jonathan Moore 9e8debd7ba
Avoid attempting to cache expired sessions
get_session() attempts to cache a session even if it is already expired.
The code used passes negative expiry seconds to wp_cache_add if the session expired in the past:
wp_cache_add( $this->get_cache_prefix() . $customer_id, $value, WC_SESSION_CACHE_GROUP, $this->_session_expiration - time() );

Depending on the caching layers used this will give errors in the logs such as:
ERR invalid expire time in setex in /var/www/html/wp-content/plugins/redis-cache/includes/predis/src/Client.php:370
as reported on: https://wordpress.org/support/topic/error-when-trying-to-get-a-get-a-cache-not-available/
2019-06-03 22:11:46 +01:00
Mike Jolley ccc5805632 Use secure and http cookies 2019-03-15 11:34:10 +00:00
Mike Jolley 203dba5a1f After logging in, migrate session data 2019-03-12 16:36:15 +00:00
Mike Jolley cab45fafb3
Merge pull request #22650 from woocommerce/update/20995
Registration success notices
2019-02-08 13:04:36 +00:00
Mike Jolley c88a92144b Only update session cookie if the value changes 2019-02-05 13:02:20 +00:00
Mike Jolley eed91070b1 Allow notice to persist after customer ID change 2019-02-04 15:48:59 +00:00
John Blackbourn 71def7b5f0 Revert "Add support for clearing a session and associated cart contents when switching between accounts using the User Switching plugin. See #21989."
This reverts commit b0b36ae4b8.
2018-11-21 18:50:59 +01:00
John Blackbourn b0b36ae4b8 Add support for clearing a session and associated cart contents when switching between accounts using the User Switching plugin. See #21989. 2018-11-20 18:58:42 +01:00
John Blackbourn 179aa0853d Add a public method for forgetting a session without clearing it. 2018-11-20 18:58:14 +01:00
Rodrigo Primo 734a9370be Change query to save session data
Use `INSERT ... ON DUPLICATE KEY UPDATE` instead of `REPLACE` in the query that saves session data. Doing this to prevent deadlocks in this table. For more information see https://github.com/woocommerce/woocommerce/issues/20912#issuecomment-420888726
2018-09-26 14:46:28 -03:00
Rodrigo Primo 3f82ecee8c Remove unnecessary uses of @codingStandardsIgnoreLine 2018-07-31 16:10:51 -03:00
Claudio Sanches 8a31755b8c Fixed includes/class-wc-session-handler.php PHPCS violations 2018-03-21 00:18:01 -03:00
Mike Jolley 42b1ab50c0 Ensure customer id is not empty in cookie 2018-01-23 13:36:53 +00:00
Mike Jolley 4eaf1afb88 Cleanup session callback. 2017-12-15 15:14:05 +00:00
Mike Jolley 15089fc432 Added init method and phpcs changes. 2017-12-15 15:13:24 +00:00
Boro Sitnikovski 6c29d886ca Use protected instead of private methods to allow easy override 2017-12-04 15:10:35 +01:00
Mike Jolley d3666738d8 Merge branch 'pr/15069' 2017-05-23 18:56:58 +01:00
Rasmus Bengtsson 185934fad9 Fix phpdoc to include params and correct types 2017-05-15 13:50:52 +02:00
Ninos Ego 89113cf6b2 Added filter for cookie name 2017-05-10 21:46:43 +02:00
Mike Jolley bbf8e750ce Tidy up includes 2017-02-16 11:46:01 +00:00
Aristeides Stathopoulos 0516e96843 PEAR.Functions.FunctionCallSignature.SpaceBeforeCloseBracket 2016-09-02 04:33:57 +03:00
Aristeides Stathopoulos f2730eea02 WordPress.WhiteSpace.ControlStructureSpacing.BlankLineAfterEnd 2016-08-27 08:57:05 +03:00
Aristeides Stathopoulos ec8a0b288b PHPCS: WordPress.Arrays.ArrayDeclaration.NoCommaAfterLast 2016-08-27 05:08:49 +03:00
Aristeides Stathopoulos b063bcfe4c last item in a multiline-array should end in a comma 2016-08-27 04:46:45 +03:00
Mike Jolley 66c61eebc8 Define full path for includes
Closes #11087
2016-07-27 11:58:43 +01:00
Mike Jolley 874d2e3e0a Check cookie is a string 2016-03-16 10:04:53 +00:00
Mike Jolley 32acec8477 Load session handler and abstract together 2016-03-10 09:31:25 +00:00
Gerhard Potgieter 62e19162e6 Use $wpdb->replace instead of doing a select and then deciding to do an update or insert. Fixes #10389 2016-02-23 14:48:48 +02:00
Mike Jolley 6c8709f4b5 Return false if cookie_hash is not set. 2016-01-18 10:34:06 +00:00
Mike Jolley 2714ec0aeb Keep cookie/session alive after order.
@claudiosmweb this ok with you?

Closes #10045
2016-01-11 10:28:38 +00:00
Mike Jolley b474dcb879 Use WC_Cache_Helper for session class prefixes 2015-11-13 23:12:44 +00:00
Mike Jolley cb0e61bd4e Set prefix_num first time 2015-11-05 15:21:06 +00:00
Claudio Sanches ee30b5b308 Fixed php docs standards 2015-11-03 11:31:20 -02:00
Mike Jolley 12fe4e7a52 Use delimiter in hashing function 2015-10-23 12:02:29 +01:00
Mike Jolley b81fc128ac Use hash_equals when comparing hashes
PHP 5.6+ but WP has a fallback inside.
2015-10-23 12:00:56 +01:00
Claudio Sanches 1889c66061 Fixed coding standards 2015-10-07 10:58:13 -03:00
Mike Jolley b27635409c New Session Handler
This merges and adapts
https://github.com/kloon/woocommerce-large-sessions for core. Closes
#6846.

Differences:
- Rather than delete each cache key individually, this invalidates all
at once (idea from https://core.trac.wordpress.org/ticket/4476)
- Removes ‘replace’ which increments session_id keys unnecessarily.
- Fixes remove/restore cart sessions from making it dirty each page load

Kudos to @kloon for the bulk of the work and testing on Woo.com.

cc @claudiosmweb
2015-10-07 14:47:29 +01:00
Mike Jolley 3b45c0d46f Set nonce_user_logged_out to WC session ID, if set
Closes #9
2015-06-01 13:36:07 +01:00
Mike Jolley 9f269f765d Load persistent cart when empty, and Prevent cart being cleared when accessing the login page.
Closes #7636
2015-03-06 12:02:02 +00:00
James Golovich 44d2552798 Mark session clean after commiting data
If someone is calling save_data() manually in addition to WooCommerce calling it the data is saved twice regardless of
any new data.
2015-02-20 23:55:24 -08:00
Mike Jolley 5695f514ed get_session_data() check to see if user has session before getting option
Closes #7185
2015-01-23 11:14:30 +00:00
Mike Jolley e8d47748ea Session handler doc blocks 2015-01-23 11:14:30 +00:00
Ross McKay 648040d458 Don't return option_value from cleanup_sessions() query, no longer required 2014-12-09 08:16:40 +11:00
Ross McKay d37d58d19f Escape `_` in LIKE to allow index search
Also filters for expired sessions in DB, not PHP.
Fixes #6916
2014-12-09 08:07:12 +11:00
Ross McKay ee0cbb27c6 only delete sessions from object cache if using persistent object cache 2014-12-08 09:04:55 +11:00
Ross McKay 95a25d3023 Delete cached sessions when clearing expired sessions
Fixes #6907
2014-12-06 18:43:56 +11:00
shivapoudel 2200a3ae2e Absolute path fix for class-wc-session-handler.php 2014-09-21 00:44:26 +05:45
Mike Jolley 6323f1c5c2 Stronger session ID generation 2014-05-20 11:08:31 +01:00
Mike Jolley 41eab15b13 Clear sessions after ordering/on logout 2014-05-20 10:01:26 +01:00