Попробуйте это
$username = $_POST['username'];
$password = $_POST['password'];
$result = mysqli_query('SELECT * FROM Users WHERE UserName LIKE $username');
if($result){
while($row = mysqli_fetch_array($result))
{
echo $row['FirstName'];
}
}
Общее правило заключается в том, что блокировщики всплывающих окон будут задействованы, если [j1] или подобное вызывается из javascript, который не вызывается прямым действием пользователя. То есть вы можете вызвать window.open
в ответ на нажатие кнопки без попадания в блокировщик всплывающих окон, но если вы поместите тот же код в событие таймера, он будет заблокирован. Глубина цепочки вызовов также является фактором - некоторые старые браузеры смотрят только на непосредственного вызывающего абонента, новые браузеры могут немного отступить, чтобы увидеть, был ли вызывающий абонент щелчком мыши и т. Д. Держите его настолько мелким, насколько это возможно, чтобы избежать блокировщиков всплывающих окон.
Кроме того, Swiss Mister post, в моем случае window.open был запущен внутри обещания, который включил блокировку всплывающих окон, мое решение было: в угловом:
$scope.gotClick = function(){
var myNewTab = browserService.openNewTab();
someService.getUrl().then(
function(res){
browserService.updateLocation(res.url, myNewTab);
}
);
};
browserService:
this.openNewTab = function(){
var newTabWindow = $window.open();
return newTabWindow;
}
this.updateTabLocation = function(tabLocation, tab) {
if(!tabLocation){
tab.close();
}
tab.location.href = tabLocation;
}
так вы можете открыть новую вкладку с помощью ответа на обещание и не вызвать блокировщик всплывающих окон.
Как хорошая практика, я думаю, что это хорошая идея test , если всплывающее окно было заблокировано и принять меры в случае. Вы должны знать, что window.open имеет возвращаемое значение, и это значение может быть пустым, если действие не выполнено. Например, в следующем коде:
function pop(url,w,h) {
n=window.open(url,'_blank','toolbar=0,location=0,directories=0,status=1,menubar=0,titlebar=0,scrollbars=1,resizable=1,width='+w+',height='+h);
if(n==null) {
return true;
}
return false;
}
, если всплывающее окно заблокировано, window.open вернет значение null. Таким образом, функция вернет false.
В качестве примера предположим, что вы вызываете эту функцию непосредственно из любой ссылки с
blockquote>target="_blank"
: если всплывающее окно успешно открыто, то возвратfalse
блокирует действие ссылки , иначе, если всплывающее окно заблокировано, возвратtrue
позволит по умолчанию (открыть новое окно _blank) и продолжить.<a href="http://whatever.com" target="_blank" onclick='return pop("http://whatever.com",300,200);' >
Таким образом, у вас будет всплывающее окно, если оно работает, и окно _blank, если нет.
blockquote>Если всплывающее окно не открывается, вы можете:
- открыть пустое окно, как в пример и продолжить
- открыть поддельное всплывающее окно (iframe внутри страницы)
- сообщить пользователю («разрешить всплывающие окна для этого сайта»)
- открыть пустое окно, а затем информировать пользователя и т. д.
http://code.google.com/p/google-api-javascript-client/wiki/Authentication
См. область, где она читается:
Настройка аутентификации
В реализации клиента OAuth 2.0 используется всплывающее окно, предлагающее пользователю выполнить вход и одобрить приложение. Первый вызов функции gapi.auth.authorize может вызывать блокировки всплывающих окон, поскольку он косвенно открывает всплывающее окно. Чтобы предотвратить блокирование блокировщика всплывающих окон при вызове auth, вызовите функцию gapi.auth.init (обратный вызов), когда клиент загружается. Приведенный обратный вызов будет выполнен, когда библиотека готова к авторизации вызовов.
Я бы предположил, что это связано с реальным ответом выше, как он объясняет, есть ли немедленный ответ, он не отключит всплывающее предупреждение. «Gapi.auth.init» делает это так, что api происходит немедленно.
Практическое применение
Я сделал микросервис с проверкой подлинности с открытым исходным кодом, используя паспорт узла на npm, и различные паспортные пакеты для каждого провайдера. Я использовал стандартный подход переадресации к третьей стороне, давая ему URL-адрес переадресации, чтобы вернуться. Это было программно, поэтому я мог бы иметь разные места для перенаправления обратно, если вход / регистрация и на определенные страницы.
На основе очень полезный совет Джейсона Себринга , а на материалах, покрытых здесь и , Я нашел идеальное решение для своего случая:
Псевдокод с фрагментами Javascript:
var importantStuff = window.open('', '_blank');
Необязательно: добавьте некоторые «ожидания», информационное сообщение. Примеры: a) Внешняя страница HTML: замените указанную выше строку на var importantStuff = window.open('http://example.com/waiting.html', '_blank');
b) Текст: добавьте следующую строку ниже: importantStuff.document.write('Loading preview...');
importantStuff.location.href = 'http://shrib.com';
Обогатите вызов window.open
с любыми дополнительными параметрами, которые вам нужны.
Я действительно использую это решение для mailto перенаправление, и он работает во всех моих браузерах (Windows 7, Android). Бит _blank
помогает перенаправлять mailto для работы на мобильных устройствах.
Ваш опыт? Любой способ улучшить это?
Я попробовал несколько решений, но его единственный, который действительно работал для меня во всех браузерах
let newTab = window.open();
newTab.location.href = url;
Самый простой способ избавиться от этого - это очень хорошо работает -
Пример:
<script>
function loadUrl(location)
{
this.document.location.href = location;
}</script>
<div onclick="loadUrl('company_page.jsp')">Abc</div>
Это работает очень хорошо. Приветствия
Я не хочу создавать новую страницу, если обратный вызов не вернулся успешно, поэтому я сделал это, чтобы имитировать пользовательский клик:
function submitAndRedirect {
apiCall.then(({ redirect }) => {
const a = document.createElement('a');
a.href = redirect;
a.target = '_blank';
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
});
}