Files
grzanieplus.pl/apps/update/lib/stToken.php
2025-03-12 17:06:23 +01:00

81 lines
2.0 KiB
PHP

<?php
/**
* SOTESHOP/stUpdate
*
* This file is the part of stUpdate application. License: (Open License SOTE) Open License SOTE.
* Do not modify this file, system will overwrite it during upgrade.
*
* @package stUpdate
* @subpackage libs
* @copyright SOTE (www.sote.pl)
* @license http://www.sote.pl/license/open (Open License SOTE) Open License SOTE
* @version $Id: stToken.php 3160 2010-01-26 13:30:27Z marek $
*/
/**
* Directory with tickets.
*/
if (!defined("INSTALL_CACHE_PATH")) define("INSTALL_CACHE_PATH", dirname(dirname(dirname(dirname(__FILE__)))).DIRECTORY_SEPARATOR.'install'.DIRECTORY_SEPARATOR.'cache');
/**
* Error message. Unable create ticket.
*/
if (!defined("CREATE_ERROR")) define("CREATE_ERROR", "Nie można utworzyć pliku ticketa");
/**
* Create hash.
*
* @return string
*/
function makeHash() {
$mt = microtime();
return md5($mt.rand(-2147483647,2147483647));
}
/**
* Create ticket file. Return file name.
*
* @return string
* @throws CREATE_ERROR
*/
function createToken() {
// if hash is duplicated create new hash
$filename = makeHash();
while (file_exists(INSTALL_CACHE_PATH.DIRECTORY_SEPARATOR.$filename)){
$filename = makeHash();
}
// create new ticket file
if (!touch(INSTALL_CACHE_PATH.DIRECTORY_SEPARATOR.$filename)) {
throw new Exception(CREATE_ERROR,1);
}else {
file_put_contents(INSTALL_CACHE_PATH.DIRECTORY_SEPARATOR.$filename,md5($filename));
}
// return ticket
return $filename;
}
/**
* Check if ticket exists.
*
* @param string $ticket
* @param boolean $unlink
* @return boolean
*/
function checkToken($ticket, $unlink = true) {
$filename = INSTALL_CACHE_PATH.DIRECTORY_SEPARATOR.$ticket;
if(file_exists($filename) && is_readable($filename)) {
$content = file_get_contents($filename);
// check ticket content
if ($content == md5($ticket)) {
if ($unlink) { return unlink($filename); }
}
}
return false;
}