Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

nabilfx

preg_match

Recommended Posts

Tenho um script para me enviar o email cadastrado em php por preg_match.

Mais a Arroba @ e o que vem escrito antes, fica invisível, O que esta escrito na frente aparece, tipo gmail.com

 

Como poderia arrumar isso para aparecer o email completo no registro online.

unnamed.png

 

Aqui esta o script.

<?php
 
    function Connect(){
        //Set global variables so they can be used in this function
        global $hostName; global $userName;
        global $password; global $database;
        $status = mysql_connect($hostName,$userName,$password); //Attempt to connect to Database
     
        if(!$status){echo 'Server Not Found'; exit;} //Hosting Server not found
        if(!@mysql_select_db($database)){echo 'Database Not Found'; exit;} //Database not found
        return $status; //Return link on established connection
    }
    function CheckKey($hash,$name){  //Check weather Md5 hash matches
        global $secretKey;
        $checkHash = md5($name.$secretKey);
        if(strcmp($checkHash,$hash) == 0){
            return 'pass'; //hash matches
        }else{
            return 'fail'; //hash failed
        }
    }
    function CleanInput($input){ //Sanitize user input
        $cleanInput = mysql_real_escape_string($input); //Use string escape
        if(preg_match('/[^@.a-z_\-0-9\s]/i',$cleanInput) == 1){ // Using regular expression
            echo 'Bad Input ==> ' . $input; exit; //Failed, exit to prevemt sql injection hacks
        }
        return $cleanInput; //Return clean input
    }
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

precisso que apareca a @ arroba e o que esta atras escrito.

Se coloco nabil@hotmail.com so aparece hotmail.com

Se coloco nabil@gmail.com so aparece gmail.com

 

So aparece o escrito que esta na frente da @ arroba

o escrito atras da arroba e a arroba @ fica invisível e não aparece no registro online.

 

deve ser o preg_match que esta errado, eu não to conseguindo arrumar

Compartilhar este post


Link para o post
Compartilhar em outros sites

tire o antigo prega_match /[^@.a-z_\-0-9\s]/i e coloquei o que me mandou /^@[a-z0-9\.a-z_\-0-9]+/i

 

ele registra mais continua sem aparecer a arroba @ e o escrito atras dela.

 

Sera q o problema esta em outro .php que veio junto. Comprei no Unity store, mais o criador não me responde para tentar resolver.

 

 

se vc quiser te mando os scripts restantes para vc ver

Compartilhar este post


Link para o post
Compartilhar em outros sites

aqui o código RegisterUser.php que registra o serverconect.php

<?php	include('ServerConnect.php');	$connection = Connect();//Attempt to Connect to MYSQL Server & DataBase		//Get variables from unity	$name = $_POST['name'];	$date = strtotime(date("Y-m-d"));	$tables = $_POST['tables'];	//Security Check	$hash = $_POST['hash'];	if(CheckKey($hash,$name) == 'fail'){ //Check if hash is valid		echo 'Security Failure'; exit;	}		//Make sure all input is sql injection safe	$name =  CleanInput($name);	$tables = CleanInput($tables);	//Split difficulty tables	$tablesBroken = explode(' ', $tables);	$arr = Array();	$i = 0;$x = 0;	foreach($tablesBroken as $table){ //Check if name is in any of our tables		$sql = "SELECT * FROM $table WHERE name = '$name'";		$result = mysql_query($sql) or Die('Query failed: ' . mysql_error()); 		$count = mysql_num_rows($result);		//Process Results : Tally up how many times we fing the name 		if($count > 0){ 			$arr[$i] = 1;			$x++;		}else{			$arr[$i] = 0;		}		$i++;	}	if($x == 0){ //Name not in use in any table		foreach($tablesBroken as $table){//Insert the user in all tables			$sql = "INSERT INTO $table (name,score,date)			VALUES('$name',0,'$date')";			$result = mysql_query($sql) or Die('Query failed: ' . mysql_error()); 		}echo 'Registration Complete'; exit;	}else if($x >= Count($tablesBroken)){//Name in use in all tables		echo 'Already Used'; exit; //exit	}else{//In use but not complete in all tables		for($c = 0; $c < Count($tablesBroken); $c++){			if($arr[$c] == 0){ //Insert name in tables where it is not present				$toTable = $tablesBroken[$c];				$sql = "INSERT INTO $toTable(name,score,date)				VALUES('$name',0,'$date')";				$result = mysql_query($sql) or Die('Query failed: ' . mysql_error()); 			}		}echo 'Registration Complete'; exit;	}?>

aqui o Database.php

<?php	include('ServerConnect.php');	$connection = Connect();//Attempt to Connect to MYSQL Server & DataBase	//Get variables from Unity	$mode = $_POST['mode'];	$table = $_POST['table'];	if($mode == 0){ //Create current table		$sql = "CREATE TABLE $table(id INT(10) AUTO_INCREMENT,		PRIMARY KEY(id),		name VARCHAR(25),		score INT(10),		date VARCHAR(25))"; //we keep date a varchar in the database		$result = mysql_query($sql) or Die('Query failed: ' . mysql_error()); 		echo $table.' Created'; exit;	}else if ($mode == 1){		//Delete scores below input score		$score = $_POST['score'];	    $sql = "DELETE FROM $table WHERE score < '$score'";		$result = mysql_query($sql) or Die('Query failed: ' . mysql_error()); 			echo 'Deleted'; exit;	}else if ($mode == 2){		//Delete scores below posted date		$date = strtotime($_POST['date']);		$sql = "DELETE FROM $table WHERE date < '$date'";		$result = mysql_query($sql) or Die('Query failed: ' . mysql_error()); 		echo 'Deleted'; exit;	}?>

