Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
Inny

[PHP] Blokowanie linków z wyjątkiem jednej strony

inny

Najlepsza odpowiedź dasiek , 20.02.2015 06:40

tak na szybko znalazłem. Może Cię zadowoli.

 

http://php.net/manua...n.parse-url.php

Przejdź do postu


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
11 odpowiedzi w tym temacie

#1 Engi

    [EKSiD] playaz44

  • Power User

Reputacja: 315
Wszechpomocny

  • Postów:1 071
  • GG:
  • Imię:Seba
  • Lokalizacja:Praga
Offline

Napisano 17.02.2015 15:58

Cześć, jest jakiś sposób aby zablokować wszystkie wysyłane linki (string z GET'a) ale przepuszczać linki z jednej "zaufanej" strony? Próbowałem strpos'em i stristr ale oba wywalają się jeżeli trzeba je sprawdzać czy != false (mimo, że na var_dumpie działają idealnie). 

 

Przepuszczanie tej jednej strony to sam sobie dorobię ale jak zablokować wszystkie inne? Wystarczy, że przeciągnę preg matchem po domenach i jeżeli jest link to strposem przeciągnąć czy przed domeną jest odpowiedni adres strony? Czy może jak zawsze Darczysław Naczelnik ma na to gotowca?


  • +
  • -
  • 0
Użytkowniku! Zanim napiszesz wiadomość wiedz, że:

W odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

1:0 dla Benia :D
Nie pomagam za darmo na pw.

#2 KochamFootball

    Profesjonalista

  • Użytkownik

Reputacja: 27
Życzliwy

  • Postów:222
  • Lokalizacja:Poland
Offline

Napisano 17.02.2015 16:04

explode :D


  • +
  • -
  • 0

Gdzie moje ciastka?


#3 Engi

    [EKSiD] playaz44

  • Autor tematu
  • Power User

Reputacja: 315
Wszechpomocny

  • Postów:1 071
  • GG:
  • Imię:Seba
  • Lokalizacja:Praga
Offline

Napisano 17.02.2015 18:08

Ty się z tym Twoim explode schowaj, bo gadasz, że można do wszystkiego użyć, a kiedy chciałem przykład to unikałeś mnie przez 3 tygodnie.


  • +
  • -
  • 1
Użytkowniku! Zanim napiszesz wiadomość wiedz, że:

W odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

1:0 dla Benia :D
Nie pomagam za darmo na pw.

#4 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 17.02.2015 18:59

Co dokładnie chcesz blokować? Bo piszesz raz o linkach, potem o get (czyli pewnie jakiś formularz). Co chcesz dokładniej osiągnąć?
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#5 Engi

    [EKSiD] playaz44

  • Autor tematu
  • Power User

Reputacja: 315
Wszechpomocny

  • Postów:1 071
  • GG:
  • Imię:Seba
  • Lokalizacja:Praga
Offline

Napisano 17.02.2015 19:13

Chcę zablokować możliwość wysyłania linków ze wszystkich stron oprócz jednej, załóżmy, że ma nazwę www.amxx.pl, przy próbie wysłania linku do innej strony wyświetli się jakiś tam "blablabla", a przy wysłaniu linka z amxx.pl przepuści go normalnie tak jakby to była zwykła wiadomość. 


  • +
  • -
  • 0
Użytkowniku! Zanim napiszesz wiadomość wiedz, że:

W odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

1:0 dla Benia :D
Nie pomagam za darmo na pw.

#6 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 18.02.2015 20:10

Ale gdzie to ma być blokowane? W jakimś inpucie formularza?
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#7 speedkill

    Godlike

  • Przyjaciel

Reputacja: 1 592
Godlike

  • Postów:2 733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 18.02.2015 20:20

Pokaż co tam zrobiłeś, albo wytłumacz to dokładnie, bo sam nie wiem o co chodzi.
  • +
  • -
  • 0

If you can dream it, you can do it.


#8 Engi

    [EKSiD] playaz44

  • Autor tematu
  • Power User

Reputacja: 315
Wszechpomocny

  • Postów:1 071
  • GG:
  • Imię:Seba
  • Lokalizacja:Praga
Offline

Napisano 18.02.2015 20:56

Podmiana linku
 

$msg = 'losowałem losowo losowy ciąg znaków i podałem linka www.amxx.pl który nie będzie podmieniany ale podałem też link z innej strony www.google.pl który ma być zmieniony na redirectora, a reszta tekstu ma być nie tknięta';
 
if(preg_match_all('#((https?|ftp|file)://)?([a-zA-Z0-9\.\-]{1,})\.([a-zA-Z0-9]{1,6})(\:[0-9]{1,})?(\S{1,})?#si', $msg, $links)) {
	$links = $links[0];
	$linksToReplace = array();
	foreach($links as $link) {
		if(substr($link, 7, 9) != 'www.amxx.pl')
			$linksToReplace[$link] = 'http://amxx.pl/redirect.php?u='.base64_encode($link);
	}
	if(count($linksToReplace) > 0)
		$msg = strtr($msg, $linksToReplace);
}

 
Dodawanie i formatowanie wiadomości

public function addText($text, $formatBits=FORMAT_NONE, $R=0, $G=0, $B=0)
{
  if ($formatBits & FORMAT_NEW_LINE)
   $text.="\r\n";

  $text=str_replace("\r\r", "\r", str_replace("\n", "\r\n", $text));
  $html=str_replace("\r\n", '<br>', htmlspecialchars($text, ENT_NOQUOTES, 'UTF-8'));


  if ($this->format!==NULL) {
   $this->format.=pack(
     'vC',
     mb_strlen($this->text, 'UTF-8'),
     (($formatBits & FORMAT_BOLD_TEXT)) |
     (($formatBits & FORMAT_ITALIC_TEXT)) |
     (($formatBits & FORMAT_UNDERLINE_TEXT)) |
     ((1 || $R!=$this->R || $G!=$this->G || $B!=$this->B) * 0x08)
    );
   $this->format.=pack('CCC', $R, $G, $B);

   $this->R=$R;
   $this->G=$G;
   $this->B=$B;

   $this->text.=$text;
  }


  if ($R || $G || $B) $html='<span style="color:#'.str_pad(dechex($R), 2, '0', STR_PAD_LEFT).str_pad(dechex($G), 2, '0', STR_PAD_LEFT).str_pad(dechex($B), 2, '0', STR_PAD_LEFT).';">'.$html.'</span>';
  if ($formatBits & FORMAT_BOLD_TEXT) $html='<b>'.$html.'</b>';
  if ($formatBits & FORMAT_ITALIC_TEXT) $html='<i>'.$html.'</i>';
  if ($formatBits & FORMAT_UNDERLINE_TEXT) $html='<u>'.$html.'</u>';

  $this->html.=$html;


  return $this;
}

public function addBBcode($bbcode)
	{
		$tagsLength=0;
		$heap=array();
		$start=0;
		$bbcode=str_replace('[br]', "\n", $bbcode);

		while (preg_match('/\[(\/)?(b|i|u|color)(=#?[0-9a-fA-F]{6})?\]/', $bbcode, $out, PREG_OFFSET_CAPTURE, $start)) {
			$s=substr($bbcode, $start, $out[0][1]-$start);
			$c=array(0, 0, 0);
			if (strlen($s)) {
				$flags=0;
				$c=array(0, 0, 0);
				foreach ($heap as $h) {
					switch ($h[0]) {
						case 'b': { $flags|=0x01; break; }
						case 'i': { $flags|=0x02; break; }
						case 'u': { $flags|=0x04; break; }
						case 'color': { $c=$h[1]; break; }
					}
				}


				$this->addText($s, $flags, $c[0], $c[1], $c[2]);
			}


			$start=$out[0][1]+strlen($out[0][0]);


			if ($out[1][0]=='') {
				switch ($out[2][0]) {
					case 'b':
					case 'i':
					case 'u': {
							array_push($heap, array($out[2][0]));
							break;
						}

					case 'color': {
							$c=hexdec(substr($out[3][0], -6, 6));
							$c=array(
									($c >> 16) & 0xFF,
									($c >> 8) & 0xFF,
									($c >> 0) & 0xFF
								);

							array_push($heap, array('color', $c));
							break;
						}
				}

				$tagsLength+=strlen($out[0][0]);


			} else {
				array_pop($heap);
				$tagsLength+=strlen($out[0][0]);
			}
		}


		$s=substr($bbcode, $start);
		if (strlen($s))
			$this->addText($s);


		return $this;
	}

Wysyłanie wiadomości:

public function push($messages)
	{
		if (!$this->authorization->isAuthorized())
			return false;


		$count=0;
		if (!is_array($messages))
			$messages=array($messages);


		$data=$this->authorization->getServerAndToken();
		foreach ($messages as $message) {
			$ch=$this->getSingleCurlHandle();

			curl_setopt($ch, CURLOPT_URL, 'https://'.$data['server'].'/sendMessage/'.$this->gg);
			curl_setopt($ch, CURLOPT_POSTFIELDS, 'to='.join(',', $message->recipientNumbers).'&msg='.urlencode($message->getProtocolMessage()));

			$r=curl_exec($ch);
			$s=curl_getinfo($ch);
			curl_close($ch);

			$count+=(strpos($r, '<result><status>0</status></result>')!==false);
		}


		return $count;
	}

Wiadomość nie jest wysyłana przez formularz tylko przez aplikację na shitdowsa


  • +
  • -
  • 0
Użytkowniku! Zanim napiszesz wiadomość wiedz, że:

W odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

1:0 dla Benia :D
Nie pomagam za darmo na pw.

#9 dasiek

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 2 077
Godlike

  • Postów:5 706
  • Imię:Adaś
  • Lokalizacja:No teraz trochę dalej od WWy
Offline

Napisano 20.02.2015 06:40   Najlepsza odpowiedź

tak na szybko znalazłem. Może Cię zadowoli.

 

http://php.net/manua...n.parse-url.php


  • +
  • -
  • 1

#10 KochamFootball

    Profesjonalista

  • Użytkownik

Reputacja: 27
Życzliwy

  • Postów:222
  • Lokalizacja:Poland
Offline

Napisano 20.02.2015 14:01

Ty się z tym Twoim explode schowaj, bo gadasz, że można do wszystkiego użyć, a kiedy chciałem przykład to unikałeś mnie przez 3 tygodnie.

Taki ze mnie ninja :D

ParseURL jak najbardziej, ale explode tez sie nadaje - wystarczy:
 

użyć głowy

$url = "http://www.stronaww.com";
$x = explode(".", $url);
# $x[0] = "http://www";
# $x[1] = "stronawww";
# $x[2] = "com";

  • +
  • -
  • 0

Gdzie moje ciastka?


#11 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 20.02.2015 14:23

Ty się z tym Twoim explode schowaj, bo gadasz, że można do wszystkiego użyć, a kiedy chciałem przykład to unikałeś mnie przez 3 tygodnie.

Taki ze mnie ninja :D

ParseURL jak najbardziej, ale explode tez sie nadaje - wystarczy:
 
użyć głowy

$url = "http://www.stronaww.com";
$x = explode(".", $url);
# $x[0] = "http://www";
# $x[1] = "stronawww";
# $x[2] = "com";

A jak mamy www.pod.strona.net.pl?
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#12 Engi

    [EKSiD] playaz44

  • Autor tematu
  • Power User

Reputacja: 315
Wszechpomocny

  • Postów:1 071
  • GG:
  • Imię:Seba
  • Lokalizacja:Praga
Offline

Napisano 20.02.2015 15:09

Dlatego pisałem, żeby się schował z tym explode. Co do ParseURL mogłoby być tylko muszę sprawdzić co mi zapoda w hoście jak podam stronę zamiast nazwy domeny jej IP ale to jutro


  • +
  • -
  • 0
Użytkowniku! Zanim napiszesz wiadomość wiedz, że:

W odpowiedzi na ten status, przejrzałem kilka ostatnich Twoich postów i dodałem Ci kolejne 3 punkty ostrzeżeń. Mam nadzieję, że pomogłem.

1:0 dla Benia :D
Nie pomagam za darmo na pw.





Również z jednym lub większą ilością słów kluczowych: inny

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych