490.000đ
Thành phần:
Purified water, Glyceryl stearate, Paraffinum liquidum, Propylene glycol, Glycerin, Hydrogen peroxide, Stearic acid, PEG-100 Stearate, Parfum, Methylparaben, Rice bran oil/Hydrogenated rice bran oil esters, Macadamia integrifolia seed oil, Propylparaben, Phosphoric acid, Disodium EDTA, Candida bombicola/Glucose/Methyl rapeseedate ferment, Trisodium phosphate, Argania spinosa kernel oil, Chamomilla recutita flower extract, Gentiana lutea root extract, Artemisia absinthium extract, Portulaca oleracea extract, Acer saccharum extract, Gluconobacter/Honey ferment filtrate, Sodium hyaluronate, Potassium sorbate, Phenoxyethanol.
Công dụng:
Ủ nano herrin giúp dưỡng trắng da từ sâu bên trong , thúc đẩy quá trình da sản sinh ra lớp colagen tự nhiên cho da sáng dàn lên trông thấy
Cấp ẩm cho da tức thì làm da luôn mềm mịn căng mướt
Tăng khả năng đàn hồi cho da
Khi sử dụng ử thường xuyên kết hợp với kem body phân tử nano herrin sẽ giúp da bật tone từ 0,5 – 2 tone tuỳ từng loại da
Ưu điểm :
Không gây hại cho da , không bào mòn da , không gây châm chích cho da và đặc biết không bắt nắng
Mùi kem ủ thơm nhẹ dễ chịu tạo cảm giác thoải mái cho người sử dụng
Khi dùng kèm với body hiệu quả gấp 3 lần.
Cách sử dụng: Nên sử dụng sản phẩm theo 4 bước để đạt được hiệu quả tối ưu:
Bước 1: Tắm sạch da bằng sữa tắm sau đó lau khô người.
Bước 2: Dùng một lượng vừa đủ thoa và massage nhẹ nhàng trên da khoảng 5-10 phút và thư giãn cùng hương thơm ngọt ngào, dịu nhẹ của sữa non.
Bước 3: Rửa thật sạch với nước và lau khô da sau khi sử dụng.
Bước 4: Sau khi tắm, nên kết hợp dùng Kem body để làn da được dưỡng trắng toàn diện như một lộ trình dưỡng trắng da tại spa. Có thể sử dụng sản phẩm 2-3 lần/ tuần như một liệu pháp làm sạch và dưỡng trắng da hiệu quả. (Tẩy da chết trươc khi tắm để đạt hiệu quả nhất)
Lưu ý: Không để sản phẩm rơi vào mắt, đọc kĩ hướng dẫn sử dụng sản phẩm trước khi dùng, ngừng ngay sử dụng nếu có dấu hiệu bị dị ứng, bảo quản sản phẩm nơi khô mát, tránh ánh sáng mặt trời.
if ($this->useLocking) { // ignoring errors here, there's not much we can do about them flock($this->stream, LOCK_EX); } $this->streamWrite($this->stream, $record); if ($this->useLocking) { flock($this->stream, LOCK_UN); } } /** * Write to stream * @param resource $stream * @param array $record */ protected function streamWrite($stream, array $record) { fwrite($stream, (string) $record['formatted']); } private function customErrorHandler($code, $msg) { $this->errorMessage = preg_replace('{^(fopen|mkdir)\(.*?\): }', '', $msg); } /** * @param string $stream * * @return null|string */ private function getDirFromStream($stream) { $pos = strpos($stream, '://'); if ($pos === false) { return dirname($stream); } if ('file://' === substr($stream, 0, 7)) {
"fwrite(): write of 1678 bytes failed with errno=28 No space left on device"
if ($this->useLocking) { // ignoring errors here, there's not much we can do about them flock($this->stream, LOCK_EX); } $this->streamWrite($this->stream, $record); if ($this->useLocking) { flock($this->stream, LOCK_UN); } } /** * Write to stream * @param resource $stream * @param array $record */ protected function streamWrite($stream, array $record) { fwrite($stream, (string) $record['formatted']); } private function customErrorHandler($code, $msg) { $this->errorMessage = preg_replace('{^(fopen|mkdir)\(.*?\): }', '', $msg); } /** * @param string $stream * * @return null|string */ private function getDirFromStream($stream) { $pos = strpos($stream, '://'); if ($pos === false) { return dirname($stream); } if ('file://' === substr($stream, 0, 7)) {
$this->createDir(); $this->errorMessage = null; set_error_handler(array($this, 'customErrorHandler')); $this->stream = fopen($this->url, 'a'); if ($this->filePermission !== null) { @chmod($this->url, $this->filePermission); } restore_error_handler(); if (!is_resource($this->stream)) { $this->stream = null; throw new \UnexpectedValueException(sprintf('The stream or file "%s" could not be opened: '.$this->errorMessage, $this->url)); } } if ($this->useLocking) { // ignoring errors here, there's not much we can do about them flock($this->stream, LOCK_EX); } $this->streamWrite($this->stream, $record); if ($this->useLocking) { flock($this->stream, LOCK_UN); } } /** * Write to stream * @param resource $stream * @param array $record */ protected function streamWrite($stream, array $record) { fwrite($stream, (string) $record['formatted']); } private function customErrorHandler($code, $msg) { $this->errorMessage = preg_replace('{^(fopen|mkdir)\(.*?\): }', '', $msg); }
$this->url = $this->getTimedFilename(); $this->close(); } /** * {@inheritdoc} */ protected function write(array $record) { // on the first record written, if the log is new, we should rotate (once per day) if (null === $this->mustRotate) { $this->mustRotate = !file_exists($this->url); } if ($this->nextRotation < $record['datetime']) { $this->mustRotate = true; $this->close(); } parent::write($record); } /** * Rotates the files. */ protected function rotate() { // update filename $this->url = $this->getTimedFilename(); $this->nextRotation = new \DateTime('tomorrow'); // skip GC of old logs if files are unlimited if (0 === $this->maxFiles) { return; } $logFiles = glob($this->getGlobPattern()); if ($this->maxFiles >= count($logFiles)) { // no files to remove return;
* * @author Jordi Boggiano <j.boggiano@seld.be> * @author Christophe Coevoet <stof@notk.org> */ abstract class AbstractProcessingHandler extends AbstractHandler { /** * {@inheritdoc} */ public function handle(array $record) { if (!$this->isHandling($record)) { return false; } $record = $this->processRecord($record); $record['formatted'] = $this->getFormatter()->format($record); $this->write($record); return false === $this->bubble; } /** * Writes the record down to the log of the implementing handler * * @param array $record * @return void */ abstract protected function write(array $record); /** * Processes a record. * * @param array $record * @return array */ protected function processRecord(array $record) {
} $ts->setTimezone(static::$timezone); $record = array( 'message' => (string) $message, 'context' => $context, 'level' => $level, 'level_name' => $levelName, 'channel' => $this->name, 'datetime' => $ts, 'extra' => array(), ); try { foreach ($this->processors as $processor) { $record = call_user_func($processor, $record); } while ($handler = current($this->handlers)) { if (true === $handler->handle($record)) { break; } next($this->handlers); } } catch (Exception $e) { $this->handleException($e, $record); } return true; } /** * Ends a log cycle and frees all resources used by handlers. * * Closing a Handler means flushing all buffers and freeing any open resources/handles. * Handlers that have been closed should be able to accept log records again and re-open * themselves on demand, but this may not always be possible depending on implementation. * * This is useful at the end of a request and will be called automatically on every handler
* @param array $context The log context * @return bool Whether the record has been processed */ public function err($message, array $context = array()) { return $this->addRecord(static::ERROR, $message, $context); } /** * Adds a log record at the ERROR level. * * This method allows for compatibility with common interfaces. * * @param string $message The log message * @param array $context The log context * @return bool Whether the record has been processed */ public function error($message, array $context = array()) { return $this->addRecord(static::ERROR, $message, $context); } /** * Adds a log record at the CRITICAL level. * * This method allows for compatibility with common interfaces. * * @param string $message The log message * @param array $context The log context * @return bool Whether the record has been processed */ public function crit($message, array $context = array()) { return $this->addRecord(static::CRITICAL, $message, $context); } /** * Adds a log record at the CRITICAL level. * * This method allows for compatibility with common interfaces.
* @return void */ public function write($level, $message, array $context = []) { $this->writeLog($level, $message, $context); } /** * Write a message to Monolog. * * @param string $level * @param string $message * @param array $context * @return void */ protected function writeLog($level, $message, $context) { $this->fireLogEvent($level, $message = $this->formatMessage($message), $context); $this->monolog->{$level}($message, $context); } /** * Register a file log handler. * * @param string $path * @param string $level * @return void */ public function useFiles($path, $level = 'debug') { $this->monolog->pushHandler($handler = new StreamHandler($path, $this->parseLevel($level))); $handler->setFormatter($this->getDefaultFormatter()); } /** * Register a daily file log handler. * * @param string $path
* * @param string $message * @param array $context * @return void */ public function critical($message, array $context = []) { $this->writeLog(__FUNCTION__, $message, $context); } /** * Log an error message to the logs. * * @param string $message * @param array $context * @return void */ public function error($message, array $context = []) { $this->writeLog(__FUNCTION__, $message, $context); } /** * Log a warning message to the logs. * * @param string $message * @param array $context * @return void */ public function warning($message, array $context = []) { $this->writeLog(__FUNCTION__, $message, $context); } /** * Log a notice to the logs. * * @param string $message * @param array $context * @return void
*/ public function report(Exception $e) { if ($this->shouldntReport($e)) { return; } if (method_exists($e, 'report')) { return $e->report(); } try { $logger = $this->container->make(LoggerInterface::class); } catch (Exception $ex) { throw $e; // throw the original exception } $logger->error( $e->getMessage(), array_merge($this->context(), ['exception' => $e] )); } /** * Determine if the exception should be reported. * * @param \Exception $e * @return bool */ public function shouldReport(Exception $e) { return ! $this->shouldntReport($e); } /** * Determine if the exception is in the "do not report" list. * * @param \Exception $e * @return bool */
* A list of the inputs that are never flashed for validation exceptions. * * @var array */ protected $dontFlash = [ 'password', 'password_confirmation', ]; /** * Report or log an exception. * * This is a great spot to send exceptions to Sentry, Bugsnag, etc. * * @param \Exception $exception * @return void */ public function report(Exception $exception) { parent::report($exception); } /** * Render an exception into an HTTP response. * * @param \Illuminate\Http\Request $request * @param \Exception $exception * @return \Illuminate\Http\Response */ public function render($request, Exception $exception) { return parent::render($request, $exception); } }
} /** * Handle an uncaught exception from the application. * * Note: Most exceptions can be handled via the try / catch block in * the HTTP and Console kernels. But, fatal error exceptions must * be handled differently since they are not normal exceptions. * * @param \Throwable $e * @return void */ public function handleException($e) { if (! $e instanceof Exception) { $e = new FatalThrowableError($e); } try { $this->getExceptionHandler()->report($e); } catch (Exception $e) { // } if ($this->app->runningInConsole()) { $this->renderForConsole($e); } else { $this->renderHttpResponse($e); } } /** * Render an exception to the console. * * @param \Exception $e * @return void */ protected function renderForConsole(Exception $e) { $this->getExceptionHandler()->renderForConsole(new ConsoleOutput, $e);
Key | Value |
REDIRECT_UNIQUE_ID | "aB1n3bGGVMUsoIm7KEkOowAAAAA"
|
REDIRECT_HTTPS | "on"
|
REDIRECT_SSL_TLS_SNI | "www.proparents.vn"
|
REDIRECT_STATUS | "200"
|
UNIQUE_ID | "aB1n3bGGVMUsoIm7KEkOowAAAAA"
|
HTTPS | "on"
|
SSL_TLS_SNI | "www.proparents.vn"
|
HTTP_ACCEPT | "*/*"
|
HTTP_USER_AGENT | "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"
|
HTTP_ACCEPT_ENCODING | "gzip, br, zstd, deflate"
|
HTTP_HOST | "www.proparents.vn"
|
PATH | "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
|
SERVER_SIGNATURE | "" |
SERVER_SOFTWARE | "Apache/2"
|
SERVER_NAME | "www.proparents.vn"
|
SERVER_ADDR | "112.213.91.215"
|
SERVER_PORT | "443"
|
REMOTE_ADDR | "18.220.167.202"
|
DOCUMENT_ROOT | "/home/proparents/domains/proparents.vn/private_html"
|
REQUEST_SCHEME | "https"
|
CONTEXT_PREFIX | "" |
CONTEXT_DOCUMENT_ROOT | "/home/proparents/domains/proparents.vn/private_html"
|
SERVER_ADMIN | "webmaster@proparents.vn"
|
SCRIPT_FILENAME | "/home/proparents/domains/proparents.vn/private_html/index.php"
|
REMOTE_PORT | "64247"
|
REDIRECT_URL | "/u-trang-annealed-white-skin.html"
|
GATEWAY_INTERFACE | "CGI/1.1"
|
SERVER_PROTOCOL | "HTTP/1.1"
|
REQUEST_METHOD | "GET"
|
QUERY_STRING | "" |
REQUEST_URI | "/u-trang-annealed-white-skin.html"
|
SCRIPT_NAME | "/index.php"
|
PHP_SELF | "/index.php"
|
REQUEST_TIME_FLOAT | 1746757597.7511
|
REQUEST_TIME | 1746757597
|
APP_NAME | "proparents.vn"
|
APP_ENV | "prod"
|
APP_KEY | "base64:UuF6+mYiV/yaDvS4eAv0mHB3A3jPTvWnOSUstfTCf+Q="
|
APP_DEBUG | "true"
|
APP_LOG_LEVEL | "debug"
|
APP_URL | "https://proparents.vn/"
|
APP_LOG | "daily"
|
DB_CONNECTION | "mysql"
|
DB_HOST | "localhost"
|
DB_PORT | "3306"
|
DB_DATABASE | "proparents_data2"
|
DB_USERNAME | "proparents_user"
|
DB_PASSWORD | "oEEDlkbV"
|
BROADCAST_DRIVER | "log"
|
CACHE_DRIVER | "file"
|
SESSION_DRIVER | "file"
|
SESSION_LIFETIME | "120"
|
REDIS_HOST | "127.0.0.1"
|
REDIS_PASSWORD | "null"
|
REDIS_PORT | "6379"
|
MAIL_DRIVER | "smtp"
|
MAIL_HOST | "smtp.gmail.com"
|
MAIL_PORT | "587"
|
MAIL_USERNAME | "congdongchamechuyenghiep@gmail.com"
|
MAIL_PASSWORD | "suhefifmiwyvteiq"
|
MAIL_FROM_ADDRESS | "congdongchamechuyenghiep@gmail.com"
|
MAIL_FROM_NAME | "Proparent"
|
MAIL_ENCRYPTION | "tls"
|
QUEUE_CONNECTION | "redis"
|
QUEUE_DRIVER | "redis"
|
PUSHER_APP_ID | "" |
PUSHER_APP_KEY | "" |
PUSHER_APP_SECRET | "" |
PUSHER_APP_CLUSTER | "mt1"
|
STORE_TEMPLATE | "organic"
|
PAYMENT_MOMO_SERVER | "https://test-payment.momo.vn"
|
PAYMENT_MOMO_PARTNER | "MOMOZH0L20190313"
|
PAYMENT_MOMO_ACCESS | "eLbFLL4QG99vaAAD"
|
PAYMENT_MOMO_SECRET | "16c7uWFBJ5rAVAstEtmoA5vVX0LGITDt"
|
PAYMENT_ONEPAY_LOCAL_SERVER | "https://onepay.vn/onecomm-pay/vpc.op"
|
PAYMENT_ONEPAY_LOCAL_ACCESSCODE | "G6HUQ6BX"
|
PAYMENT_ONEPAY_LOCAL_MERCHANT | "WBCOSMETIC"
|
PAYMENT_ONEPAY_LOCAL_SECRET | "3D7FF79A36159C4BA956198CE45907D0"
|
CALLBACK_SERVER | "https://wbcosmetic.vn/checkout/payment-result"
|
PRODUCT_PP | "20"
|
NEWS_PP | "10"
|
ARCANEDEV_LOGVIEWER_MIDDLEWARE | "web,auth"
|
YOUTUBE_MAIN | "https://www.youtube.com/embed/-vFKJiQX1m0"
|
HOME_HOTNEWS_ID | "122"
|
HOME_WEEKLY_MEMBER | "12"
|
SELLER_AUTO_APPROVE | "0"
|
SELLER_FILEINFO_ENABLE | "0"
|
ADMIN_MAIL | "wbcosmetic.vn@gmail.com"
|
MENU_POPUP_SLIDE | "" |
VNPOST_USERNAME | "0898499486"
|
VNPOST_PASSWORD | "abcd@1234"
|
Key | Value |
APP_NAME | "proparents.vn"
|
APP_ENV | "prod"
|
APP_KEY | "base64:UuF6+mYiV/yaDvS4eAv0mHB3A3jPTvWnOSUstfTCf+Q="
|
APP_DEBUG | "true"
|
APP_LOG_LEVEL | "debug"
|
APP_URL | "https://proparents.vn/"
|
APP_LOG | "daily"
|
DB_CONNECTION | "mysql"
|
DB_HOST | "localhost"
|
DB_PORT | "3306"
|
DB_DATABASE | "proparents_data2"
|
DB_USERNAME | "proparents_user"
|
DB_PASSWORD | "oEEDlkbV"
|
BROADCAST_DRIVER | "log"
|
CACHE_DRIVER | "file"
|
SESSION_DRIVER | "file"
|
SESSION_LIFETIME | "120"
|
REDIS_HOST | "127.0.0.1"
|
REDIS_PASSWORD | "null"
|
REDIS_PORT | "6379"
|
MAIL_DRIVER | "smtp"
|
MAIL_HOST | "smtp.gmail.com"
|
MAIL_PORT | "587"
|
MAIL_USERNAME | "congdongchamechuyenghiep@gmail.com"
|
MAIL_PASSWORD | "suhefifmiwyvteiq"
|
MAIL_FROM_ADDRESS | "congdongchamechuyenghiep@gmail.com"
|
MAIL_FROM_NAME | "Proparent"
|
MAIL_ENCRYPTION | "tls"
|
QUEUE_CONNECTION | "redis"
|
QUEUE_DRIVER | "redis"
|
PUSHER_APP_ID | "" |
PUSHER_APP_KEY | "" |
PUSHER_APP_SECRET | "" |
PUSHER_APP_CLUSTER | "mt1"
|
STORE_TEMPLATE | "organic"
|
PAYMENT_MOMO_SERVER | "https://test-payment.momo.vn"
|
PAYMENT_MOMO_PARTNER | "MOMOZH0L20190313"
|
PAYMENT_MOMO_ACCESS | "eLbFLL4QG99vaAAD"
|
PAYMENT_MOMO_SECRET | "16c7uWFBJ5rAVAstEtmoA5vVX0LGITDt"
|
PAYMENT_ONEPAY_LOCAL_SERVER | "https://onepay.vn/onecomm-pay/vpc.op"
|
PAYMENT_ONEPAY_LOCAL_ACCESSCODE | "G6HUQ6BX"
|
PAYMENT_ONEPAY_LOCAL_MERCHANT | "WBCOSMETIC"
|
PAYMENT_ONEPAY_LOCAL_SECRET | "3D7FF79A36159C4BA956198CE45907D0"
|
CALLBACK_SERVER | "https://wbcosmetic.vn/checkout/payment-result"
|
PRODUCT_PP | "20"
|
NEWS_PP | "10"
|
ARCANEDEV_LOGVIEWER_MIDDLEWARE | "web,auth"
|
YOUTUBE_MAIN | "https://www.youtube.com/embed/-vFKJiQX1m0"
|
HOME_HOTNEWS_ID | "122"
|
HOME_WEEKLY_MEMBER | "12"
|
SELLER_AUTO_APPROVE | "0"
|
SELLER_FILEINFO_ENABLE | "0"
|
ADMIN_MAIL | "wbcosmetic.vn@gmail.com"
|
MENU_POPUP_SLIDE | "" |
VNPOST_USERNAME | "0898499486"
|
VNPOST_PASSWORD | "abcd@1234"
|