Ir para conteúdo

POWERED BY:

Arquivado

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

Cassiano José

GET em array, alguem sabe como?

Recommended Posts

Tenho um código:

$config = array();
$config["stations"]["local"] = array( 
"host" => "ip",
"port" => porta,
"password" => "",
                "logo" => ""
);

 

E Estava tentando da um 'get' na URL para que ele retornasse os valores da URL para o campo host e port, tentei

 

$ip = $_GET['ip'];
$port = $_GET['porta'];


$config["stations"]["local"] = array( 
		"host" => "$ip",
		"port" => "$port,
		"password" => "",
                "logo" => ""
	);

 

Sem sucesso!

Não tenho conhecimento em PHP por isso estou pedindo a ajuda de Vocês, alguém sabe como fazer pra levar os dados do GET para o Array?

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

para enviar um array pelo método get, serialize-o

 

serialize( $arr )

http://php.net/serialize

 

para receber, desserialize-o

 

unserialize( $_GET['parametro'] )

http://php.net/unserialize

 

 

mas não entendi o motivo de enviar dados desse tipo pelo GET.. pelo que postou parece ser dados sensíveis..

 

se for isso, estude outra forma pois é uma grave falha de segurança..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu entendo, mas no caso, se não for pedir muito..

Como ficaria o código acima?

é que não entendo mesmo de PHP, entrei no universo dele agora, e tendo o código pronto,

ao menos um exemplo, eu consigo entender e usar posteriormente..

 

Então, como ficaria o código acima?

Algum exemplo de como usar o serialize nele?

 

 

Seria tipo, quando alguém digitasse na URL:

 

 

arquivo.php?ip=111.222.333.444&port=9988

 

Ele retornasse:

 

$config["stations"]["local"] = array( "host" => "111.222.333.444","port" => "9988,"password" => "", "logo" => "" );

 

Entendeu? ;\

Compartilhar este post


Link para o post
Compartilhar em outros sites

Do jeito que você está fazendo deveria dar certo... não será porque você está se esquecendo de fechar aspas (antes da vírgula) no elemento "port"?

 

Configure o PHP para exibir mensagens de erro

ini_set("display_errors", "on");
error_reporting(E_ALL);

 

Se o script retorna uma mensagem de erro, poste-a aqui.

 

É bom tomar o cuidado de verificar o o endereço IP está num padrão correto e se "port" é um número inteiro, já que o usuário pode alterar a URL como ele quiser.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use parse_url(), assim todo par chave=valor presente na URL estará no array resultante, sendo o dado à esquerda do sinal de igual dade a chave do array e à direita seu respectivo valor.

 

Na hora de montar esse array você pode com um operador ternário verificar se aquele dado está presente naquele array e se estiver, usá-lo, se não estiver, definir algum valor padrão.

 

Se não houverem valores-padrão, ao invés do ternário, antes de montar o array você cria uma séries de testes verificando se cada um dos parâmetros requeridos está presente ou não e, se não estiver, mostra algum tipo de erro ou aborta o procedimento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

desculpe questionar, mas não poderia usar simples parâmetros ?

 

?ip=xxxx&port=xxxx

 

e resgatar

 

$_GET['ip']]

$_GET['port']

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu estou usando os parâmetros simples, mas ele parece não captura dentro da array...

Para melhor entendimento,

Isto é um player de rádio, e queria que quando alguém inserisse no formulário ou URL os dados IP e PORT,

o mesmo fosse levado para dentro da array, tipo, eu digito ip: 111.22.33.444 e minha porta: 9080, então ele me devolvia:

$config["stations"]["local"] = array( 
		"host" => "111.22.33.444",
		"port" => "9080,
		"password" => "",
                "logo" => ""
	);

 

Parece ser algo simples, mas não consigo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só pra constar... Você está trafegando os dados pelo formulário e resgatando via $_GET. Mas o action do seu formulário está definido como get?

 

Porque se estiver como post, você deveria ler as informações de $_POST.

 

E mais! Poste mais do código porque se o bê-a-bá não funciona, alguma coisa está impedindo e ver todas as vezes as mesmas linhas de código, não ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nem POST nem GET, nenhum vai...

Da uma olhada no código:

