steam登录时显示无法连接服务器怎么办?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了steam登录时显示无法连接服务器怎么办?相关的知识,希望对你有一定的参考价值。

游戏或者平台出现登录不上无法连接服务器等情况的一般有2种情况。属于系统和网络的。系统是比较难排查的,我们可以先从网络入手解决此问题。

网络问题修复

服务器问题,有时候我们所在的区域会出现网络干路不通畅的问题。干路不通畅意思就是其他地区的网络是好的,只是你所在的地区连接此服务器出现问题。

一般这种情况下我们只能通过服务器跳转来解决此问题,也就是我们所说的网游加速器。所以如果出现这种情况的话我们可以尝试使用网游加速器来为steam连接国外节点。

目前官方并未给出任何解释,而且Steam服务器也未出现任何的问题,当前在线玩家依然有非常的多如图。而目前出现此问题的,只有国内大陆的用户,只能说明Steam暂时被墙了。

参考技术A team在连接至steam服务器时遇到问题的解决办法:
1.优化登录网络环境,使用加速工具进行加速
下载并打开迅游加速器,搜索“Steam”后选择“Steam商店|社区(解决1XX错误)”进行加速,迅游限免加速Steam,没有没有加速器时长的小伙伴也不用担心,左下角兑换码输入【白嫖迅游加速】可得5天加速时长;
2.检查本地网络环境
有时候遇到无法连接至Steam服务器也有可能是玩家本地网络不佳所导致的,如果是WiFi玩家建议更换为有线连接尝试,如果路由器网络不佳的玩家可以切换为手机热点进行尝试;同样在切换了本地网络之后也需要使用加速工具进行加速,不然也是无法成功连接服务器的。
3.第三种方法只适用于部分玩家,最有效的方法还是第一种,直接使用加速工具优化网络环境,以上就是steam在连接至steam服务器时遇到问题怎么办?

1美国服务器虽然是带宽资源多价格也便宜,但是由于物理距离太远,所以美国服务器速度就比
香港服务器慢很多。
2国内服务器是国内带宽资源也多,价格便宜速度也快,但是必须要备案
而香港美国不需要备案
3香港服务器的带宽资源都是国际出口的,所以带宽质量上更好,虽然总资源量少,价格上贵了点,
但是访问速度要比美国快很多,和国内相比香港服务器不需要备案,所以免去了很多麻烦。
而且我们的都是独享带宽不限流,我们是直营机房所以服务器的稳定性更有保障。

当用户登录时显示“注销”按钮,当他不使用 PHP/MySQL 时显示“连接”

【中文标题】当用户登录时显示“注销”按钮,当他不使用 PHP/MySQL 时显示“连接”【英文标题】:display the "logout" button when the user is logged in and 'connect' when he is not with PHP/MySQL 【发布时间】:2018-12-16 11:12:06 【问题描述】:

layout.phtml

<?php if (isset($_SESSION['user']) && ($_SESSION['user'] == false)): ?>
    <p>Hello </p>
    <a href="logout.php">Logout</a>
<?php else: ?>
    <a href="register.php">Sign up</a>
    <a href="userconnect.php">Connect</a>
<?php endif; ?>

我想在用户登录时显示logout按钮,在用户未登录时显示connect按钮。但是当发送表单数据时,它只显示connect按钮。

userconnect.phtml

有这个html表单。

<div class="user-connect">
  <?php if (isset($message))  echo $message;  ?>
    <form action="userconnect.php" method="post">
        <ul>
            <li>
                <label for="email"></label>
                <input type="text" id='email' name='email'>
            </li>
            <li>
                <label for="password"></label>
                <input type="password" id='password' name='password'>
            </li>
            <li>
                <input type="submit" name="enter">
            </li>
        </ul>
    </form>
</div>

userconnect.php

<?php

session_start();

