我无法理解我的代码在黑客攻击中发生了什么)))可能我需要更多经验但是......让我们开始做生意:
我写了一个函数,它为我的系统返回一个带有一些统计数据的数组,我只需要将参数指定为Year,M,D。如果我发送类似getStatData(2016,07,07)
的东西 - 工作正常,但是正如我用八位数发送一些东西 - 它失败了!例如:getStatData(2016,07,08)
当然我有一个fn需要的文件,更多结果如果指定args为字符串(' 2016',' 07',&# 39; 08&#39);但这很酷:D
功能:
function getStatData($y,$m,$d=false){
if(isset($y) && is_numeric($y) && isset($m) && is_numeric($m)){
$m=($m<10)? '0'.$m : $m;
if(isset($d)){
$d=($d<10)? '0'.$d : $d;
$y= 'days/'.$y;
$data = file_get_contents(STATDIR.'/'.$y.'/'.$m.'_'.$d.'.json');
}
else {
$data = file_get_contents(STATDIR.'/'.$y.'_'.$m.'.json');
}
return json_decode($data, true);
}
else return false;
}
呼叫...
print_r(getStatData(2016,07,08)); //call with 08
错误: file_get_contents(core / statistic / days / 2016 / 07_00.json):无法打开流:没有此类文件或目录
答案 0 :(得分:2)
前缀为零的数字为octal literals,而不是零填充的十进制整数。似乎无效的八进制在PHP 5中被默认视为0
。您应该在您提供的示例中传递7
和8
。
在PHP 7中,您将收到一个解析错误。例如。 Parse error: Invalid numeric literal in php shell code on line 1
。
答案 1 :(得分:1)
将参数作为字符串传递给print_r(getStatData('2016','07','08'));
作为旁注,使用str_pad()函数将月份和日期格式化为2位数值。相反,如果isset($ d)使用if($ d)
public class MainActivity extends AppCompatActivity {
private static final String DEBUG_TAG = "HttpExample";
ArrayList<Team> teams = new ArrayList<Team>();
ListView listview;
Button btnDownload;
TeamsAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listview = (ListView) findViewById(R.id.listview);
btnDownload = (Button) findViewById(R.id.btnDownload);
ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
btnDownload.setEnabled(true);
} else {
btnDownload.setEnabled(false);
}
}
public void buttonClickHandler(View view) {
new DownloadWebpageTask(new AsyncResult() {
@Override
public void onResult(JSONObject object) {
processJson(object);
}
}).execute("https://spreadsheets.google.com/tq?key=1424bS7kU8nJbHdu4QdoAFdIdWDSnmEnj2NqfMb6rPTU");
}
private void processJson(final JSONObject object) {
try {
JSONArray rows = object.getJSONArray("rows");
for (int r = 0; r < rows.length(); ++r) {
JSONObject row = rows.getJSONObject(r);
JSONArray columns = row.getJSONArray("c");
int Code = columns.getJSONObject(0).getInt("v");
String Name = columns.getJSONObject(1).getString("v");
String Father = columns.getJSONObject(3).getString("v");
String Sessional = columns.getJSONObject(4).getString("v");
//String Comments = columns.getJSONObject(5).getString("v");
String Comments = "Error";
Team team = new Team(Code, Name, Father, Sessional, Comments);
teams.add(team);
}
adapter = new TeamsAdapter(MainActivity.this, R.layout.team, teams);
listview.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace();
}
}
}