<?php
$ip = $_GET['ip'];
$port = $_GET['ip'];

	//Config options - edit at will (if you're not sure about a setting, leave it as is)
	$config = array();
	
	//main options
	$config["adminPassword"] = "djzurdo"; //the password to access the administration section
	$config["defaultStation"] = ""; //the default station to load
	$config["defaultEmail"] = "martin@redhispana.org"; //the default email address to where form mails are sent
	$config["defaultEmailSubject"] = "AACPlayer Feedback"; //the default email address to where form mails are sent
	$config["facebook"] = ""; //url for facebook button
	$config["twitter"] = ""; //url for twitter button
	$config["about"] = "http://atalaia87fm.com.br"; //url of developer site, and/or with player info
	$config["aboutLabel"] = ""; //label of about context menu item (if emtpy uses the about url as label)
	$config["defaultLanguage"] = ""; //the language pack to load on startup (leave blank to use the built-in language pack)
	
	//code for ads on the popup page (leave emtpy for no ads)
	$config["ads"] = '
	'; 
	
	//misc options
	$config["preferredConnectionType"] = "proxy"; //which type of connection to use when connecting to the shoutcast server (can be socket, tcp, proxy, or auto)
	$config["autoplay"] = true; //whether the player should start playing automatically
	$config["trackUpdateDelay"] = 20; //how many seconds to wait before displaying a track, after detecting a track change
	$config["trackPollInterval"] = 20; //how many seconds between each status request (used to detect if the track has changed)
	$config["tickerUpdateInterval"] = 30; //how many seconds until the ticker updates automatically to a generic message (song, station, stream, etc)
	$config["maxTracks"] = 20; //maximum number of tracks to keep in history
	$config["defaultTrackTitleFormat"] = ""; //the default track format, used if the station does not define its own format
	$config["getAlbum"] = true; //whether to fetch the album automatically when a track changes or an history item is clicked
	$config["linkAlbumToStore"] = true; //whether to link the album cover to the store (amazon) link (if available)
	$config["popup"] = "popup"; //javascript function to call (format: function_name, param_1, .., param_n; eg. "popup,728,364")
	$config["preloadTracks"] = true; //whether to automatically fetch albums for all tracks in the history
	$config["reconnectSeconds"] = 0; //will allow the player to reconnect automatically (if the stream goes down) after the specified number of seconds (if 0, changes to the next station immediately)
	
	//manager options
	$config["stationIntegrationScript"] = ""; //the path of an external php script that should supply station information for unconfigured stations
	$config["languagesPath"] = "var/languages"; //the path (from this file) to the directory holding the language pack files
	$config["useCache"] = true; //whether to cache requests or not
	$config["allowOverride"] = true; //whether to allow querystring parameters to override configuration options
	$config["downloadTrackInfo"] = true; //whether to download extended track info/album art automatically for every song
	$config["socketTimeout"] = 10; //amount of seconds that each external connection will wait for a response, until it gives up
	$config["bufferSeconds"] = 5; //will delay playback until the specified number of seconds of the stream have been loaded, to ensure a smooth playing experience
	
	//display options (for header, ticker, etc)
	$config["display"] = array();
	$config["display"]["miniCover"] = true; //whether to display the album cover on the mini player
	$config["display"]["stationName"] = true; //whether to display the station name 
	$config["display"]["listeners"] = true; //whether to display the stream listeners count
	$config["display"]["genre"] = true; //whether to display the station genre
	$config["display"]["contentType"] = true; //whether to display the stream content type (aac, mp3, etc)
	$config["display"]["bitrate"] = true; //whether to display the stream bitrate (shown in Kbps)
	$config["display"]["popup"] = true; //whether to display the popup button (that opens the full player)
	$config["display"]["contact"] = true; //whether to display the contact button
	$config["display"]["facebook"] = true; //whether to display the facebook button
	$config["display"]["twitter"] = true; //whether to display the twitter button
	$config["display"]["historySection"] = true; //whether to display the history (recently played) section
	$config["display"]["stationsSection"] = true; //whether to display the station list section (only shown if there is more than one station configured)
	$config["display"]["contactSection"] = true; //whether to display the contact form section
	
	//amazon options
	$config["amazon"] = array();
	$config["amazon"]["associate"] = "fre08-20"; //associate tag
	$config["amazon"]["key"] = "AKIAJWZLE4H3QIJINM7Q"; //web services api public key
	$config["amazon"]["secret"] = "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"; //web services api secret key
	
	//cache options
	$config["cache"] = array();
	$config["cache"]["path"] = "var/cache"; //path to directory that holds the cache files (defaults to system temp dir)
	$config["cache"]["timeout"] = 86400; //how many seconds before the cached data expires and needs to be refreshed (defaults to 1 day)
	
	//restrictions
	$config["restrictions"] = array();
	$config["restrictions"]["dateLimit"] = ""; //if set, the player will stop working after the specified date (preferred format: yyyy-mm-dd)
	$config["restrictions"]["siteLock"] = ""; //a comma separated list of domain names the player is allowed to run on (supports * wildcards)
	
	//predefined stations
	$config["stations"] = array();
	/*
		Each station element must have a key with its id, and contain some or all of the following options:		
			type (shoutcast): server type (currently only shoutcast is supported)
			host (domain): server host name (defaults to this same host)
			port (int): server port (defaults to 8000)
			uri (path): path to server playlist (defaults to /)
			password (string): admin password (to access xml info)
			policy (url): url to flash policy file (defaults to http://host/crossdomain.xml)
			format (string): track format (like "%artist - %title", or "%1 - %2")
			logo (url): url to station logo image
			name: station name (overrides default stream name)
			genre: station genre (overrides default stream genre)
			website (url): url of the website to link to when the logo is clicked
			proxy (true | false | url): whether to use a proxy with this server or not, and / or an alternate manager url (if true, uses the default manager)
			url (server url): an alternate way to specify server configuration, by specifying all parameters in one url (e.g. http://admin:secret@radio.com:8000/playlist.lst)
			private (true | false): if private, the station is loaded but hidden from the station pane
			alternates (string): comma separated list with urls of alternate servers, should the main server be down or full
			<any other config option>: overrides the default value of the specified config option for this station only
	*/
	
	//sample station for demo purposes only, replace with your own on a live environment
	$config["stations"]["local"] = array( 
		"host" => "$ip",
		"port" =>  "$port",
		"password" => "djzurdo",
                "logo" => ""
	);
	
	