aqui o SendHighScores.php

<?php	include('ServerConnect.php');	$connection = Connect(); //Attempt to Connect to MYSQL Server & DataBase		//Get variables from Unity	$table = $_POST['table'];	$name = $_POST['name'];	$score = $_POST['score'];	$updating = $_POST['updating'];	$date = strtotime(date("Y-m-d")); //Get Time	//Security Check	$hash = $_POST['hash'];	if(CheckKey($hash,$name) == 'fail'){ //Check if hash is valid		echo 'Security Failure'; exit;	}		//Make sure all input is sql injection safe	$name =  CleanInput($name);	$table = CleanInput($table);	$score =  CleanInput($score);	$updating =  CleanInput($updating);	//Run Query (inser or update)	if($updating == 0){ //Free entry So make new row		$sql = "INSERT INTO $table (name,score,date)		VALUES('$name','$score','$date')";	}else{ //We are updating a previously registered user		$sql = "UPDATE $table SET score = '$score',		date = '$date' WHERE name = '$name'";	}	$result = mysql_query($sql) or Die('Query failed: ' . mysql_error()); 		//Now update our table, by ordering it by descending score	$sql = "ALTER TABLE $table ORDER BY score DESC,id DESC";	$result = mysql_query($sql) or Die('Query failed: ' . mysql_error()); 		echo 'Accepted';?>

aqui o GetHighScores.php

<?php	include('ServerConnect.php');	$connection = Connect();//Attempt to Connect to MYSQL Server & DataBase		//Get variables from unity	$table = $_POST['table'];	$scope = $_POST['scope'];	$limit = $_POST['limit'];	//Security Check	$hash = $_POST['hash'];	if(CheckKey($hash,$table) == 'fail'){ //Check if hash is valid		echo 'Security Failure'; exit;	}		//Make sure all input is sql injection safe	$table = CleanInput($table);	$scope =  CleanInput($scope);	$limit =  CleanInput($limit);	//Create a Query For The Right Table	if($scope == 'AllTime'){ //Get All scores		$sql = "SELECT * FROM $table LIMIT 0,$limit";	}else{ //Get scores posted today		$date = strtotime(date("Y-m-d")); //Today's date		$sql = "SELECT * FROM $table WHERE date = '$date' LIMIT 0,$limit";	}	$result = mysql_query($sql) or Die('Query failed: ' . mysql_error());	//1.Build a string of all scores to send back	$info = "";	while($found = mysql_fetch_array($result)){		$info = $info .'@'. $found['name'] .':'. $found['score'];	}	echo $info;?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

aqui o HighScore.js que veio junto. e tudo que quem, vc consegue ver algo que possa mudar, para o display sair email completo.

#pragma strict
import System.Security.Cryptography;
import System.Text;

@script ExecuteInEditMode()

enum TrackingType{FreeEntry,TrackProgress}
var trackType : TrackingType = TrackingType.FreeEntry;
enum DeveloperType{debug,live}
var developmentMode : DeveloperType = DeveloperType.live;

private var secretKey : String = "test";
var sendScoreURL : String = "http://nfx.comuv.com/.../SendHighScores.php?";
var getScoresURL : String = "http://nfx.comuv.com/.../GetHighScores.php?";
var resetScoresURL : String = "http://nfx.comuv.com/.../ResetHighScores.php?";
var registerUserURL : String = "http://nfx.comuv.com/.../RegisterUser.php?";
var getUserScoreURL : String = "http://nfx.comuv.com/.../GetUserScore.php?";
var DatabaseToolsURL : String = "http://nfx.comuv.com/.../DatabaseTools.php?";
//Modules Done
class Module{
	var showStatus : boolean = true;
	var showScores : boolean = true;
	var showUserScore : boolean = true;
	var showSendScore : boolean = true;
	var showDifficultySwitch : boolean = true;
	var showScopeSwitch : boolean = true;
}
var displayOptions : Module;
//Class That contains 
class Mode{
	var displayName : String = "Easy";
	var playerPrefsName : String = "Easy";
	var databaseName : String = "Easy";
}
var difficultyModes : Mode[];
var startDifficultyMode : int = 0;
private var modeIndex : int = 0;
//Score Scope
private var scoreScopeText : String = "Global";//AllTime,Daily
private var currentScope : String = "AllTime";
class ScoreScopeSettings{
	var dailyName : String = "Daily";
	var allTimeName : String = "Global";
}
var scoreScope : ScoreScopeSettings;
//Get HighScores Fields(keep the same lenght)
private var serverHighScores : String[] = new String[0];
private var scrollView : Vector2;
var scoreType : String = "Points";
var maxHighScores : int = 100;
//Send HighScores Fields
private var serverHighScoreName : String = "";
var maxNameCharacters : int = 20;
//Reset  HighScores Fields
var resetNames : int = 100;
var minResetScore : int = 100;
var maxResetScore : int = 1000;
//Bad Names
var blockBadNames : boolean = true; //Block names from bas names list
var badNamesList : TextAsset;  //List Of bad names
//PlayerPrefsName
var existingNamePlayerPrefs : String = "playerName";
//Rects
var sendScoresOffsetRect : Rect = new Rect(450,150,250,30);
var getScoresOffsetRect : Rect = new Rect(450,100,100,25);
var scoreScopeOffsetRect : Rect = new Rect(300,100,100,25);
var messageOffsetBox : Rect = new Rect(450,-150,250,25);
var localScoreOffsetRect : Rect = new Rect(450,-105,250,25);
var serverScoreOffsetRect : Rect = new Rect(450,-60,250,40);
var scoresListOffsetRect : Rect = new Rect(150,150,380,350);
private var baseRect : Rect = new Rect(Screen.width * .5F,Screen.height * .5F,100F,100F);
//status
private var year : int = 2012;
private var month : int = 9;
private var day : int = 1;
private var debugScore : int = 0;
private var deleteScore : int = 0;
private var localScore : int = 0;
private var serverScore : int = 0;
private var serverRank : int = 0;
private var status : String = ""; //Status of Server Operations
private var runningHsServer : int = 0; //Are we doing server side operations
private var runningTrack : int = 0; //Are we seeking player status
//skin
var skin : GUISkin;

