import React, { useState, useEffect } from 'react';
import RecipeList from './components/RecipeList
function App() {
const url = useState(`https://api.myjson.com/bins/t7szj`)
const [recipes, setRecipes] = useState([])
const fetchRecipe = async () => {
const recipeData = await fetch(url)
const { recipes } = await recipeData.json()
setRecipes(recipes)
}
useEffect(() => {
fetchRecipe()
})
return (
<div className="App">
<RecipeList recipes={recipes}>
</div>
);
}
https://medium.com/better-programming/lets-learn-react-hooks-and-context-api-by-building-a-recipe-search-app-63be9d9e1801
import React, { Component } from 'react'
import RecipeList from './components/RecipeList
export default class test extends Component {
constructor(props) {
super(props)
this.state = {
apiResponse: [],
}
}
componentDidMount() {
fetch(`https://api.myjson.com/bins/t7szj`)
.then(data => data.json)
.then(apiResponse => this.setState({ apiResponse }))
}
render() {
return (
<div>
<RecipeList recipes={this.state.recipes}>
</div>
)
}
}
https://medium.com/better-programming/lets-learn-react-hooks-and-context-api-by-building-a-recipe-search-app-63be9d9e1801
php текстовое поле, поле ввода
<input type="text" name="имя" size="размер" maxlength="длина" value="значение">
--------------------------------------------------------------------------------------------------------
php текстовая область
<textarea name="имя" cols="ширина" rows="высота" wrap="тип">
Это текст, отображаемый по умолчанию.
</textarea>
--------------------------------------------------------------------------------------------------------
php флаг флажок
<input type="checkbox" name="имя" value="значение" checked="checked">
--------------------------------------------------------------------------------------------------------
php переключатель
8.00-12.00<input type="radio" name="time" value="1">
12.00-16.00<input type="radio" name="time" value="2" checked="checked">
16.00-20.00<input type="radio" name="time" value="3">
--------------------------------------------------------------------------------------------------------
php скрытое поле
echo '<input type="hidden" name="submitted" value="yes">'
… и проверка if (isset($_POST['submitted']))
{...
--------------------------------------------------------------------------------------------------------
php выпадающий список drop down
Овощи <select name="veg" size="1">
<option value="Горох">Горох</option>
<option value="Фасоль">Фасоль</option>
<option value="Морковь">Морковь</option>
<option value="Капуста">Капуста</option>
<option value="Брокколи">Брокколи</option>
</select>
--------------------------------------------------------------------------------------------------------
php label выбор элемента формы щелчком на связанном с ним тексте
<label>8.00-12.00<input type="radio" name="time" value="1"></label>
php избежать внедрения sql-кода, безопасность
mysql_real_escape_string
Указатели места заполнения
PREPARE statement FROM "INSERT INTO classics VALUES(?,?,?,?,?)";
SET @author = "Emily Brontл",
@title = "Wuthering Heights",
@category = "Classic Fiction",
@year = "1847",
@isbn = "9780553212587";
EXECUTE statement USING @author,@title,@category,@year,@isbn;
DEALLOCATE PREPARE statement;
--------------------------------------------------------------------------------------------------------
php избежать внедрения html-кода, безопасность
htmlentities
--------------------------------------------------------------------------------------------------------
php обезвреживание безопасность
<?php
function sanitizeString($var)
{
$var = stripslashes($var);
$var = htmlentities($var);
$var = strip_tags($var);
return $var;
}
function sanitizeMySQL($connection, $var)
{ // Использование расширения mysqli
$var = $connection->real_escape_string($var);
$var = sanitizeString($var);
return $var;
}
?>
$var = sanitizeString($_POST['user_input']);
$var = sanitizeMySQL($connection, $_POST['user_input']);