Maison > Questions et réponses > le corps du texte
Est-il possible de stocker du code asp classic dans une base de données MySQL et de lui faire exécuter le code une fois extrait ? Par exemple, stocker le nom de la variable dans une chaîne et lui faire exécuter ASP avant de l'afficher ? Je soupçonne que cela n'est pas possible car la requête MySQL est exécutée après le chargement de la page, donc les données de retour ne sont pas exécutées, juste les noms de variables. Une autre chose est qu'il peut s'agir d'un codage HTML, il peut être codé après l'avoir transmis au serveur MySQL, mais jusqu'à présent, il s'agit simplement de lire les noms des variables. Des idées à ce sujet, est-ce impossible ou est-ce que je décode d'une manière ou d'une autre :
J'ai essayé de le coder comme ceci, en utilisant une fonction de remplacement Chr qui fonctionne ailleurs, mais la fonction s'utilise comme ceci :
NEWSTRING = Server.HtmlEncode(OLDSTRING)
Que vous essayiez ou non d'encoder, les résultats afficheront uniquement le code ASP Classic, comme ceci :
MESSAGE TO USER <%=Session("var_FOO")%>
Bien qu'Encode ne semble pas modifier la chaîne affichée à l'écran, les résultats du journal affichent une tentative d'encodage qui, au lieu d'insérer les données, convertit le type de caractère comme ceci :
"var_Foo"
Je me trompe peut-être d'arbre avec le codage, mais si vous avez un marteau, vous pouvez essayer d'enfoncer des vis jusqu'à ce qu'elles entrent.
Cette fonctionnalité est actuellement difficile pour moi car un moyen plus simple serait de stocker la chaîne dans une base de données comme je l'ai fait, puis d'ajouter les variables à la chaîne après l'avoir extraite au lieu de les mettre dans la base de données. Bien sûr, cela signifie que l'utilisateur ne peut pas contrôler le message d'erreur via la variable qui lui est associée, mais je suppose que je peux vivre avec ça.
Une question similaire demande de faire cela en fonction, si vous lisez le reste du message, vous verrez qu'il y a une différence.
P粉8934570262024-04-07 11:42:05
Oui, c'est possible. ASP classique fournit les méthodes Eval, Execute et ExecuteGlobal auxquelles vous pouvez transmettre une chaîne de texte contenant le code source.
Faire cela sur un site Web public est dangereux ; si un ver de réseau sait comment écrire du code arbitraire dans les tables de votre base de données, il peut perturber, corrompre ou détourner votre application. Vous n'êtes pas paranoïaque : des inconnus proactifs complotent contre vous et recherchent des sites qui fonctionnent de cette façon. Sois prudent.
Eval(codeText) Exécute une expression et renvoie le résultat. ExecuteGlobal(codeText) L'exécute comme s'il se trouvait dans le contexte de niveau supérieur. Execute(codeText) L'exécute dans le contexte (sous-programme ou fonction) dans lequel il a été appelé.