function DatabaseTools(mode : int ,tables : Mode[]){
	if(runningHsServer == 1){status = "Still Running"; return;}
	runningHsServer = 1; status = "Running";
	//0 = create tables
	var hsFm : WWWForm = new WWWForm();
	hsFm.AddField("mode",mode);
	for(var md : Mode in tables){
		hsFm.AddField("table",md.databaseName);	
		var hs : WWW = new WWW(DatabaseToolsURL,hsFm);
		yield hs;
		if(hs.text.Equals("Created")){status = "Database Created";}
		else{status = "Error Occured";}
		Debug.Log(hs.text);
	}
	//Stop Running
	runningHsServer = 0;
	SynchTable();
}

function DatabaseTools(mode : int,table : String){
	if(runningHsServer == 1){status = "Still Running"; return;}
	runningHsServer = 1; status = "Running";
	//Modes
	// 1 = delete by score
	// 2 = delete by date
	var hsFm : WWWForm = new WWWForm();
	hsFm.AddField("mode",mode);
	if(mode == 1){
		hsFm.AddField("table",table);
		hsFm.AddField("score",deleteScore);
	}else if(mode == 2){
		hsFm.AddField("table",table);
		hsFm.AddField("date",year+"/"+month+"/"+day);
	}
	var hs : WWW = new WWW(DatabaseToolsURL,hsFm);
	yield hs;
	if(hs.text.Equals("Created")){status = "Database Created";}
	if(hs.text.Equals("Deleted")){status = table +" Entries Cleaned";}
	
	else{status = "Error Occured";}
	Debug.Log(hs.text);
	//Stop Running
	runningHsServer = 0;
	SynchTable();
}

function ResetHighScores(table : String,mode : String){
	if(runningHsServer == 1){status = "Still Running"; return;}
	runningHsServer = 1; status = "Running";
	//
	var hsFm : WWWForm = new WWWForm();
	hsFm.AddField("table",table);
	hsFm.AddField("mode",mode);
	hsFm.AddField("count",resetNames);
	hsFm.AddField("min",minResetScore);
	hsFm.AddField("max",maxResetScore);
	var hs : WWW = new WWW(resetScoresURL,hsFm);
	yield hs;
	//Update
	status = hs.text;
	//Running
	runningHsServer = 0;
	SynchTable();
}

function GetUserScore(table : String,name : String){
	runningTrack = 1;//We are seeking user stats
	//
	serverRank = 0;
	serverScore = 0;
	//Get User Score
	var hsFm : WWWForm = new WWWForm();
	hsFm.AddField("name",name);
	hsFm.AddField("table",table);
	hsFm.AddField("hash",GetHash(name));
	var hs : WWW = new WWW(getUserScoreURL,hsFm);
	yield hs;
	Debug.Log(hs.text);
	if(hs.text != "Not Found" && !hs.text.Contains("Query failed")){
		var userData : String[] = hs.text.Split(':'[0]);
		//Process Results
		if(userData[1] != null)serverRank = int.Parse(userData[1]);
		if(userData[2] != null)serverScore = int.Parse(userData[2]);
	}
	else if(hs.text == "Not Found"){
		PlayerPrefs.SetInt("nameRegistered",0);
	}
	runningTrack = 0;
}

function GetHighScores(table : String,scope : String,limit : int){
	if(runningHsServer == 1){status = "Still Running"; return;}
	runningHsServer = 1; status = "Running";
	//Get HighScores
	serverHighScores = new String[maxHighScores];
	for(var st : int = 0;st<serverHighScores.Length;st++){
		serverHighScores[st] = "Loading....";
	}	
	var hsFm : WWWForm = new WWWForm();
	hsFm.AddField("table",table);
	hsFm.AddField("scope",scope);
	hsFm.AddField("limit",limit);
	hsFm.AddField("hash",GetHash(table));
	var hs : WWW = new WWW(getScoresURL,hsFm);
	yield hs;
	
	if(hs.text.Length > 0){
		serverHighScores = hs.text.Split('@'[0]);
		status = "Found "+table+" HighScores";
		Debug.Log("Found HighScores: " + scope+" :" +table);
	}else{
		status = "No "+scope+" Scores";
		Debug.Log("No "+scope+" Scores");
	}
	//Stop Running
	runningHsServer = 0;
	//Get User Stats If Tracking is On & We are Registered
	if(trackType == TrackingType.TrackProgress && PlayerPrefs.GetInt("nameRegistered") == 1){
		StartCoroutine(GetUserScore(difficultyModes[modeIndex].databaseName,serverHighScoreName));
	}
}

