首页 > 解决方案 > 警告:非法字符串偏移 'save_username'

问题描述

我们正在将一个 php 应用程序从 5.4 迁移到 7.2,并且我们有一个警告我们想摆脱:

警告:非法字符串偏移 'save_username'

我已经尝试删除引号,添加双引号,将变量设置为字符串(而不是 1 只是“1”),但没有成功。

这是我们正在使用的代码,警告在下面代码的这一行中:if ($vars['save_username'] == 1)

function login_form($vars = "") {
    if ($vars == "") {
        // check if the username is saved via cookie
        if ($_COOKIE["username"] != "") {
            $username = $_COOKIE["username"];
            $save_username = true;
        }
    } else {
       $username = $vars['username'];
    }
    
    if ($vars['save_username'] == 1) {
        $save_username = true;
    }
    ?>

<br><br>
    <form action="login.php?op=login" method="post">
    <table cellspacing="3" cellpadding="3" border="0" align=center>
    <tr>
        <td colspan=2 align=center><font class=title><b>Login</b></font>
        <br><br><br>
        </td>
    </tr>
    <tr>
        <td width=80 nowrap valign=baseline>Email:</td>
        <td width=240><input type="text" name="username" size=30 value="<?php  echo stripslashes($username) ?>" /><br>
            <font class=smallest_font>ie. user@user.com</font>
        </td>
    </tr>
    <tr>
        <td>Password:</td>
        <td><input type="password" name="password" size=30/></td>
    </tr>
    <tr>
        <td></td>
        <td><input type="checkbox" name="save_username" value=1 <?php  if ($save_username) echo "checked" ?>> Remember my login</td>
    </tr>
    <tr>
        <td colspan=2 align=center><br><input type="submit" name="login" value="Login" class="button"/>
           &nbsp;&nbsp;&nbsp;<input type="reset" value="Reset" class="button" /></td>
    </tr>
    <tr>
        <td colspan=2 align=center><br>
        <?php  if(isset($err)) {
            echo "<br />\n<span class=\"dark_red\">$err</span><br />";
        } ?>
        </td>
    </tr>
    </table>
    </form>
    <br />

标签: phpstringwarningsoffset

解决方案


推荐阅读