Maison développement back-end tutoriel php 分享DEDECMS 验证码的一个细节有关问题。附提问一个疑惑,有关SESSION的

分享DEDECMS 验证码的一个细节有关问题。附提问一个疑惑,有关SESSION的

Jun 13, 2016 pm 12:59 PM
cookie nbsp session

分享DEDECMS 验证码的一个细节问题。附提问一个疑惑,有关SESSION的

本帖最后由 default7 于 2012-12-01 15:54:51 编辑
问题:重复提交问题。表单提交成功了,发现页面单击右键点击返回上一页,浏览器提示“此页面不可用”,按下F5重新刷新,结果又提交成功了。导致“如果不停地刷新”就可以不停地提交成功!验证码的问题。
代码:
<br />
if($dopost == 'add'){<br />
  $svali = GetCkVdValue();<br />
  if(strtolower($vdcode)!=$svali || $svali=='')<br />
  {<br />
      ResetVdValue();<br />
      ShowMsg('验证码错误!', '-1');<br />
      exit();<br />
  }<br />
}<br />
Copier après la connexion

解决: 一开始以为是ResetVdValue();这个函数的问题,最后才发现是执行顺序的问题,把 ResetVdValue(); 放到判断“提交的验证码是否正确”的代码之前就可以了。
<br />
if($dopost == 'add'){<br />
  $svali = GetCkVdValue();<br />
  ResetVdValue(); //位置移前<br />
  if(strtolower($vdcode)!=$svali || $svali=='')<br />
  {<br />
      ShowMsg('验证码错误!', '-1');<br />
      exit();<br />
  }<br />
}<br />
Copier après la connexion




后来看了验证码方面的获取和销毁的函数,有一个疑问的地方:
1.未改动前的文件:/include/common.func.php,函数GetCkVdValue()和ResetVdValue()
<br />
/**<br />
 *  获取验证码的session值<br />
 *<br />
 * @return    string<br />
 */<br />
function GetCkVdValue()<br />
{<br />
    @session_id($_COOKIE['PHPSESSID']);<br />
    @session_start();<br />
    return isset($_SESSION['securimage_code_value']) ? $_SESSION['securimage_code_value'] : '';<br />
}<br />
<br />
/**<br />
 *  PHP某些版本有Bug,不能在同一作用域中同时读session并改注销它,因此调用后需执行本函数<br />
 *<br />
 * @return    void<br />
 */<br />
function ResetVdValue()<br />
{<br />
    @session_start();<br />
    $_SESSION['securimage_code_value'] = '';<br />
}<br />
Copier après la connexion


2.未改动前的验证码生成程序:/include/vdimgck.php 开头的地方有写
<br />
$sessSavePath = DEDEDATA."/sessions/";<br />
<br />
// Session保存路径<br />
if(is_writeable($sessSavePath) && is_readable($sessSavePath)){ session_save_path($sessSavePath); }<br />
if(!empty($cfg_domain_cookie)) session_set_cookie_params(0,'/',$cfg_domain_cookie);<br />
<br />
session_start();<br />
Copier après la connexion



个人将代码修改成如下,文件/include/common.func.php
<br>
<br>
/**<br>
 *  获取验证码的session值<br>
 *<br>
 * @return    string<br>
 */<br>
function GetCkVdValue()<br>
{<br>
    $sessSavePath = DEDEDATA."/sessions/";<br>
    if(is_writeable($sessSavePath) && is_readable($sessSavePath)){ session_save_path($sessSavePath); }<br>
    if(!empty($GLOBALS['cfg_domain_cookie'])) session_set_cookie_params(0,'/',$GLOBALS['cfg_domain_cookie']);<br>
<br>
    @session_id($_COOKIE['PHPSESSID']);<br>
    @session_start();<br>
    return isset($_SESSION['securimage_code_value']) ? $_SESSION['securimage_code_value'] : '';<br>
}<br>
<br>
/**<br>
 *  PHP某些版本有Bug,不能在同一作用域中同时读session并改注销它,因此调用后需执行本函数<br>
 *<br>
 * @return    void<br>
 */<br>
