Verificare caracter # hash in adresa URL

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
Avatar utilizator
ionatan
Mesaje: 94

Verificare caracter # hash in adresa URL

Salut,
tot incerc si nu pot sa preiau intr/o variabila adresa paginii de ex valoarea variabilei sa fie "siteulmeu.us/#_=_"
Deci vreau sa fac, daca adresa e "siteulmeu.us/#_=_" sa ma redirectionese pe o alta pagina iar daca adresa e siteulmeu.us/ sa nu ma redirectioneze

Am gasit ceva dar nu prea e ceea ce vreau

Cod: Selectaţi tot

<?php
if (!isset ($_GET['valor'])) {
?>
<script type="text/javascript">
window.location = location.href.replace(/#.*$/, '') + '?valor=' +
escape (location.href.replace(/^.*#/, ''));
</script>
<?php
}
 else {
?>
<h1 align="center">El valor del ANCHOR es: <?= $_GET['valor']
?>
</h1>
<?php
}
?>
Multumesc
Cumpără adevărul, şi nu-l vinde, înţelepciunea, învăţătura şi priceperea.
https://www.crestinmultimedia.com/

MarPlo Mesaje: 4343
Salut
Din ce stiu, browser-ul nu trimite la server partea din adresa URL dupa semnul "#". E client side, deci nu poti sa verifici in php daca adresa URL curenta e cu "#", dar poti sa verifici in Javascript.
Scriptul urmator face redirect daca adresa URL contine exact: " #_=_ ".

Cod: Selectaţi tot

<script>
if(location.href.match(/#_=_/)) window.location = 'adresa_pagina_redirect';
</script>

ionatan Mesaje: 94
Multumesc. merge perfect, dar dupa ore intregi de chin,,, tot nu reusesc sa fac ce vreau. Cred ca doar in Javascript daca s-ar putea face ceva..
Sa fiu mai exact: dupa autentificarea prin facebook, indiferent pe ce pagina ma aflu ma redirectioneaza pe "siteulmeu.us/#_=_" e un redirect de la facebook iar daca ma autentific normal cu utilizator si parola e ok, raman pe aceasi pagina.
Vreau cand sunt pe "siteulmeu.us" si ma autentific cu facebook chiar daca ma redirectioneaza pe "siteulmeu.us/#_=_" sa nu se inample nimic dar , cand ma autentific de pe oricare alta pagina ma trimite iar pe "siteulmeu.us/#_=_" atunci sa fac acel redirect cu

Cod: Selectaţi tot

if(location.href.match(/#_=_/)) window.location = 'adresa_pagina_redirect'; 
printre altele am incercat asa

Cod: Selectaţi tot

<script>  if(location.href.match(/#_=_/)) window.location = '<?php echo $_SESSION['url_pagina'] ?>';</script>
e ok dar cand sunt pe siteulmeu.us aici nu mai am valoarea de la $_SESSION['url_pagina']
daca as pune si in index $_SESSION['url_pagina'] = $_SERVER['REQUEST_URI'] ; nu as rezolva nimic tot pe"siteulmeu.us" m-ar redirectiona indiferent de pe ca pagina vin...
cred ca am fost cam lung..... dar oricum merci mult !
Cumpără adevărul, şi nu-l vinde, înţelepciunea, învăţătura şi priceperea.
https://www.crestinmultimedia.com/

MarPlo Mesaje: 4343
Nu ma pricep la API-ul Facebook, dar trebuie sa faci o diferenta, sa adaugi o variabila in javascript, sau ceva in url, care sa poata fi recunoscuta prin javascript, si sa faca diferenta dintre cand e autentificare din facebook fata de autentificare din alta pagina.

ionatan Mesaje: 94
Salut,
Nu ma pricep la javascript defapt foarte putin si in celelalte dar am reusit ceva sper sa fubctioneze bine.. cu window.history.back(); deci complet este

Cod: Selectaţi tot

<script type="text/javascript">  
    if(location.href.match(/#_=_/))  {
		window.history.back();  
		}
</script>

deci indiferent de pe ce pagina fac autentificarea ma aduce inapoi pe aceeasi pagina
Mai am o intrebare
daca adresa URL contine exact: " #_=_ " dupa window.history.back(); sa puta oprii toate executiile scripturilor de pe pagina?
am incercat cu window.stop(); dar se opreste pagina " #_=_ "
Cumpără adevărul, şi nu-l vinde, înţelepciunea, învăţătura şi priceperea.
https://www.crestinmultimedia.com/

MarPlo Mesaje: 4343
Incearca cu "exit".
In exemplu urmator functia alert() ar trebui sa nu se execute, ci doar instructiunea back().

Cod: Selectaţi tot

if(location.href.match(/#_=_/)) {
  window.history.back(); exit;
  alert(7);  // to test
}
Dar alte coduri care sunt inainte de acel if() sunt executate deja, deci trebuie pus in <header>, inainte de orice alt script.

ionatan Mesaje: 94
Intradevar functia alert() nu se executa dar restul codului da si aici ma rerer la cod html si php la acest cod ma refeream sa nu se mai execute.
Se poate ??
Cumpără adevărul, şi nu-l vinde, înţelepciunea, învăţătura şi priceperea.
https://www.crestinmultimedia.com/

MarPlo Mesaje: 4343
PHP se executa pe server inainte ca pagina sa existe in browser. Nu ai cum sa-l intreruri din html /javascript fiindca e deja finalizat cand aceste coduri se executa.

ionatan Mesaje: 94
Deci ca sa inteleg, (in cazul meu)
PHP se executa pe server inainte sa apara in browser (corect) apoi javascript face redirectionarea:

Cod: Selectaţi tot

if(location.href.match(/#_=_/))  {
  window.history.back(); 
}
si atunci pe pagina nu apuca sa imi afiseze rezultatele scripturilor PHP dar ele si-au facut treaba deja.
Multumesc pt intelegere.
Cumpără adevărul, şi nu-l vinde, înţelepciunea, învăţătura şi priceperea.
https://www.crestinmultimedia.com/