?>

 

Então... alguma dica??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá... E é esse o arquivo informado no action do formulário? Ou você o está acessando manualmente?

 

Porque se ele for o action do formulário, após submetido haverá uma tela em branco pois o script "não faz nada". Agora e o action do formulário aponta para outro arquivo tem de ver se esse outro arquivo chama esse aí para que as informações sejam passadas.

 

Tanto é verdade que se você adicionar:

 

 

var_dump( $ip, $port );

 

Depois da definição dessas variáveis (que aliás estão apontando para a mesma informação) e acessar ESSE arquivo manualmente, COM os respectivos argumentos presentes na URL, você verá os dados na tela.

 

Só que só vai ver isso! O arquivo físico não serpa sobrescrito com os novos valores par que este sirva como configuração de um sistema terceiro, que é o que eu acho que você tem em mente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse arquivo está em 'include' no index.php que contém o resto do player, ele faz as leituras da array por 'nome', se selecionar na select o 'local' ele vai buscar na config.php a radio 'local' e suas respectivas configurações; ip e porta.

Mas ao da um GET ele não vai, fiz um teste com 'echo' na index, funcionou!

Mas só aparecia das 2 uma, exemplo, se eu digitasse 'index.php?ip=111.222.333.444

ele capturava o IP,!

se eu digitasse 'index.php?port=9888'

ele capturava a porta!

Mas, se eu digitar: 'index.php?port=9988&ip-111.222.333.444

ele não me obtem o ip, apenas a porta que ta vindo primeiro..

Não faz sentido, então chegue a conclusão de que ele está apenas informando o ip ao array e não informa a porta...

 

Como procederia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui!

Na index eu inclui:

$porta = $_GET['porta'];
$ip = $_GET['ip'];
$_SESSION['porta']=$porta;
$_SESSION['ip']=$ip;

 

daí no arquivo config:

session_start();
$ip = $_SESSION['ip'];
$porta = $_SESSION['porta'];


$config["stations"]["locales"] = array( 
		"host" => "$ip",
		"port" => "$porta",
		"password" => "cassianohost",
                "logo" => ""
	);

 

Obrigado amigos!



Eu não soube explicar direito a vocês mas me ajudaram...

Vlw amigo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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