Uther (./59) :
Ca me fait rire ces guéguerres d'optimisation très poussées alors qu'il s'agit d'un devoir Java. Le prof n'aura à juste titre rien a foutre de ces considérations tout comme d'ailleurs 99.9% de programmeurs Java.

Uther (./59) :
Ca me fait rire ces guéguerres d'optimisation très poussées alors qu'il s'agit d'un devoir Java. Le prof n'aura à juste titre rien a foutre de ces considérations tout comme d'ailleurs 99.9% de programmeurs Java.
Uther (./59) :
Ca me fait rire ces guéguerres d'optimisation très poussées alors qu'il s'agit d'un devoir Java. Le prof n'aura à juste titre rien a foutre de ces considérations tout comme d'ailleurs 99.9% de programmeurs Java.
Uther (./59) :
Ca me fait rire ces guéguerres d'optimisation très poussées alors qu'il s'agit d'un devoir Java. Le prof n'aura (à juste titre) rien à foutre de ces considérations tout comme d'ailleurs 99.9% des programmeurs Java.
montreuillois (./63) :
En PHP y'a du "escape_query_strings", c'est réglé :P
Sinon on peut affiner avec les stripcslahes(), str_replace(), tout dépend.
montreuillois (./63) :
En PHP y'a du "escape_query_strings", c'est réglé :PSinon on peut affiner avec les stripcslahes(), str_replace(), tout dépend.
/**
* Remove SQL for preventing code and data injection in server Side.
* @param input a Suspicious String.
*
* @return a clear String.
*/
public String removeSQL( String input ) {
return input.replace ('([\'"])', '\$1'); // nombre de \ à vérifier ^^
}
Pen^2 (./58) :
Je suis tout à fait certain que tu peux dissocier les deux, je le fais très souvent.
iwannabeamaki (./66) :De ? D'exception en attribut ?
Tu as un exemple ?
Brunni (./64) :Attention je n'ai pas non plus dit que faire du java épargnait de réfléchir a l'optimisation, loin de là particulièrement dans les code fortement réutilisé comme les frameworks/outils que tu cites.Et c'est pourquoi les softs java sont si lourds. CQFD. Comble: les codeurs java ont souvent si peu de considération pour les perfs que leurs progs arrivent à leaker malgré le GC (GWT dev mode, Eclipse, glassfish, etc.)
Brunni (./64) :Pour moi, c'est idiot comme argument. Si tu veux des performances au point que le comportement de Java ne convient plus, autant faire du C : c'est fait pour.
et pour info ces considérations de performances sont parfois effectuées. Typiquement l'infrastructure de gestion des horaires de l'école est fait en C# pour des raisons de performances, du moins c'est le premier argument avancé pour justifier le choix...
package org.esgi.javaweb;
import java.text.SimpleDateFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringUtility // implements IStringUtility
{
public static void main(String[] args) {
String var1 = "yves@gmail.com";
System.out.println(isEmail(var1));
}
public static boolean isEmpty(String input) {
if (input == null || input.trim().equals(""))
return true;
else {
return false;
}
}
public static boolean isInteger(String input) {
if (!isEmpty(input)) {
try {
Integer.parseInt(input.trim());
return true;
} catch (NumberFormatException e) {
return false;
}
} else
return false;
}
public static boolean isNumeric(String input) {
if (!isEmpty(input)) {
try {
Double.parseDouble(input.trim().replace(",", "."));
return true;
} catch (NumberFormatException e) {
return false;
}
} else
return false;
}
public static boolean isEmail(String input) {
if (!isEmpty(input)) {
// The Official Standard: RFC 2822
return Pattern.matches("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)\b",
input);
} else
return false;
}
public static boolean isBoolean(String input) {
if (!isEmpty(input)) {
return "true".equalsIgnoreCase(input)
|| "false".equalsIgnoreCase(input) || input.equals("1") || input.equals("1");
} else
return false;
}
public static boolean isDate(String pattern, String input) {
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
if (!isEmpty(input)) {
if (input.trim().length() != dateFormat.toPattern().length()) {
return false;
}
dateFormat.setLenient(false);
try {
dateFormat.parse(input.trim());
} catch (Exception e) {
return false;
}
return true;
} else
return false;
}
public static String removeSQL(String input) {
}
public static String removeJavascript(String input) {
}
public static String removeXmlTags(String input) {
return input.replaceAll("<[^>]+>", "");
}
public static String removeXmlTags(String tag, String input) {
}
public static String normalize(String input) {
}
}
boolean[] used = new boolean[N]; int[] order = new int[N]; for (int i = 0; i < N; i++) { int r; do r = (int)(Math.random() * N); while (used[r]); used[r] = true; order[i] = r; }
boolean thereIsAPotentialNewTag = false;
String potentialNewTag="";
String outputString="";
int stringSize=inputString.size() //(ou length(), je sais plus lequel existe)
for (int index=0;index<stringSize,index++)
{
String char = inputString.charAt(index);
if (char.equals(">"))
{
if (thereIsAPotentialNewTag)
{
outputString=outputString+potentialNewTag;
potentialNewTag="";
thereIsAPotentialNewTag=false;
}
}
else if (char.equals("<"))
{
thereIsAPotentialNewTag=true;
if (thereIsAPotentialNewTag)
{
outputString=outputString+potentialNewTag;
}
}
else if (char.equals(" "))
{
outputString=outputString+potentialNewTag;
thereIsAPotentialNewTag=false;
}
//Choisit où mettre le charactère actuel
if (thereIsAPotentialNewTag)
potentialNewTag=potentialNewTag+char;
else
outputString=outputString+char;
//Fin de la chaine de charactère :
if(index==stringSize-1)
{
if(thereIsAPotentialNewTag)
{
outputString=outputString+potentialNewTag; //ajoute le dernier cacactère stocké dans potentialNewTag si la chaîne se finit sans que le tag potentiel ait été fermé.
}
}
return outputString;
}
mephiston (./70) :Je suppose que tu as simplement récupéré l'expression régulière telle qu'elle et que tu l'as mise entre guillemets.
Sinon un autre problème c'est au niveau de l'email j'ai essayé de récupérer une regex de la norme RFC 2822 mais ca ne passe pas.
boolean[] used = new boolean[N]; int[] order = new int[N]; for (int i = N; i > 0; i--) { // Choisit r parmi les i entrées restantes int j, k, r = (int)(Math.random() * i); // Trouve la r-ième entrée non utilisée for (j = k = 0; j <= r; k++) if (!used[k]) j++; used[k] = true; order[N-i] = k; }
int[] order = new int[N];
int[] pool = new int[N];
for (int i = N; i-- > 0; ) {
pool[i] = i;
}
for (int i = N; i > 0; --i) {
int r = (int)(Math.random() * i);
order[i - 1] = pool[r];
pool[r] = pool[i - 1];
}
iwannabeamaki (./81) :
[edit] mais je dois pas avoir compris pke ça me semble un peu bidon
Pen^2 (./65) :C'est un peu limitant ; par exemple, tu peux faire une requête SQL Oracle sans utiliser un seul des mots clés de la norme SQL
http://en.wikipedia.org/wiki/Category:SQL_keywords
Pen^2 (./65) :Pareil (en fait, en gros, depuis le début du topic, à quelques détails prêt, j'aurais pu écrire "pareil" à tout ce que tu as écrit
Mais je n'ai pas trop l'habitude de protéger du SQL.
Zerosquare (./76) :Oui, j'ai un script PHP que j'avais pioché je ne sais où qui fait ça (plus une requête MX pour vérifier que le domaine a bien un enregistrement valide) :
(à noter qu'en réalité, la validation d'une adresse mail est très complexe si on veut prendre en compte toutes les possibilités offertes par le standard [que quasiment personne n'utilise, mais bon])
/**
Validate an email address.
Provide email address (raw input)
Returns true if the email address has the email
address format and the domain exists.
http://www.linuxjournal.com/article/9585
*/
function validEmail($email)
{
$isValid = true;
$atIndex = strrpos($email, "@");
if (is_bool($atIndex) && !$atIndex)
{
$isValid = false;
}
else
{
$domain = substr($email, $atIndex+1);
$local = substr($email, 0, $atIndex);
$localLen = strlen($local);
$domainLen = strlen($domain);
if ($localLen < 1 || $localLen > 64)
{
// local part length exceeded
$isValid = false;
}
else if ($domainLen < 1 || $domainLen > 255)
{
// domain part length exceeded
$isValid = false;
}
else if ($local[0] == '.' || $local[$localLen-1] == '.')
{
// local part starts or ends with '.'
$isValid = false;
}
else if (preg_match('/\.\./', $local))
{
// local part has two consecutive dots
$isValid = false;
}
else if (!preg_match('/^[A-Za-z0-9\-\.]+$/', $domain))
{
// character not valid in domain part
$isValid = false;
}
else if (preg_match('/\.\./', $domain))
{
// domain part has two consecutive dots
$isValid = false;
}
else if (!preg_match('/^(\\.|[A-Za-z0-9!#%&`_=\/$\'*+?^{}|~.-])+$/',
str_replace("\\","",$local)))
{
// character not valid in local part unless
// local part is quoted
if (!preg_match('/^"(\\"|[^"])+"$/',
str_replace("\\","",$local)))
{
$isValid = false;
}
}
if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A")))
{
// domain not found in DNS
$isValid = false;
}
}
return $isValid;
}
iwannabeamaki (./66) :
Le topic est bientôt résolu, on peut le recycler non ?
iwannabeamaki (./85) :
Ok, de la façon dont tu as présenté le problème je pensais qu'il y avait un piège et que ça n'était pas aussi évident que ça en avait l'air ^^
Nil (./86) :Pen^2 (./65) :C'est un peu limitant ; par exemple, tu peux faire une requête SQL Oracle sans utiliser un seul des mots clés de la norme SQL
http://en.wikipedia.org/wiki/Category:SQL_keywords.
Pen^2 (./65) :Pareil (en fait, en gros, depuis le début du topic, à quelques détails prêt, j'aurais pu écrire "pareil" à tout ce que tu as écrit
Mais je n'ai pas trop l'habitude de protéger du SQL.. Toi aussi, tu n'es qu'un petit développeur d'informatique de gestion ?