function ResetVdValue()<br>
{<br>
    $sessSavePath = DEDEDATA."/sessions/";<br>
    if(is_writeable($sessSavePath) && is_readable($sessSavePath)){ session_save_path($sessSavePath); } <div class="clear">
                 
              
              
        
            </div>
Copier après la connexion
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Solution : Votre organisation vous demande de modifier votre code PIN Solution : Votre organisation vous demande de modifier votre code PIN Oct 04, 2023 pm 05:45 PM

Le message « Votre organisation vous a demandé de modifier votre code PIN » apparaîtra sur l'écran de connexion. Cela se produit lorsque la limite d'expiration du code PIN est atteinte sur un ordinateur utilisant les paramètres de compte basés sur l'organisation, sur lesquels ils contrôlent les appareils personnels. Cependant, si vous configurez Windows à l'aide d'un compte personnel, le message d'erreur ne devrait idéalement pas apparaître. Même si ce n'est pas toujours le cas. La plupart des utilisateurs qui rencontrent des erreurs déclarent utiliser leur compte personnel. Pourquoi mon organisation me demande-t-elle de modifier mon code PIN sous Windows 11 ? Il est possible que votre compte soit associé à une organisation et votre approche principale devrait être de le vérifier. Contacter votre administrateur de domaine peut vous aider ! De plus, des paramètres de stratégie locale mal configurés ou des clés de registre incorrectes peuvent provoquer des erreurs. Tout de suite

10 façons de régler la luminosité sous Windows 11 10 façons de régler la luminosité sous Windows 11 Dec 18, 2023 pm 02:21 PM

La luminosité de l’écran fait partie intégrante de l’utilisation des appareils informatiques modernes, en particulier lorsque vous regardez l’écran pendant de longues périodes. Il vous aide à réduire la fatigue oculaire, à améliorer la lisibilité et à visualiser le contenu facilement et efficacement. Cependant, en fonction de vos paramètres, il peut parfois être difficile de gérer la luminosité, notamment sous Windows 11 avec les nouvelles modifications de l'interface utilisateur. Si vous rencontrez des difficultés pour régler la luminosité, voici toutes les manières de gérer la luminosité sous Windows 11. Comment modifier la luminosité sous Windows 11 [10 méthodes expliquées] Les utilisateurs d'un seul moniteur peuvent utiliser les méthodes suivantes pour régler la luminosité sous Windows 11. Cela inclut les systèmes de bureau utilisant un seul moniteur ainsi que les ordinateurs portables. Commençons. Méthode 1 : Utiliser le Centre d'action Le Centre d'action est accessible

Comment désactiver l'authentification de navigation privée pour iPhone dans Safari ? Comment désactiver l'authentification de navigation privée pour iPhone dans Safari ? Nov 29, 2023 pm 11:21 PM

Dans iOS 17, Apple a introduit plusieurs nouvelles fonctionnalités de confidentialité et de sécurité dans son système d'exploitation mobile, dont la possibilité d'exiger une authentification à deux facteurs pour les onglets de navigation privée dans Safari. Voici comment cela fonctionne et comment le désactiver. Sur un iPhone ou un iPad exécutant iOS 17 ou iPadOS 17, le navigateur d'Apple nécessite désormais une authentification Face ID/Touch ID ou un mot de passe si un onglet de navigation privée est ouvert dans Safari, puis quittez la session ou l'application pour y accéder à nouveau. En d'autres termes, si quelqu'un met la main sur votre iPhone ou iPad alors qu'il est déverrouillé, il ne pourra toujours pas consulter votre vie privée sans connaître votre mot de passe.

Le script d'activation numérique Win10/11 MAS version 2.2 prend à nouveau en charge l'activation numérique Le script d'activation numérique Win10/11 MAS version 2.2 prend à nouveau en charge l'activation numérique Oct 16, 2023 am 08:13 AM

La célèbre version du script d'activation MAS2.2 prend à nouveau en charge l'activation numérique. La méthode provient de @asdcorp et de l'équipe. L'auteur de MAS l'appelle HWID2. Téléchargez collectosstate.exe (non original, modifié) depuis https://github.com/massgravel/Microsoft-Activation-Scripts, exécutez-le avec des paramètres et générez GenuineTicket.xml. Jetez d’abord un œil à la méthode d’origine : rassemblezstate.exePfn=xxxxxxx;DownlevelGenuineState=1, puis comparez-la avec la dernière méthode : rassemblez

Comment résoudre l'échec de la session Comment résoudre l'échec de la session Oct 18, 2023 pm 05:19 PM

L'échec de la session est généralement dû à l'expiration de la durée de vie de la session ou à l'arrêt du serveur. Les solutions : 1. Prolonger la durée de vie de la session ; 2. Utiliser le stockage persistant ; 3. Utiliser les cookies ; 4. Mettre à jour la session de manière asynchrone ; 5. Utiliser un middleware de gestion de session ;

Où sont les cookies sur votre ordinateur ? Où sont les cookies sur votre ordinateur ? Dec 22, 2023 pm 03:46 PM

Les cookies sur votre ordinateur sont stockés dans des emplacements spécifiques de votre navigateur, en fonction du navigateur et du système d'exploitation utilisés : 1. Google Chrome, stocké dans C:\Users\YourUsername\AppData\Local\Google\Chrome\User Data\Default \Cookies etc.

Où sont stockés les cookies ? Où sont stockés les cookies ? Dec 20, 2023 pm 03:07 PM

Les cookies sont généralement stockés dans le dossier cookie du navigateur. Les fichiers cookies dans le navigateur sont généralement stockés au format binaire ou SQLite. Si vous ouvrez le fichier cookie directement, vous pouvez voir du contenu tronqué ou illisible, il est donc préférable d'utiliser Utiliser. l'interface de gestion des cookies fournie par votre navigateur pour visualiser et gérer les cookies.

Solution au problème inter-domaines de session PHP Solution au problème inter-domaines de session PHP Oct 12, 2023 pm 03:00 PM

Solution au problème inter-domaines de PHPSession Dans le développement de la séparation front-end et back-end, les requêtes inter-domaines sont devenues la norme. Lorsque nous traitons de problèmes interdomaines, nous impliquons généralement l'utilisation et la gestion de sessions. Cependant, en raison des restrictions de la politique d'origine du navigateur, les sessions ne peuvent pas être partagées par défaut entre les domaines. Afin de résoudre ce problème, nous devons utiliser certaines techniques et méthodes pour réaliser le partage de sessions entre domaines. 1. L'utilisation la plus courante des cookies pour partager des sessions entre domaines

See all articles