function SendHighScores(table : Mode,name : String,score : int,difficultyModesSet : Mode[]){
	if(runningHsServer == 1){status = "Still Running"; return;}
	runningHsServer = 1; status = "Running";
	//Check If We Have Beat Our Own Score First
	if(developmentMode == DeveloperType.live){
		if(PlayerPrefs.GetInt(table.playerPrefsName) <= PlayerPrefs.GetInt("sent"+table.playerPrefsName)){
			status = table.displayName + " Score Previously Submitted"; 
			runningHsServer = 0;
			return;		
		}
	}
	//Trim
	if(name.Length > maxNameCharacters){
		runningHsServer = 0;
		status = "Name Too Long"; return;	
	}
	//Scan & Check Name
	if(blockBadNames && CheckName(name).CompareTo("offensive") == 0){
		runningHsServer = 0;
		status = "Chosen Name Is Offensive"; return;	
	}
	var updating : int = 0; //0 = no we are making a free entry/1 = updating entry
	var newRegistration : int = 0; //We are doing a new registration
	if(trackType == TrackingType.TrackProgress){
		if(PlayerPrefs.GetInt("nameRegistered") == 0){ // We are not yet registred
			newRegistration = 1;
			status = "Registering User";
			var finalResult : String = "";
			var tables : String = "";
			for(var m : int = 0; m < difficultyModesSet.Length; m++){//Create a list of tables to send
				if(m < difficultyModesSet.Length -1){
					tables += difficultyModesSet[m].databaseName + " ";	
				}else{
					tables += difficultyModesSet[m].databaseName;		
				}
			}
			var rsFm : WWWForm = new WWWForm();
			rsFm.AddField("name",name);
			rsFm.AddField("tables",tables);
			rsFm.AddField("hash",GetHash(name));
			var rs : WWW = new WWW(registerUserURL,rsFm);
			yield rs;
			Debug.Log(rs.text+" : "+table.displayName);
			finalResult = rs.text;
			if(finalResult.Equals("Already Used")){
				runningHsServer = 0;
				status = "Name Already Used"; return;
			}else if(finalResult.Equals("Registration Complete")){//We Registered Now Update Score
				PlayerPrefs.SetInt("nameRegistered",1);	
				PlayerPrefs.SetString("registeredName",name);
			}else{
				runningHsServer = 0;
				status = finalResult; return;
			}
		}
		updating = 1; //We need to update entry now
	}
	//SEND OR UPDATE SCORE
	status = "Running"; //Run Again
	var hsFm : WWWForm = new WWWForm();
	hsFm.AddField("table",table.databaseName);
	hsFm.AddField("name",name);
	hsFm.AddField("score",score);
	hsFm.AddField("updating",updating);
	hsFm.AddField("hash",GetHash(name));
	var hs : WWW = new WWW(sendScoreURL,hsFm);
	yield hs;
	Debug.Log(hs.text+" : "+table.displayName);
	//Process Results
	if(hs.text.Contains("Accepted")){
		//Update Score For Anti Spamming
		PlayerPrefs.SetInt("sent"+table.playerPrefsName,PlayerPrefs.GetInt(table.playerPrefsName));
		if(newRegistration == 1){
			status = "Registered & " + table.displayName +" Score Submitted"; 	
		}else{
			status = "New "+ table.displayName +" Score Submitted";
		}
	}
	//Stop Running
	runningHsServer = 0;
	yield new WaitForSeconds(1); //Wait A Second Before Synch
	SynchTable();
}

function SynchTable(){//Update
	StartCoroutine(GetHighScores(difficultyModes[modeIndex].databaseName,currentScope,maxHighScores));	
}
function CheckName(usedName : String) : String{ //Make sure imput name is clean
	var names : String[] = badNamesList.text.Split('\n'[0]); 
	for(var n : String in names){
		if(usedName.Trim().ToLower().IndexOf(n.Trim().ToLower()) > -1){
			return "offensive";
		}
	}
	return "clean";
} 
function GetHash(usedString : String): String{ //Create a Hash to send to server
	var md5 : MD5 = MD5.Create();
	var bytes : byte[] = Encoding.ASCII.GetBytes(usedString+secretKey);
	var hash : byte[] = md5.ComputeHash(bytes);
	
	var sb : String = "";
	for(var i : int = 0; i < hash.Length; i++){
	    sb += hash[i].ToString("x2");
	}
	return sb;
}

function Start(){
	status = "";
	runningHsServer = 0;
	runningTrack = 0;
	StopAllCoroutines();
	//Name Operations
	if(existingNamePlayerPrefs != ""){
		serverHighScoreName = PlayerPrefs.GetString(existingNamePlayerPrefs);
	}
	//Get Base
	startDifficultyMode = Mathf.Clamp(startDifficultyMode,0,difficultyModes.Length-1); //To avoid runtime errors
	modeIndex = startDifficultyMode;
	//Set Initial Settings
	scoreScopeText = scoreScope.allTimeName;
	currentScope = "AllTime";
	//Get Scores
	SynchTable();	
}
	
