2017-06-26 2 views
2

J'ai essayé le code ci-dessous, mais il a juste écrit '1' dans la base de données au lieu du texte que j'ai écrit. J'ai essayé la même chose avec l'entrée type = "text" et cela a fonctionné. Pourquoi cela ne fonctionne-t-il pas avec textarea? Ofc i ont la fonction if (isset) trop .. PHP:Comment poster du texte de textarea à la base de données mysql

$connectionText = mysql_connect("localhost", "root"); 
if(!$connectionText){ 
die("Noget gik galt?". mysql_connect_error()); 
} 
mysql_select_db("textbox", $connectionText); 

$t = isset($_POST['tekst']); 

$sqlScript = "INSERT INTO forms (tekst) VALUES ('$t')"; 

mysql_query($sqlScript, $connectionText); 
mysql_close($connectionText); 

?> 

HTML:

<form action="post.php" method="POST"> 
<textarea name="tekst" autocapitalize="on" autocomplete="off" 
autocorrect="off" 
class="textBox" maxlength="140"></textarea> 
<input type="submit" value="Offentligør" name="submit"> 
</form> 
+1

'$ t = isset ($ _ POST [ » tekst ']); 'c'est le problème – rtfm

+0

http://php.net/manual/fr/function.isset.php,' Retourne TRUE si var existe et a une valeur autre que NULL. FAUX sinon. » Vous êtes également ouvert aux injections SQL et à l'aide d'un pilote obsolète. Mettez à niveau votre pilote (mysqli ou pdo) et paramétrez. – chris85

+1

Le code que vous écrivez est ouvert à l'attaque la plus répandue sur le Web, l'injection SQL. Lisez ici: https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php – Scopey

Répondre

3

Fucntion isset seulement vérifier si l'entrée donnée est définie ou non. Donc, il renvoie vrai ou faux en sortie et quand vous l'enregistrez dans la base de données, vous verrez seulement 1 (si $ t est vrai) ou 0 (si $ t est faux).

Vous devez modifier cette ligne $t = isset($_POST['tekst']); comme l'un des codes suivants si vous voulez enregistrer la valeur de $_POST['tekst'] dans la base de données:

  • if-else Version:
if(isset($_POST['tekst'])) 
    $t = $_POST['tekst']; 
else 
    $t = ''; 
  • version courte si:
$t = isset($_POST['tekst']) ? $_POST['tekst'] : ''; 
+0

Merci. Le code sans isset() fonctionne comme un charme. Marqué comme juste! –

4
$t = isset($_POST['tekst']) ? $_POST['tekst'] : ''; 

Sinon, $t est un booléen

+1

Expliquer le code s'il vous plaît –

+0

'isset' renvoie un booléen, ne pas assainir l'entrée. – EvgenyKolyakov

+0

? et: sont courts si – EvgenyKolyakov

2

Fonction isset($your_variable) retour true si $your_variable est défini, sinon renvoie false. Donc $t est VRAI, et il est traduit en 1.

TIP: Votre code est vulnérable à l'injection SQL (vous devez échapper $t lorsque vous créez votre instruction SQL) TIP 2: Valider l'entrée utilisateur d'abord, si tout est OK puis se connecter à DB (sauf les ressources)

+0

Merci de m'avoir informé! Je l'apprécie;) –

-2

Vous avez seulement besoin d'ajouter une valeur id au <form>, puis ajoutez la forme attribut à la zone de texte avec l'identifiant de forme

<form id="sample".....> 
    <textarea name="aba" form="sample".....></textarea> 
</form>