if(isset($_POST["enter"]) && !empty($_POST["enter"])) 
    if(!empty($_POST['email']) && !empty($_POST['password'])) 
    
        $email = htmlspecialchars($_POST['email']);
        $password = htmlspecialchars(md5(md5($_POST['password'])));

        include ("connection.php");
        $query = $db->prepare('SELECT ID, email, password, firstName FROM user WHERE email = ?');
        $query->execute([$_POST['email']]);
        $user = $query->fetch();  

        if ($user) 
            if($_POST['password'] == $user['password'] && $_POST['email'] == $user['email'])
            
                $_SESSION['user'] = [
                    'email' => $user['email'],
                    'id' => $user['ID'] 
                ];
            
            $message = "Vous etes connectez!";
         else 
            $message = "Invalide email ou mot de passe!";
        
     else 
        $message = "Champs obligatoire a saisir";
    


$template = 'userconnect';
include 'layout.phtml';

转储$_SESSION['user']

<?php var_dump(isset($_SESSION['user'])); ?> 

显示bool(false)

您能帮我如何显示logout 按钮吗?

我到处搜索,但找不到解决方案。

【问题讨论】:

您是否在进行比较的其他页面上开始会话? 另外htmlspecialchars 应该只用于输出到浏览器。并且您应该使用比md5 更新的散列算法(加倍它不会使其更安全)。您也不需要$_POST['email'] == $user['email'],因为 SQL 已经验证了匹配。 你需要把if($_POST['password'] == $user['password'])改成这个:if( $password == $user['password']) @user3783243 如果我在显示的另一个页面上启动会话注意:会话已经开始 - 忽略 session_start() 【参考方案1】:

有个小问题。如果用户已登录,$_SESSION['user'] 不能是false。试试这样:

layout.phtml

<?php if (isset($_SESSION['user'])): ?>
    <p>Hello </p>
    <a href="logout.php">Logout</a>
<?php else: ?>
    <a href="register.php">Sign up</a>
    <a href="userconnect.php">Connect</a>

【讨论】:

【参考方案2】:

第一件事

替换

if($_POST['password'] == $user['password'] && $_POST['email'] == $user['email']

if($password == $user['password'])

您不需要检查$_POST['email'] == $user['email'],因为您已经在查询中使用WHERE 子句进行了检查,因此您只会得到与您在POST 请求中发送的电子邮件相匹配的结果。因此,一旦查询返回匹配的结果(电子邮件),指定 $_POST['email'] == $user['email'] 就没有用了。

然后,您应该使用$password 而不是$_POST['password'],因为您已将密码字段处理为带有一些散列的$password 变量。

第二件事

不要对用户输入使用htmlspecialcharshtmlentities。仅当您在页面上输出内容以防止诸如XSS 之类的攻击时才重要。

另外,我想知道您的密码在注册过程中是如何处理的。

更新

正如您在评论中提到的,您在注册期间使用password_hash 函数对密码进行哈希处理。

但在问题中,您使用md5(md5($_POST['password'])) 对输入进行哈希处理,并与数据库中的哈希密码进行匹配。这行不通。

相反,您应该使用password_verify,它旨在将输入与password_hash 生成的散列密码相匹配。

这里是你需要如何使用它,

$password = $_POST['password'];

if ($user) 
    if(password_verify($password, $user['password'])) 
        $_SESSION['user'] = [
            'email' => $user['email'],
            'id' => $user['ID'] 
        ];
        $message = "Vous etes connectez!";
    

顺便说一句,你把这个声明,

$message = "Vous etes connectez!";

密码验证条件里面。

就是这样。

希望对你有帮助!

【讨论】:

$password = password_hash($_POST['password'], PASSWORD_BCRYPT); $query = $db -> prepare('INSERT INTO user(firstName, lastName, password, email, address,birthday, city, postalCode, country, phoneNumber) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'); $query -> execute([ $firstName, $lastName, $password, $email, $address, $birthday, $city, $postalCode, $country, $phoneNumber]); 修改了答案。您现在可以查看了。 感谢您的回答。错误还在于未将 UNIQUE 索引分配给数据库中的电子邮件。 哦。是的。如果列不需要重复,则必须为 email 列分配 UNIQUE 索引。

以上是关于steam登录时显示无法连接服务器怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

手机微信连接网络时显示 连接失败 请检查微信链接WIFi参数是怎么回事

XP网络连接拨号时显示错误693

steam无法连接到服务器怎么办?

steam连接服务器失败怎么办?

Scrapy_redis主机连接虚拟机的数据库时显示积极拒绝,无法连接

接口引用即使在初始化后仍为空,使我无法在 Internet 连接更改时显示小吃栏