function OnGUI(){
	if(skin)GUI.skin = skin;
	//Set Base Rect
	baseRect = new Rect(Screen.width * .5F,Screen.height * .5F,100F,100F);
	//Update User Score
	localScore = PlayerPrefs.GetInt(difficultyModes[modeIndex].playerPrefsName);
	//Status Box
	if(displayOptions.showStatus){
		GUI.Box(new Rect(baseRect.x - messageOffsetBox.x,baseRect.y - messageOffsetBox.y,
		messageOffsetBox.width,messageOffsetBox.height),status);
	}
	if(displayOptions.showUserScore){
		//Local Score Box
		GUI.Box(new Rect(baseRect.x - localScoreOffsetRect.x,baseRect.y - localScoreOffsetRect.y,localScoreOffsetRect.width,localScoreOffsetRect.height)
			,"Local "+difficultyModes[modeIndex].displayName+" Score : "+localScore+" "+scoreType);
		if(trackType == TrackingType.TrackProgress){
			if(PlayerPrefs.GetInt("nameRegistered") == 1){
				if(runningTrack == 0){
					GUI.Box(new Rect(baseRect.x - serverScoreOffsetRect.x,baseRect.y - serverScoreOffsetRect.y,serverScoreOffsetRect.width,serverScoreOffsetRect.height)
						,"Global "+difficultyModes[modeIndex].displayName+" Score : "+serverScore+" "+scoreType +"\n"
					+ "Global Rank: "+serverRank);
				}else{
					GUI.Box(new Rect(baseRect.x - serverScoreOffsetRect.x,baseRect.y - serverScoreOffsetRect.y,
						serverScoreOffsetRect.width,serverScoreOffsetRect.height),"Seeking Stats");	
				}
			}else{
				GUI.Box(new Rect(baseRect.x - serverScoreOffsetRect.x,baseRect.y - serverScoreOffsetRect.y,
					serverScoreOffsetRect.width,serverScoreOffsetRect.height),"Send Score To Register");	
			}
		}
	}
	if(displayOptions.showDifficultySwitch){
		//Get & Show High Scores
		if(GUI.Button(new Rect(baseRect.x - getScoresOffsetRect.x,baseRect.y - getScoresOffsetRect.y,
			getScoresOffsetRect.width,getScoresOffsetRect.height),""+difficultyModes[modeIndex].displayName)){
			if(modeIndex < difficultyModes.Length - 1){
				modeIndex++;
			}else{modeIndex = 0;}
			//Update	
			StartCoroutine(GetHighScores(difficultyModes[modeIndex].databaseName,currentScope,maxHighScores));
			localScore = PlayerPrefs.GetInt(difficultyModes[modeIndex].playerPrefsName);
		}
	}
	if(displayOptions.showScopeSwitch){
		//Set Scope
		if(GUI.Button(new Rect(baseRect.x - scoreScopeOffsetRect.x,baseRect.y - scoreScopeOffsetRect.y,
			scoreScopeOffsetRect.width,scoreScopeOffsetRect.height),""+scoreScopeText)){
			if(scoreScopeText.Equals(scoreScope.allTimeName)){
				scoreScopeText = scoreScope.dailyName;
				currentScope = "Daily";
			}else{
				scoreScopeText = scoreScope.allTimeName;
				currentScope = "AllTime";
			}
			
			StartCoroutine(GetHighScores(difficultyModes[modeIndex].databaseName,currentScope,maxHighScores));
		}
	}
	if(displayOptions.showSendScore){
		//Send Scores
		GUILayout.BeginArea(new Rect(baseRect.x - sendScoresOffsetRect.x,baseRect.y - sendScoresOffsetRect.y,
			sendScoresOffsetRect.width,sendScoresOffsetRect.height));
		GUILayout.BeginHorizontal();
		if(trackType == TrackingType.TrackProgress && PlayerPrefs.GetInt("nameRegistered") == 1){
			serverHighScoreName = PlayerPrefs.GetString("registeredName");
			GUILayout.Box(serverHighScoreName,GUILayout.Width(150),GUILayout.Height(30));
		}else{
			serverHighScoreName = GUILayout.TextField(serverHighScoreName,GUILayout.Width(150));	
		}
		if(GUILayout.Button("Send")){
			StartCoroutine(SendHighScores(difficultyModes[modeIndex],serverHighScoreName,localScore,difficultyModes));
		}
		GUILayout.EndHorizontal();
		GUILayout.EndArea();
	}
	//Display Scores
	if(displayOptions.showScores){
		GUILayout.BeginArea(new Rect(baseRect.x - scoresListOffsetRect.x,baseRect.y - scoresListOffsetRect.y,
			scoresListOffsetRect.width,scoresListOffsetRect.height));
		scrollView = GUILayout.BeginScrollView(scrollView);
			for(var x : int = 1;x<serverHighScores.Length;x++){
				if(x > maxHighScores){break;}
				if(serverHighScores[x] != null){
					var score : String[] = serverHighScores[x].Split(':'[0]); //Split the Score From PHP set Up
					if(score.Length > 1){
						GUILayout.BeginHorizontal();
						GUILayout.Label(x.ToString()+": ");
						GUILayout.Space(10);
						GUILayout.Label(score[0],GUILayout.Width(200),GUILayout.Height(30));
						GUILayout.FlexibleSpace();
						GUILayout.Label(score[1]+" "+scoreType,GUILayout.Width(150),GUILayout.Height(30));
						GUILayout.EndHorizontal();
					}
				}else{
					GUILayout.Label(serverHighScores[x] +" "+scoreType,GUILayout.Width(100));
				}
			}
		GUILayout.EndScrollView();
		GUILayout.EndArea();
	}
	//Editor Tools
	if(developmentMode == DeveloperType.debug){
		EditorTools();
	}
}
	
function EditorTools(){
	GUILayout.BeginHorizontal();
	GUILayout.Label("",GUILayout.Width(Screen.width - 230));
	GUILayout.FlexibleSpace();
	GUILayout.BeginVertical();
	GUILayout.Space(100);
	GUILayout.Box("CREATE",GUILayout.Width(200));
	if(GUILayout.Button("Create Tables",GUILayout.Width(200))){
		StartCoroutine(DatabaseTools(0,difficultyModes));
	}
	GUILayout.Box("MANAGE",GUILayout.Width(200));
	if(GUILayout.Button("Reset All "+difficultyModes[modeIndex].displayName,GUILayout.Width(200))){
		StartCoroutine(ResetHighScores(difficultyModes[modeIndex].databaseName,"Reset"));	
	}
	if(GUILayout.Button("Delete All "+difficultyModes[modeIndex].displayName,GUILayout.Width(200))){
		StartCoroutine(ResetHighScores(difficultyModes[modeIndex].databaseName,"Delete"));
	}
	if(GUILayout.Button("Delete Below Score: " +difficultyModes[modeIndex].displayName ,GUILayout.Width(200))){
		StartCoroutine(DatabaseTools(1,difficultyModes[modeIndex].databaseName));	
	}
	GUILayout.BeginHorizontal();
	GUILayout.Box(""+deleteScore,GUILayout.Width(50));
	deleteScore = Mathf.CeilToInt(GUILayout.HorizontalSlider(deleteScore,1,maxResetScore,GUILayout.Width(150)));
	GUILayout.EndHorizontal();
	//
	if(GUILayout.Button("Delete Below Date: "+difficultyModes[modeIndex].displayName,GUILayout.Width(200))){
		StartCoroutine(DatabaseTools(2,difficultyModes[modeIndex].databaseName));	
	}
	GUILayout.BeginHorizontal();
	GUILayout.Label(""+year,GUILayout.Width(30));
	year = Mathf.CeilToInt(GUILayout.HorizontalSlider(year,2012,2013,GUILayout.Width(30)));
	GUILayout.Label(""+month,GUILayout.Width(20));
	month = Mathf.CeilToInt(GUILayout.HorizontalSlider(month,1,12,GUILayout.Width(40)));
	GUILayout.Label(""+day,GUILayout.Width(20));
	day = Mathf.CeilToInt(GUILayout.HorizontalSlider(day,1,31,GUILayout.Width(40)));
	GUILayout.EndHorizontal();
	GUILayout.Box("TEST DATA",GUILayout.Width(200));
	if(GUILayout.Button("Null Registration",GUILayout.Width(200))){
		PlayerPrefs.SetInt("nameRegistered",0);	
		PlayerPrefs.SetString("registeredName","");
	}
	//
	GUILayout.BeginHorizontal();
	GUILayout.Box("Score: "+PlayerPrefs.GetInt(difficultyModes[modeIndex].playerPrefsName),GUILayout.Width(100));
	PlayerPrefs.SetInt(difficultyModes[modeIndex].playerPrefsName,Mathf.CeilToInt(GUILayout.HorizontalSlider(PlayerPrefs.GetInt(difficultyModes[modeIndex].playerPrefsName),1,maxResetScore,GUILayout.Width(100))));
	GUILayout.EndHorizontal();
	//
	GUILayout.EndVertical();
	GUILayout.EndHorizontal();
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

É Simples!

 

Segue exemplo:

  
<?php

$email = 'nabil@hotmail.com';

#======APENAS O NOME========#
$name = preg_replace('/@.*?$/', '', $email);
echo $name;

#======EMAIL COMPLETO========#
echo '<pre>';
preg_match('/[a-z\d._%+-]+@[a-z\d.-]+\.[a-z]{2,4}\b/i', $email,$match);
print_r($match) ;

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

em qual parte coloco? e qual deleto por favor

<?php
 
    function Connect(){
        //Set global variables so they can be used in this function
        global $hostName; global $userName;
        global $password; global $database;
        $status = mysql_connect($hostName,$userName,$password); //Attempt to connect to Database
     
        if(!$status){echo 'Server Not Found'; exit;} //Hosting Server not found
        if(!@mysql_select_db($database)){echo 'Database Not Found'; exit;} //Database not found
        return $status; //Return link on established connection
    }
    function CheckKey($hash,$name){  //Check weather Md5 hash matches
        global $secretKey;
        $checkHash = md5($name.$secretKey);
        if(strcmp($checkHash,$hash) == 0){
            return 'pass'; //hash matches
        }else{
            return 'fail'; //hash failed
        }
    }
    function CleanInput($input){ //Sanitize user input
        $cleanInput = mysql_real_escape_string($input); //Use string escape
        if(preg_match('/[^@.a-z_\-0-9\s]/i',$cleanInput) == 1){ // Using regular expression
            echo 'Bad Input ==> ' . $input; exit; //Failed, exit to prevemt sql injection hacks
        }
        return $cleanInput; //Return clean input
    }
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

@nabilfx,

 

Essa é a função que limpa os dados enviados "Sanitize user input"

function CleanInput($input){ //Sanitize user input
        $cleanInput = mysql_real_escape_string($input); //Use string escape
        if(preg_match('/[^@.a-z_\-0-9\s]/i',$cleanInput) == 1){ // Using regular expression
            echo 'Bad Input ==> ' . $input; exit; //Failed, exit to prevemt sql injection hacks
        }
        return $cleanInput; //Return clean input
    }

Veja como funciona e adicione o que eu postei da maneira que achar melhor.

 

 

Lembrando que a intenção do fórum é ajudar e não entregar a solução pronta.

 

 

Abraço =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloquei o script assim, mais da um erro. Posso te mandar o packague que comprei na unity store, pra vc ver?

function CleanInput($input){ //Sanitize user input        $email = 'nabil@hotmail.com';                #======APENAS O NOME========#        $name = preg_replace('/@.*?$/', '', $email);        echo $name;                #======EMAIL COMPLETO========#        echo '<pre>';        preg_match('/[a-z\d._%+-]+@[a-z\d.-]+\.[a-z]{2,4}\b/i', $email,$match);        print_r($match) ;            ?>

No mysql os email esta se registrando, deve ser o dis[play que tem algo errado?

 

 

mira.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos.
       
      Quando programava em DOS. utilizava algumas teclas de atalho para: SALVAR / EDITAR / EXCLUIR / IMPRIMIR.
      Por exemplo:
      Salvar ----> ALT+S
      Editar ----> ALT+E
      Excluir --> ALT+X
      Imprimir -> ALT+I

      no PHP tem como colocar esses ATALHOS nos button, para o usuário trabalhar com esses atalhos e como seria ?

      grato,
       
      Cesar
    • Por violin101
      Caros Amigos, saudações.
       
      Por favor, me perdoa em postar uma dúvida.
       
      Preciso criar uma Rotina onde o usuário possa buscar na Base de Dados de Produtos, tanto por Código e Descrição, ou seja:
      - caso o usuário digita o Código, mostra os dados do Produto.
      - caso o usuário digita a Descrição, mostra os dados do Produto
       
      Fiz uma Rotina, onde o usuário digita a DESCRIÇÃO com a função AUTOCOMPLETE.    <=== está funcionando certinho.
       
      Minha dúvida é como faço para DIGITAR o Código e mostrar os dados também.
       
      o meu AutoComplete na MODEL está assim.
      public function autoCompleteProduto($q){ $this->db->select('*' ) ->from('produtos') ->where('produtos.statusProd',1) ->like('descricao', $q) ->limit(5) ->order_by('descricao', 'ASC'); $query = $this->db->get(); if ($query->num_rows() > 0) { foreach ($query->result_array() as $row) { $row_set[] = ['label' => str_pad($row['idProdutos'], '5', '0', STR_PAD_LEFT).' - '.$row['descricao'], 'id' => $row['idProdutos'], 'descricao' => $row['descricao'], 'cod_interno' => $row['cod_interno'], 'prd_unid' => $row['prd_unid'], 'estoque_atual' => $row['estoque_atual'] ]; } echo json_encode($row_set); } }  
       
      no CONTROLLER está assim:
      public function autoCompleteProduto() { $this->load->model('estoque/lancamentos_model'); if (isset($_GET['term'])) { $q = strtolower($_GET['term']); $this->lancamentos_model->autoCompleteProduto($q); } }  
       
      na VIEW está assim:
      <div class="col-md-10"> <label for="idProdutos">Produto:</label> <input type="hidden" name="idProdutos" id="idProdutos"> <input type="text" class="form-control" id="descricao" name="descricao" style="font-size:15px; font-weight:bold;" placeholder="Pesquisar por descrição do produto" disabled> </div>  
      VIEW + JAVASCRIPT
       
      //Função para trazer os Dados pelo o AutoComplete. function resolveAutocomplete() { $("#descricao").autocomplete({ source: "<?php echo base_url(); ?>estoque/lancamentos/autoCompleteProduto/", minLength: 2, select: function (event, ui) { $("#idProdutos").val(ui.item.id); $("#cod_interno").val(ui.item.cod_interno); $("#descricao").val(ui.item.descricao); $("#prd_unid").val(ui.item.prd_unid); $("#estoque_atual").val(ui.item.estoque_atual); $("#qtde").focus(); } }); } // inicia o autocomplete resolveAutocomplete();  
      Grato,
       
      Cesar
    • Por belann
      Olá!
       
      Estou tentando criar um projeto laravel e está dando o seguinte erro 
      curl error 60 while downloading https://getcomposer.org/versions: SSL certificate problem: unable to get local issu
        er certificate
      Já tentei atualizar o composer, mas dá o mesmo erro acima.
    • Por violin101
      Caros amigos, saudações.
       
      Estou com uma dúvida de validação de INPUT com função moeda.
       
      Tenho um input onde o usuário digita um valor qualquer, por exemplo: 1.234,56
      o problema é quando precisa atualizar o valor.
       
      Quando o usuário atualizar o input fica assim: 1.234,
       
      como faço para atualizar as casas decimais, conforme o valor for sendo alterado ?
       
      o input está assim:
       
      <div class="col-md-2"> <label for="">Valor Unitário</label> <input type="text" class="form-control" id="estoqprod" name="estoqprod" style="font-size:15px; font-weight:bold; width:100%; text-align:center;" placeholder="0,00" OnKeyUp="calcProd();" onkeypress="return(FormataMoeda(this,'.',',',event))" > </div>  
      a função para formatar o input para moeda está assim:
      obs.: a Função CalcProd está executando corretamente
      function calcProd(){ //Obter valor digitado do produto var estoq_prod = document.getElementById("estoqprod").value; //Remover ponto e trocar a virgula por ponto while (estoq_prod.indexOf(".") >= 0) { estoq_prod = estoq_prod.replace(".", ""); } estoq_prod = estoq_prod.replace(",","."); //Obter valor digitado do produto var prod_qtde = document.getElementById("qtde").value; //Remover ponto e trocar a virgula por ponto while (prod_qtde.indexOf(".") >= 0) { prod_qtde = prod_qtde.replace(".", ""); } prod_qtde = prod_qtde.replace(",","."); //Calcula o Valor do Desconto if (prod_qtde > 0 && estoq_prod > 0) { calc_total_produto = parseFloat(prod_qtde) - parseFloat(estoq_prod); var numero = calc_total_produto.toFixed(2).split('.'); //Calculo para não deixar GRAVAR valores negativos if (calc_total_produto < 0 ) { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.') * -1; document.getElementById("qtdeTotal").value = numero.join(','); } else { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.'); document.getElementById("qtdeTotal").value = numero.join(','); } } else { if (estoq_prod > 0) { document.getElementById("qtdeTotal").value = document.getElementById("estoqprod").value; } else { document.getElementById("qtdeTotal").value = "0,00"; } } } /*---Função para Formatar Campo para Moeda [R$]---*/ function FormataMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){ var sep = 0; var key = ''; var i = j = 0; var len = len2 = 0; var strCheck = '0123456789'; var aux = aux2 = ''; var whichCode = (window.Event) ? e.which : e.keyCode; if (whichCode == 13) return true; key = String.fromCharCode(whichCode); // Valor para o código da Chave if (strCheck.indexOf(key) == -1) return false; // Chave inválida len = objTextBox.value.length; for(i = 0; i < len; i++) if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break; aux = ''; for(; i < len; i++) if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i); aux += key; len = aux.length; if (len == 0) objTextBox.value = ''; if (len == 1) objTextBox.value = '0'+ SeparadorDecimal + '0' + aux; if (len == 2) objTextBox.value = '0'+ SeparadorDecimal + aux; if (len > 2) { aux2 = ''; for (j = 0, i = len - 3; i >= 0; i--) { if (j == 3) { aux2 += SeparadorMilesimo; j = 0; } aux2 += aux.charAt(i); j++; } objTextBox.value = ''; len2 = aux2.length; for (i = len2 - 1; i >= 0; i--) objTextBox.value += aux2.charAt(i); objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len); } return false; }  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Estou com uma dúvida de validação de INPUT com função moeda.
       
      Tenho um input onde o usuário digita um valor qualquer, por exemplo: 1.234,56
      o problema é quando precisa atualizar o valor.
       
      Quando o usuário atualizar o input fica assim: 1.234,
       
      como faço para atualizar as casas decimais, conforme o valor for sendo alterado ?
       
      o input está assim:
       
      <div class="col-md-2"> <label for="">Valor Unitário</label> <input type="text" class="form-control" id="estoqprod" name="estoqprod" style="font-size:15px; font-weight:bold; width:100%; text-align:center;" placeholder="0,00" OnKeyUp="calcProd();" onkeypress="return(FormataMoeda(this,'.',',',event))" > </div>  
      a função para formatar o input para moeda está assim:
      obs.: a Função CalcProd está executando corretamente
      function calcProd(){ //Obter valor digitado do produto var estoq_prod = document.getElementById("estoqprod").value; //Remover ponto e trocar a virgula por ponto while (estoq_prod.indexOf(".") >= 0) { estoq_prod = estoq_prod.replace(".", ""); } estoq_prod = estoq_prod.replace(",","."); //Obter valor digitado do produto var prod_qtde = document.getElementById("qtde").value; //Remover ponto e trocar a virgula por ponto while (prod_qtde.indexOf(".") >= 0) { prod_qtde = prod_qtde.replace(".", ""); } prod_qtde = prod_qtde.replace(",","."); //Calcula o Valor do Desconto if (prod_qtde > 0 && estoq_prod > 0) { calc_total_produto = parseFloat(prod_qtde) - parseFloat(estoq_prod); var numero = calc_total_produto.toFixed(2).split('.'); //Calculo para não deixar GRAVAR valores negativos if (calc_total_produto < 0 ) { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.') * -1; document.getElementById("qtdeTotal").value = numero.join(','); } else { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.'); document.getElementById("qtdeTotal").value = numero.join(','); } } else { if (estoq_prod > 0) { document.getElementById("qtdeTotal").value = document.getElementById("estoqprod").value; } else { document.getElementById("qtdeTotal").value = "0,00"; } } } /*---Função para Formatar Campo para Moeda [R$]---*/ function FormataMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){ var sep = 0; var key = ''; var i = j = 0; var len = len2 = 0; var strCheck = '0123456789'; var aux = aux2 = ''; var whichCode = (window.Event) ? e.which : e.keyCode; if (whichCode == 13) return true; key = String.fromCharCode(whichCode); // Valor para o código da Chave if (strCheck.indexOf(key) == -1) return false; // Chave inválida len = objTextBox.value.length; for(i = 0; i < len; i++) if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break; aux = ''; for(; i < len; i++) if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i); aux += key; len = aux.length; if (len == 0) objTextBox.value = ''; if (len == 1) objTextBox.value = '0'+ SeparadorDecimal + '0' + aux; if (len == 2) objTextBox.value = '0'+ SeparadorDecimal + aux; if (len > 2) { aux2 = ''; for (j = 0, i = len - 3; i >= 0; i--) { if (j == 3) { aux2 += SeparadorMilesimo; j = 0; } aux2 += aux.charAt(i); j++; } objTextBox.value = ''; len2 = aux2.length; for (i = len2 - 1; i >= 0; i--) objTextBox.value += aux2.charAt(i); objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len); } return false; }  
      Grato,
       
      Cesar
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.